modify XArray and lodepng to compile as cpp

Signed-off-by: Sergey Isakov <isakov-sl@bk.ru>
This commit is contained in:
Sergey Isakov 2020-02-27 12:17:50 +03:00
parent 8dbd938bf3
commit d1043e2673
3 changed files with 38 additions and 13 deletions

View File

@ -52,13 +52,26 @@ class XArray
xsize Length() const { return m_len; } xsize Length() const { return m_len; }
void SetLength(xsize l); void SetLength(xsize l);
//low case functions like in std::vector
xsize size() const { return m_len; }
const TYPE& begin() const { return ElementAt(0); }
TYPE& begin() { return ElementAt(0); }
const TYPE& end() const { return ElementAt(m_len - 1); }
TYPE& end() { return ElementAt(m_len - 1); }
xsize insert(const TYPE newElement, xsize pos, xsize count = 1) { return Insert(newElement, pos, count); }
const bool empty() const;
//--------------------------------------------------
const TYPE& ElementAt(xsize nIndex) const; const TYPE& ElementAt(xsize nIndex) const;
TYPE& ElementAt(xsize nIndex); TYPE& ElementAt(xsize nIndex);
const TYPE& operator[](xsize nIndex) const { return ElementAt(nIndex); } const TYPE& operator[](xsize nIndex) const { return ElementAt(nIndex); }
TYPE& operator[](xsize nIndex) { return ElementAt(nIndex); } TYPE& operator[](xsize nIndex) { return ElementAt(nIndex); }
const TYPE& operator[]( int nIndex) const { return ElementAt(nIndex); } const TYPE& operator[]( int nIndex) const { return ElementAt(nIndex); }
TYPE& operator[]( int nIndex) { return ElementAt(nIndex); } TYPE& operator[]( int nIndex) { return ElementAt(nIndex); }
operator const void *() const { return m_data; }; operator const void *() const { return m_data; };
operator void *() { return m_data; }; operator void *() { return m_data; };
@ -333,4 +346,10 @@ void XArray<TYPE>::Empty()
m_len = 0; m_len = 0;
} }
template<class TYPE>
const bool XArray<TYPE>::empty() const
{
//printf("XArray Empty\n");
return m_len == 0;
}
#endif #endif

View File

@ -260,7 +260,7 @@ void XImage::GetArea(UINTN x, UINTN y, UINTN W, UINTN H)
UINT32 ScreenHeight = 0; UINT32 ScreenHeight = 0;
UINT32 Depth = 0; UINT32 Depth = 0;
UINT32 RefreshRate = 60; UINT32 RefreshRate = 60;
EFI_STATUS Status = UgaDraw->GetMode(UgaDraw, &LineWidth, &ScreenHeight, &Depth, &RefreshRate); Status = UgaDraw->GetMode(UgaDraw, &LineWidth, &ScreenHeight, &Depth, &RefreshRate);
if (EFI_ERROR(Status)) { if (EFI_ERROR(Status)) {
return; // graphics not available return; // graphics not available
} }
@ -277,10 +277,10 @@ void XImage::GetArea(UINTN x, UINTN y, UINTN W, UINTN H)
void XImage::Draw(int x, int y, float scale) void XImage::Draw(int x, int y, float scale)
{ {
//prepare images //prepare images
INTN UGAWidth = 0; INTN ScreenWidth = 0;
INTN UGAHeight = 0; INTN ScreenHeight = 0;
egGetScreenSize(&UGAWidth, &UGAHeight); egGetScreenSize(&ScreenWidth, &ScreenHeight);
XImage Background(UGAWidth, UGAHeight); XImage Background(ScreenWidth, ScreenHeight);
Background.GetArea(x, y, Width, Height); Background.GetArea(x, y, Width, Height);
XImage Top(*this, scale); XImage Top(*this, scale);
Background.Compose(x, y, Top, true); Background.Compose(x, y, Top, true);

View File

@ -6114,7 +6114,8 @@ unsigned decompress(XArray<unsigned char>& out, const unsigned char* in, size_t
unsigned error = zlib_decompress(&buffer, &buffersize, in, insize, &settings); unsigned error = zlib_decompress(&buffer, &buffersize, in, insize, &settings);
if(buffer) if(buffer)
{ {
out.insert(out.end(), &buffer[0], &buffer[buffersize]); // out.insert(out.end(), &buffer[0], &buffer[buffersize]);
out.AddArray(buffer, buffersize);
lodepng_free(buffer); lodepng_free(buffer);
} }
return error; return error;
@ -6136,7 +6137,8 @@ unsigned compress(XArray<unsigned char>& out, const unsigned char* in, size_t in
unsigned error = zlib_compress(&buffer, &buffersize, in, insize, &settings); unsigned error = zlib_compress(&buffer, &buffersize, in, insize, &settings);
if(buffer) if(buffer)
{ {
out.insert(out.end(), &buffer[0], &buffer[buffersize]); // out.insert(out.end(), &buffer[0], &buffer[buffersize]);
out.AddArray(buffer, buffersize);
lodepng_free(buffer); lodepng_free(buffer);
} }
return error; return error;
@ -6188,7 +6190,8 @@ unsigned decode(XArray<unsigned char>& out, unsigned& w, unsigned& h, const unsi
state.info_raw.colortype = colortype; state.info_raw.colortype = colortype;
state.info_raw.bitdepth = bitdepth; state.info_raw.bitdepth = bitdepth;
size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw);
out.insert(out.end(), &buffer[0], &buffer[buffersize]); // out.insert(out.end(), &buffer[0], &buffer[buffersize]);
out.AddArray(buffer, buffersize);
lodepng_free(buffer); lodepng_free(buffer);
} }
return error; return error;
@ -6209,7 +6212,8 @@ unsigned decode(XArray<unsigned char>& out, unsigned& w, unsigned& h,
if(buffer && !error) if(buffer && !error)
{ {
size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw);
out.insert(out.end(), &buffer[0], &buffer[buffersize]); // out.insert(out.end(), &buffer[0], &buffer[buffersize]);
out.AddArray(buffer, buffersize);
} }
lodepng_free(buffer); lodepng_free(buffer);
return error; return error;
@ -6243,7 +6247,8 @@ unsigned encode(XArray<unsigned char>& out, const unsigned char* in, unsigned w,
unsigned error = lodepng_encode_memory(&buffer, &buffersize, in, w, h, colortype, bitdepth); unsigned error = lodepng_encode_memory(&buffer, &buffersize, in, w, h, colortype, bitdepth);
if(buffer) if(buffer)
{ {
out.insert(out.end(), &buffer[0], &buffer[buffersize]); // out.insert(out.end(), &buffer[0], &buffer[buffersize]);
out.AddArray(buffer, buffersize);
lodepng_free(buffer); lodepng_free(buffer);
} }
return error; return error;
@ -6266,7 +6271,8 @@ unsigned encode(XArray<unsigned char>& out,
unsigned error = lodepng_encode(&buffer, &buffersize, in, w, h, &state); unsigned error = lodepng_encode(&buffer, &buffersize, in, w, h, &state);
if(buffer) if(buffer)
{ {
out.insert(out.end(), &buffer[0], &buffer[buffersize]); // out.insert(out.end(), &buffer[0], &buffer[buffersize]);
out.AddArray(buffer, buffersize);
lodepng_free(buffer); lodepng_free(buffer);
} }
return error; return error;