From 772db5d172398a6e6a27ec65c54cfc8d0009da82 Mon Sep 17 00:00:00 2001 From: cxl Date: Wed, 2 Sep 2009 08:58:40 +0000 Subject: [PATCH] Syncing uppdev git-svn-id: svn://ultimatepp.org/upp/trunk@1543 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppdev/SetSurtface1/SetSurtface1.upp | 10 +++++ uppdev/SetSurtface1/init | 5 +++ uppdev/SetSurtface1/main.cpp | 57 ++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 uppdev/SetSurtface1/SetSurtface1.upp create mode 100644 uppdev/SetSurtface1/init create mode 100644 uppdev/SetSurtface1/main.cpp diff --git a/uppdev/SetSurtface1/SetSurtface1.upp b/uppdev/SetSurtface1/SetSurtface1.upp new file mode 100644 index 000000000..c1739d35f --- /dev/null +++ b/uppdev/SetSurtface1/SetSurtface1.upp @@ -0,0 +1,10 @@ +uses + CtrlLib, + Painter; + +file + main.cpp; + +mainconfig + "" = "GUI"; + diff --git a/uppdev/SetSurtface1/init b/uppdev/SetSurtface1/init new file mode 100644 index 000000000..2dda26fa8 --- /dev/null +++ b/uppdev/SetSurtface1/init @@ -0,0 +1,5 @@ +#ifndef _SetSurtface1_icpp_init_stub +#define _SetSurtface1_icpp_init_stub +#include "CtrlLib/init" +#include "Painter/init" +#endif diff --git a/uppdev/SetSurtface1/main.cpp b/uppdev/SetSurtface1/main.cpp new file mode 100644 index 000000000..d303e8e8c --- /dev/null +++ b/uppdev/SetSurtface1/main.cpp @@ -0,0 +1,57 @@ +#include +#include + +using namespace Upp; + +class PainterCtrl : public Ctrl { + ImageBuffer ib; + +public: + virtual void Paint(Painter &pntr,Size &sz)=0; + + virtual void Layout(){ + Size sz=GetSize(); + ib.Clear(); + ib.Create(sz); + BufferPainter pntr(ib); + Paint(pntr,sz); + } + + virtual void Paint(Draw &draw) { + Rect paintrect=draw.GetPaintRect(); + + Point p = paintrect.TopLeft(); + if(p.x < ib.GetSize().cx && p.y < ib.GetSize().cy) + SetSurface(draw, paintrect, ib, ib.GetSize(), p); + } + +}; + +struct ExampleCtrl : PainterCtrl { + + virtual void Paint(Painter &pntr,Size &sz){ + pntr.Move(0,0).Line(sz.cx,0).Line(sz.cx,sz.cy).Line(0,sz.cy).Close().Fill(White()).Stroke(5,Black()); + pntr.Move(0,0).Line(sz.cx,sz.cy).Stroke(5,Black()); + } +}; + +class ExampleTopWindow: public TopWindow{ +public: + ExampleCtrl ec; + + virtual void Layout(){ + ec.SetRect(20,0,GetSize().cx-20,GetSize().cy); + } + + ExampleTopWindow(){ + Add(ec); + } +}; + +GUI_APP_MAIN +{ + ExampleTopWindow win; + win.Sizeable(); + win.Open(); + win.Run(); +}