virtual void Paint(Draw& w, const Rect& r, const Value& q, Color ink, Color paper, dword style) const { w.DrawRect(r, paper); Image m = q; if(!IsNull(m)) { Size sz = GetFitSize(m.GetSize(), r.Size()); Point p = r.CenterPos(sz); w.DrawImage(p.x, p.y, CachedRescale(m, sz)); } }
virtual IdeDesigner *CreateDesigner(const char *path, byte) { if(IsImgFile(path)) { FileIn in(path); One<StreamRaster> o = StreamRaster::OpenAny(in); if(o) { Size sz = o->GetSize(); if(ToLower(GetFileExt(path)) == ".png" && sz.cx <= 768 && sz.cy <= 512) { IdePngDes *d = new IdePngDes; d->Load(path); d->RestoreEditPos(); return d; } else { IdeImgView *d = new IdeImgView; d->img_sz = sz; d->filename = path; if(sz.cx <= 1024 && sz.cy <= 768) d->img = o->GetImage(); else { ImageEncoder m; Rescale(m, GetFitSize(sz, Size(1024, 768)), *o, sz); d->img = m; } return d; } } else if(ToLower(GetFileExt(path)) == ".png" && GetFileLength(path) <= 0) { IdePngDes *d = new IdePngDes; d->Create(path); d->RestoreEditPos(); return d; } } return NULL; }