| 148 | grSurface::~grSurface() { grSurface::free(); } |
| 149 | |
| 150 | void grSurface::create(int w, int h, int bpp, unsigned type, unsigned flags, const char *name) { |
| 151 | bool grerr; |
| 152 | |
| 153 | if (m_SurfInit) |
| 154 | grSurface::free(); |
| 155 | |
| 156 | // create new surface: set up surface structure |
| 157 | memset(&ddsfObj, 0, sizeof(ddgr_surface)); |
| 158 | ddsfObj.w = w; |
| 159 | ddsfObj.h = h; |
| 160 | ddsfObj.bpp = bpp; |
| 161 | ddsfObj.type = (uint16_t)type; |
| 162 | ddsfObj.flags = (uint16_t)flags; |
| 163 | |
| 164 | if (name) |
| 165 | strncpy(ddsfObj.name, name, 15); |
| 166 | |
| 167 | switch (type) { |
| 168 | case SURFTYPE_VIDEOSCREEN: |
| 169 | grerr = ddgr_surf_InitVideo(&ddsfObj); |
| 170 | break; |
| 171 | case SURFTYPE_GENERIC: |
| 172 | grerr = ddgr_surf_Create(&ddsfObj); |
| 173 | break; |
| 174 | case SURFTYPE_MEMORY: |
| 175 | grerr = (bool)gr_mem_surf_Create(&ddsfObj); |
| 176 | break; |
| 177 | default: |
| 178 | Int3(); // Invalid!! |
| 179 | } |
| 180 | if (!grerr) |
| 181 | Int3(); |
| 182 | |
| 183 | add_to_list(&ddsfObj); |
| 184 | |
| 185 | m_SurfInit = 1; |
| 186 | } |
| 187 | |
| 188 | void grSurface::free() { |
| 189 | /* Freeing surface is same regardless of whether it was loaded from a bitmap handle or |
no test coverage detected