MCPcopy Create free account
hub / github.com/BohemiaInteractive/CWR / LoadPaa

Method LoadPaa

engine/Poseidon/Graphics/Rendering/Font/Pactext.cpp:1190–1247  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1188 return ret;
1189}
1190int PacLevelMem::LoadPaa(QIStream& in, void* mem, const PacPalette* pal) const
1191{
1192 int ret = -1;
1193 switch (ENUM_CAST(PacFormat, _sFormat))
1194 {
1195 case PacARGB1555:
1196 case PacARGB4444:
1197 case PacAI88:
1198 ret = LoadPaaBin16(in, mem, pal);
1199 break;
1200 case PacARGB8888:
1201 {
1202 long w = fgetiw(in);
1203 long h = fgetiw(in);
1204 if (w == 0 && h == 0)
1205 {
1206 ret = 1; // mipmap terminator
1207 break;
1208 }
1209 long dSize = fgeti24(in);
1210 PoseidonAssert(_w == w);
1211 PoseidonAssert(_h == h);
1212 if (_dFormat == PacARGB8888)
1213 {
1214 in.read(static_cast<char*>(mem), dSize);
1215 ret = in.fail() ? -1 : 0;
1216 }
1217 else
1218 {
1219 std::vector<char> tmp(dSize);
1220 in.read(tmp.data(), dSize);
1221 if (in.fail())
1222 {
1223 ret = -1;
1224 break;
1225 }
1226 int srcPitch = _w * 4;
1227 char* dst = static_cast<char*>(mem);
1228 for (int y = 0; y < _h; y++)
1229 memcpy(dst + y * _pitch, tmp.data() + y * srcPitch, srcPitch);
1230 ret = 0;
1231 }
1232 break;
1233 }
1234 case PacDXT1:
1235 case PacDXT2:
1236 case PacDXT3:
1237 case PacDXT4:
1238 case PacDXT5:
1239 ret = LoadPaaDXT(in, mem, pal);
1240 break;
1241 default:
1242 Fail("Bad texture format.");
1243 ret = -1;
1244 break;
1245 }
1246 return ret;
1247}

Callers 3

DecodePAABufferFunction · 0.80
DecodePAAFileMipFunction · 0.80
GetMipmapDataMethod · 0.80

Calls 4

fgetiwFunction · 0.85
fgeti24Function · 0.85
readMethod · 0.45
failMethod · 0.45

Tested by

no test coverage detected