void MyApp::Paint(Draw& w) { w.DrawRect(GetSize(), SColorPaper()); for(int i = 0; i < MyImages::GetCount(); i++) { w.DrawImage(50, 80 + 20 * i, MyImages::Get(i)); w.DrawText(80, 80 + 20 * i, MyImages::GetId(i)); } w.DrawImage(20, 0, 50, 50, MyImages::Get(MyImages::I_Circle)); w.DrawText(80, 0, AsString(MyImages::Find("Circle"))); }
void DrawFocus(Draw& w, int x, int y, int cx, int cy, Color c) { w.Clipoff(x, y, cx, cy); for(int a = 0; a < cx; a += CtrlImg::focus_h().GetWidth()) { w.DrawImage(a, 0, CtrlImg::focus_h(), c); w.DrawImage(a, cy - 1, CtrlImg::focus_h(), c); } for(int a = 0; a < cy; a += CtrlImg::focus_v().GetHeight()) { w.DrawImage(0, a, CtrlImg::focus_v(), c); w.DrawImage(cx - 1, a, CtrlImg::focus_v(), c); } w.End(); }
void StdDisplayClass::Paint0(Draw& w, const Rect& r, const Value& q, Color ink, Color paper, dword s) const { LLOG("StdDisplay::Paint0: " << q << " ink:" << ink << " paper:" << paper); WString txt; Font font = StdFont(); int a = align; int x = r.left; int width = r.GetWidth(); if(IsType<AttrText>(q)) { const AttrText& t = ValueTo<AttrText>(q); txt = t.text; font = t.font; if(!IsNull(t.paper)) paper = t.paper; if(!IsNull(t.ink)) ink = t.ink; if(!IsNull(t.normalink) && !(s & (CURSOR|SELECT|READONLY))) ink = t.normalink; if(!IsNull(t.normalpaper) && !(s & (CURSOR|SELECT|READONLY))) paper = t.normalpaper; if(!IsNull(t.align)) a = t.align; if(!IsNull(t.img)) { Size isz = t.img.GetSize(); w.DrawImage(x, r.top + max((r.Height() - isz.cy) / 2, 0), t.img); x += isz.cx + t.imgspc; } } else txt = IsString(q) ? q : StdConvert().Format(q); Size tsz = GetTLTextSize(txt, font); if(a == ALIGN_RIGHT) x = r.right - tsz.cx; if(a == ALIGN_CENTER) x += (width - tsz.cx) / 2; int tcy = GetTLTextHeight(txt, font); int tt = r.top + max((r.Height() - tcy) / 2, 0); if(tsz.cx > width) { Size isz = DrawImg::threedots().GetSize(); int wd = width - isz.cx; w.Clip(r.left, r.top, wd, r.GetHeight()); DrawTLText(w, x, tt, width, txt, font, ink); w.End(); w.DrawImage(r.left + wd, tt + font.Info().GetAscent() - isz.cy, DrawImg::threedots(), ink); } else DrawTLText(w, x, tt, width, txt, font, ink); }
void RichRawImage::Paint(const Value& data, Draw& w, Size sz, void *) const { String s = data; StringStream ss(s); One<StreamRaster> r = StreamRaster::OpenAny(ss); if(r) { Size isz = r->GetSize(); if(isz.cx * isz.cy > sz.cx * sz.cy) { // conserve memory by scaling down from source ImageEncoder m; Rescale(m, sz, *r, r->GetSize()); w.DrawImage(0, 0, sz.cx, sz.cy, m); } else w.DrawImage(0, 0, sz.cx, sz.cy, r->GetImage()); // scale up by Draw to give e.g. PDF chance to store unscaled } }
void DrawImageBandRLE(Draw& w, int x, int y, const Image& m, int minp) { int xi = 0; int cx = m.GetWidth(); int ccy = m.GetHeight(); Buffer<bool> todo(cx, true); #ifdef BENCHMARK_RLE sTotal += cx; #endif while(xi < cx) { int xi0 = xi; while(w.Dots() && IsWhiteColumn(m, xi) && xi < cx) xi++; if(xi - xi0 >= 16) { #ifdef BENCHMARK_RLE sRle += xi - xi0; #endif w.DrawRect(x + xi0, y, xi - xi0, ccy, White); Fill(~todo + xi0, ~todo + xi, false); } xi++; } xi = 0; while(xi < cx) if(todo[xi]) { int xi0 = xi; while(xi < cx && todo[xi] && xi - xi0 < 2000) xi++; w.DrawImage(x + xi0, y, m, RectC(xi0, 0, xi - xi0, ccy)); } else xi++; }
void RGBACtrl::Paint(Draw& w) { w.DrawRect(GetSize(), SColorFace); if(alpha.IsMask()) return; for(int x = 0; x <= 18; x++) w.DrawRect(x * cbox.cx + cs.x, cs.y, 1, cbox.cy * 14, SColorText()); int i = 0; int my = cs.y + 1; w.DrawRect(cs.x, cs.y + 14 * cbox.cy, cbox.cx * 18 + 1, 1, SColorText()); Point pp = Null; for(int y = 0; y < 14; y++) { w.DrawRect(cs.x, my - 1, cbox.cx * 18 + 1, 1, SColorText()); int mx = cs.x + 1; for(int x = 0; x < 18; x++) { Color c = GetColor(i++); w.DrawRect(mx, my, cbox.cx - 1, cbox.cy - 1, c); if(c == color) pp = Point(mx, my); mx += cbox.cx; } my += cbox.cy; } if(!IsNull(pp)) { Size isz = CtrlImg::wheel_cursor().GetSize(); pp = pp + (cbox - isz) / 2; w.DrawImage(pp.x, pp.y, CtrlImg::wheel_cursor(), Grayscale(color) < 120 ? White() : Black()); } }
void ImageCtrl::Paint(Draw& w) { if(!img) return; Size sz = GetSize(); Size bsz = GetStdSize(); w.DrawImage((sz.cx - bsz.cx) / 2, (sz.cy - bsz.cy) / 2, img); }
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)) w.DrawImage(r.left, r.top, Rescale(m, r.GetSize())); }
virtual void Paint(Draw& w, const Rect& r, const Value& q, Color ink, Color paper, dword style) const { ValueArray va = q; String txt = va[0]; Image icon = va[1]; w.DrawRect(r, paper); w.DrawImage(r.left, r.top + (r.Height() - 16) / 2, IsNull(icon) ? IdeImg::Package() : icon); w.DrawText(r.left + 20, r.top + (r.Height() - Draw::GetStdFontCy()) / 2, txt, fnt, ink); }
void HelloWorld::Paint(Draw& w) { ImagePainter iw(50, 50); // iw.Clear(RGBAZero()); iw.DrawImage(0, 0, CtrlImg::exclamation()); Image m = iw; w.DrawRect(GetSize(), Gray); w.DrawImage(100, 100, m); }
void RightTabs::PaintTab(Draw& w, int x, int y, int cx, int cy, Color paper, const Image& img, Color hl) { Color fc = FieldFrameColor(); w.DrawRect(x, y + 1, cx - 1, cy - 2, paper); w.DrawRect(x, y, cx - 1, 1, fc); w.DrawRect(x + cx - 1, y + 1, 1, cy - 2, fc); w.DrawRect(x, y + cy - 1, cx - 1, 1, fc); Size isz = img.GetSize(); int ix = (cx - isz.cx) / 2 + x; int iy = (cy - isz.cx) / 2 + y; if(!IsNull(hl)) { w.DrawImage(ix - 1, iy - 1, img, hl); w.DrawImage(ix - 1, iy + 1, img, hl); w.DrawImage(ix + 1, iy - 1, img, hl); w.DrawImage(ix + 1, iy + 1, img, hl); } w.DrawImage(ix, iy, img); }
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; Size sz = m.GetSize(); if(!IsNull(m)) w.DrawImage(r.left + (r.Width() - sz.cx) / 2, r.top + (r.Height() - sz.cy) / 2, m); }
virtual void Paint(Draw& w) { w.DrawRect(GetSize(), White()); w.DrawRect(10, 10, 60, 80, Green()); w.DrawLine(100, 10, 160, 80, 0, Black()); w.DrawLine(160, 10, 100, 80, 4, Red()); w.DrawLine(160, 40, 100, 50, PEN_DOT, Red()); w.DrawEllipse(210, 20, 80, 60, Blue()); w.DrawEllipse(310, 20, 80, 60, LtBlue(), 5, Red()); w.DrawArc(RectC(410, 20, 80, 60), Point(10, 10), Point(450, 80), 3, Cyan); Vector<Point> p; p << Point(30, 110) << Point(60, 180) << Point(10, 150) << Point(70, 150); w.DrawPolyline(p, 4, Black); p.Clear(); p << Point(130, 110) << Point(160, 180) << Point(110, 150) << Point(170, 120) << Point(130, 110); w.DrawPolygon(p, Blue); p.Clear(); p << Point(230, 110) << Point(260, 180) << Point(210, 150) << Point(270, 120) << Point(230, 110); w.DrawPolygon(p, Cyan, 5, Magenta); p.Clear(); p << Point(330, 110) << Point(360, 180) << Point(310, 150) << Point(370, 120) << Point(330, 110); w.DrawPolygon(p, Cyan, 5, Magenta, I64(0xaa55aa55aa55aa55)); w.DrawImage(40, 240, CtrlImg::save()); w.DrawImage(110, 210, 80, 80, CtrlImg::save()); w.DrawImage(240, 240, CtrlImg::save(), Blue); w.DrawImage(310, 210, 80, 80, CtrlImg::save(), Blue); w.DrawText(20, 330, "Hello world!"); w.DrawText(120, 330, "Hello world!", Arial(15).Bold()); w.DrawText(220, 330, "Hello world!", Roman(15).Italic(), Red); w.DrawText(320, 380, 400, "Hello world!", Courier(15).Underline()); }
void RasterPlayer::Paint(Draw& w) { Size sz = GetSize(); if (!IsNull(background)) w.DrawRect(sz, background); if (images.IsEmpty()) return; if (!images[ind]) return; w.DrawImage(Fit(sz, images[ind].GetSize()), images[ind]); }
void DisplayWithIcon::Paint(Draw& w, const Rect& r0, const Value& q, Color ink, Color paper, dword style) const { Rect r = r0; if(!IsNull(icon)) { Size isz = icon.GetSize(); w.DrawImage(r.left, r.top + max((r.Height() - isz.cy) / 2, 0), icon); r.left += isz.cx + lspc; } display->Paint(w, r, q, ink, paper, style); }
NAMESPACE_UPP #define IMAGECLASS RichEditImg #define IMAGEFILE <RichEdit/RichEdit.iml> #include <Draw/iml_source.h> void HotPaint(Draw& w, int x, int y, const Image& img) { Point p = img.GetHotSpot(); w.DrawImage(x - p.x, y - p.y, img); }
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 void Paint(Draw& w, const Rect& r, const Value& q, Color ink, Color paper, dword style) const { ValueArray va = q; String txt = va[0]; Image icon = va[1]; if(IsNull(icon)) icon = IdeImg::Package(); else icon = DPI(icon, 16); w.DrawRect(r, paper); w.DrawImage(r.left, r.top + (r.Height() - icon.GetHeight()) / 2, icon); w.DrawText(r.left + Zx(20), r.top + (r.Height() - Draw::GetStdFontCy()) / 2, txt, fnt, ink); }
void RichPNG::Paint(const Value& data, Draw& w, Size sz) const { if(IsString(data)) { w.DrawRect(sz, SColorFace()); DrawFrame(w, sz, SColorText()); w.DrawText(2, 2, "plugin/png missing!"); return; } Image x = Image(data); Size outsz(min(sz.cx, 4 * x.GetWidth()), min(sz.cy, 4 * x.GetHeight())); w.DrawImage(0, 0, outsz.cx, outsz.cy, x); }
// ImgButton void ImgButton::Paint(Draw &w) { Size sz = GetSize(); if (look) ChPaint(w, sz, look[Pusher::GetVisualState()]); int dx = IsPush() * -1; int dy = IsPush(); if (!img.IsEmpty()) { Size isz = img.GetSize(); w.DrawImage((sz.cx - isz.cx) / 2 + dx, (sz.cy - isz.cy) / 2 + dy, img); } }
void ColorButton::Paint(Draw& w) { Size sz = GetSize(); Size isz = image.GetSize(); Point center = (sz - isz) / 2; if(GUI_GlobalStyle() >= GUISTYLE_XP) ChPaint(w, sz, style->look[!IsEnabled() ? CTRL_DISABLED : push ? CTRL_PRESSED : HasMouse() ? CTRL_HOT : CTRL_NORMAL]); else { w.DrawRect(sz, SColorFace); if(push) DrawFrame(w, sz, SColorShadow, SColorLight); else if(HasMouse()) DrawFrame(w, sz, SColorLight, SColorShadow); } if(IsNull(color)) w.DrawImage(center.x + push, center.y + push, nullimage); else w.DrawImage(center.x + push, center.y + push, image, color); w.DrawImage(center.x + push, center.y + push, staticimage); }
void SizeGrip::Paint(Draw& w) { Size sz = GetSize(); if(!IsTransparent()) w.DrawRect(sz, SColorFace); if(GuiPlatformHasSizeGrip()) { TopWindow *q = dynamic_cast<TopWindow *>(GetTopCtrl()); if(q && !q->IsMaximized() && q->IsSizeable()) { Size isz = CtrlsImg::SizeGrip().GetSize(); w.DrawImage(sz.cx - isz.cx, sz.cy - isz.cy, CtrlsImg::SizeGrip()); } } }
void Puzzle::Paint(Draw& w) { w.DrawRect(GetSize(), WhiteGray); for(int y = 0; y < size.cy; y++) for(int x = 0; x < size.cx; x++) { int b = Get(x, y); Point p(x * 32, y * 32); if(b) { w.DrawImage(p.x, p.y, BoxImg()); String txt = AsString(b); Size sz = w.GetTextSize(txt, Arial(20).Bold()); w.DrawText(p.x + (32 - sz.cx) / 2, p.y + (32 - sz.cy) / 2, txt, Arial(20).Bold(), LtBlue); } } }
void RichRuler::Paint(Draw& w) { Size sz = GetSize(); w.DrawRect(sz, SColorFace); w.DrawRect(0, sz.cy - 1, sz.cx, 1, SColorShadow); int cx = zoom * pgcx; w.DrawRect(x0 - 1, 3, cx + 3, sz.cy - 6, SColorPaper); int i = 0; for(;;) { int x = fround(++i * grid) * zoom; if(x >= cx) break; if(i % marks == 0) w.DrawRect(x0 + x, 8, 1, 5, SColorHighlight); else w.DrawRect(x0 + x, 9, 1, 3, SColorHighlight); } i = 0; for(;;) if(++i % numbers == 0) { int x = fround(i * grid) * zoom; if(x >= cx) break; String n = Format("%d", (int)(i * numbermul + 0.5)); Size tsz = GetTextSize(n, Arial(10)); if(x + tsz.cx - tsz.cx / 2 < cx) { int px = x0 + x - tsz.cx / 2; w.DrawRect(px, 4, tsz.cx, sz.cy - 8, SColorPaper); w.DrawText(x0 + x - tsz.cx / 2, 4, n, Arial(10), SColorText); } } FieldFrame().FramePaint(w, RectC(x0 - 1, 3, cx + 3, sz.cy - 6)); for(i = marker.GetCount() - 1; i >= 0; --i) { const Marker& m = marker[i]; if(!IsNull(m.pos)) HotPaint(w, x0 + m.pos * zoom, m.top ? 1 : sz.cy - 4, m.image); } i = 0; if(tabsize) for(;;) { int xp = ++i * tabsize; int x = xp * zoom; if(x >= cx) break; if(xp > tabpos) w.DrawRect(x0 + x, sz.cy - 4, 1, 3, SColorShadow); } w.DrawImage(4, 6, newtabalign == ALIGN_RIGHT ? RichEditImg::RightTab() : newtabalign == ALIGN_CENTER ? RichEditImg::CenterTab() : RichEditImg::LeftTab()); }
void App::Paint(Draw& w) { Size sz = GetSize(); ImageBuffer ib(sz); if(cowork) { CoWork co; for(int y = 0; y < sz.cy; y++) co & [=, &ib] { DoLine(ib[y], phase, y, sz); }; } else for(int y = 0; y < sz.cy; y++) DoLine(ib[y], phase, y, sz); w.DrawImage(0, 0, ib); Refresh(); phase++; }
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)) return; Size isz = m.GetSize(); if(isz.cx > 200 || isz.cy > 200) m = IconDesImg::LargeImage(); else if(isz.cx > r.GetWidth() || isz.cy > r.GetHeight()) m = CachedRescale(m, GetFitSize(m.GetSize(), r.GetSize())); Point p = r.CenterPos(m.GetSize()); w.DrawImage(p.x, p.y, m); }
void TreeTest::DrawView(Draw& w) { // square the bounds of the window with the bounds of the data /* if(IsMapTall()) { m_rcBnds.right = m_rcBnds.left + m_rcClient.Width()*((double)(m_rcBnds.top-m_rcBnds.bottom) /((double)m_rcClient.Height())); } else { m_rcBnds.bottom = m_rcBnds.top - m_rcClient.Height()*((double)(m_rcBnds.Width()) /((double)m_rcClient.Width())); } */ m_Scale = GetMapScale(); ImageBuffer ibBk(m_rcClient.Size()); // background drawing buffer memset(~ibBk, 255, 4 * ibBk.GetLength()); // clear background // GraphNix::SetColor(ibBk,SWhite); // draw layers - most of the data in the app // int i,n = m_pLayers.GetCount(); // for(i=n-1;i>=0;i--) // { // if(m_pLayers[i]->m_option) // if it is selected as visible in the tree view // { // m_pLayers[i]->DrawLayer(w, ibBk,(void*)this); // } // } /* for() { } */ m_view = Image(ibBk); w.DrawImage(m_rcClient,m_view); }
void IdeImgView::Paint(Draw& w) { Size sz = GetSize(); String t = (img_sz != img.GetSize() ? "Resized from: " : "Image size: "); t << Format("%d x %d", img_sz.cx, img_sz.cy); int tcy = Draw::GetStdFontCy(); w.DrawRect(0, 0, sz.cx, tcy, SColorFace()); w.DrawText(5, 0, t, StdFont(), SColorText()); int ii = 0; for(int x = 0; x < sz.cx; x += 16) { int jj = ii; for(int y = tcy; y < sz.cy; y += 16) w.DrawRect(x, y, 16, 16, jj++ & 1 ? LtGray() : WhiteGray()); ii++; } w.DrawImage(5, 5 + tcy, img); }
void ImageMT::Paint(Draw& w) { Size sz = GetSize(); if(m_pLayers.GetCount()<=0) w.DrawRect(sz,SWhite); for(int i=0;i<m_pLayers.GetCount();i++) { Rect rc; rc.left = m_pLayers[i]->m_rc.left * sz.cx; rc.right = m_pLayers[i]->m_rc.right * sz.cx; rc.top = m_pLayers[i]->m_rc.top * sz.cy; rc.bottom = m_pLayers[i]->m_rc.bottom * sz.cy; w.DrawImage(rc,m_pLayers[i]->m_img); } }
void FileList::Paint(Draw& w, const Rect& r, const Value& q, Color ink, Color paper, dword style) const { const File& m = ValueTo<File>(q); bool dark = Grayscale(paper) < 150; w.DrawRect(r, paper); int x = r.left + 2; w.DrawImage(x, r.top + (r.Height() - m.icon.GetSize().cy) / 2, m.icon); x += iconwidth; x += 2; FontInfo fi = m.font.Info(); DrawFileName(w, x, r.top + (r.Height() - fi.GetHeight()) / 2, r.right - x - 2, r.Height(), WString(m.name), m.isdir, m.font, dark ? SColorHighlightText : m.ink, dark ? SColorHighlightText : m.extink, WString(m.desc), m.descfont, justname, m.underline); }