ultimatepp/uppsrc/Draw/DrawRasterData.cpp
cxl 597466fea8 uppsrc: NAMESPACE_UPP / END_UPP_NAMESPACE removed
git-svn-id: svn://ultimatepp.org/upp/trunk@10186 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2016-08-26 17:15:30 +00:00

40 lines
826 B
C++

#include "Draw.h"
namespace Upp {
struct cDrawRasterData : DataDrawer {
int cx;
StringStream ss;
One<StreamRaster> raster;
RescaleImage si;
virtual void Open(const String& data, int cx, int cy);
virtual void Render(ImageBuffer& ib);
};
void cDrawRasterData::Open(const String& data, int _cx, int cy)
{
cx = _cx;
ss.Open(data);
raster = StreamRaster::OpenAny(ss);
if(raster)
si.Create(Size(cx, cy), *raster, raster->GetSize());
}
void cDrawRasterData::Render(ImageBuffer& ib)
{
for(int y = 0; y < ib.GetHeight(); y++)
si.Get(ib[y]);
}
INITBLOCK
{
DataDrawer::Register<cDrawRasterData>("image_data");
};
void DrawRasterData(Draw& w, int x, int y, int cx, int cy, const String& data)
{
w.DrawData(x, y, cx, cy, data, "image_data");
}
}