PainterExmples improvements

git-svn-id: svn://ultimatepp.org/upp/trunk@795 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2009-01-22 19:40:55 +00:00
parent 9e1d534e39
commit e6891c7954
2 changed files with 46 additions and 39 deletions

View file

@ -1,19 +1,24 @@
LAYOUT(CtrlLayout, 192, 260)
ITEM(Label, dv___0, SetLabel(t_("Scale")).LeftPosZ(4, 52).TopPosZ(92, 19))
ITEM(EditDoubleSpin, scale, Min(0).Max(10).LeftPosZ(4, 64).TopPosZ(112, 19))
ITEM(SliderCtrl, scale_slider, HSizePosZ(72, 4).TopPosZ(110, 24))
ITEM(Label, dv___3, SetLabel(t_("Rotate")).LeftPosZ(4, 52).TopPosZ(136, 19))
ITEM(EditDoubleSpin, rotate, Min(0).Max(6.29).LeftPosZ(4, 64).TopPosZ(156, 19))
ITEM(SliderCtrl, rotate_slider, HSizePosZ(72, 4).TopPosZ(154, 24))
ITEM(Label, dv___6, SetLabel(t_("Translate X")).LeftPosZ(4, 72).TopPosZ(4, 19))
LAYOUT(CtrlLayout, 196, 304)
ITEM(Label, dv___0, SetLabel(t_("Translate X")).LeftPosZ(4, 72).TopPosZ(4, 19))
ITEM(EditDoubleSpin, translate_x, SetInc(1).Min(0).Max(2000).LeftPosZ(4, 64).TopPosZ(24, 19))
ITEM(SliderCtrl, translate_x_slider, HSizePosZ(72, 4).TopPosZ(22, 24))
ITEM(Label, dv___9, SetLabel(t_("Translate Y")).LeftPosZ(4, 72).TopPosZ(48, 19))
ITEM(Label, dv___3, SetLabel(t_("Translate Y")).LeftPosZ(4, 72).TopPosZ(48, 19))
ITEM(EditDoubleSpin, translate_y, SetInc(1).Min(0).Max(2000).LeftPosZ(4, 64).TopPosZ(68, 19))
ITEM(SliderCtrl, translate_y_slider, HSizePosZ(72, 4).TopPosZ(66, 24))
ITEM(Label, dv___12, SetLabel(t_("Opacity")).LeftPosZ(4, 52).TopPosZ(180, 19))
ITEM(EditDoubleSpin, opacity, SetInc(0.05).Min(0).Max(1).LeftPosZ(4, 64).TopPosZ(200, 19))
ITEM(SliderCtrl, opacity_slider, HSizePosZ(72, 4).TopPosZ(198, 24))
ITEM(Button, rest, SetLabel(t_("Reset")).LeftPosZ(4, 60).TopPosZ(232, 24))
ITEM(Label, dv___6, SetLabel(t_("Rotate")).LeftPosZ(4, 52).TopPosZ(92, 19))
ITEM(EditDoubleSpin, rotate, Min(0).Max(6.29).LeftPosZ(4, 64).TopPosZ(112, 19))
ITEM(SliderCtrl, rotate_slider, HSizePosZ(72, 4).TopPosZ(110, 24))
ITEM(Label, dv___9, SetLabel(t_("Scale")).LeftPosZ(4, 52).TopPosZ(136, 19))
ITEM(EditDoubleSpin, scale, Min(0).Max(10).LeftPosZ(4, 64).TopPosZ(156, 19))
ITEM(SliderCtrl, scale_slider, HSizePosZ(72, 4).TopPosZ(154, 24))
ITEM(Label, dv___12, SetLabel(t_("Scale X")).LeftPosZ(4, 52).TopPosZ(180, 19))
ITEM(EditDoubleSpin, scale_x, Min(0).Max(2).LeftPosZ(4, 64).TopPosZ(200, 19))
ITEM(SliderCtrl, scale_x_slider, HSizePosZ(72, 4).TopPosZ(198, 24))
ITEM(Label, dv___15, SetLabel(t_("Opacity")).LeftPosZ(4, 52).TopPosZ(224, 19))
ITEM(EditDoubleSpin, opacity, SetInc(0.05).Min(0).Max(1).HSizePosZ(4, 128).TopPosZ(244, 19))
ITEM(SliderCtrl, opacity_slider, HSizePosZ(72, 4).TopPosZ(242, 24))
ITEM(Button, reset, SetLabel(t_("Reset")).HSizePosZ(4, 132).TopPosZ(272, 24))
ITEM(Button, print, SetLabel(t_("Print")).HSizePosZ(68, 68).TopPosZ(272, 24))
ITEM(Button, benchmark, SetLabel(t_("Benchmark")).HSizePosZ(132, 4).TopPosZ(272, 24))
END_LAYOUT

View file

@ -30,40 +30,37 @@ struct App : TopWindow {
void DoPaint(Painter& sw)
{
sw.Translate(~ctrl.translate_x, ~ctrl.translate_y);
sw.Scale(~ctrl.scale);
sw.Rotate(~ctrl.rotate);
sw.Scale(~ctrl.scale, (double)~ctrl.scale * (double)~ctrl.scale_x);
sw.Opacity(~ctrl.opacity);
sw.Clear(White());
if(list.IsCursor())
Examples()[list.GetCursor()].example(sw);
}
virtual bool Key(dword key, int count)
void Print()
{
if(key == K_CTRL_P) {
PaintingPainter sw(1000, 1000);
PaintingPainter sw(1000, 1000);
DoPaint(sw);
PrinterJob pb;
if(pb.Execute())
pb.GetDraw().DrawPainting(0, 0, 4000, 4000, sw);
}
void Benchmark()
{
int time;
int time0 = GetTickCount();
int n = 0;
for(;;) {
time = GetTickCount();
if(time - time0 > 1000) break;
ImageBuffer ib(GetSize());
BufferPainter sw(ib);
DoPaint(sw);
PrinterJob pb;
if(pb.Execute())
pb.GetDraw().DrawPainting(0, 0, 4000, 4000, sw);
return true;
n++;
}
if(key == K_CTRL_B) {
int time;
int time0 = GetTickCount();
int n = 0;
for(;;) {
time = GetTickCount();
if(time - time0 > 1000) break;
ImageBuffer ib(GetSize());
BufferPainter sw(ib);
DoPaint(sw);
n++;
}
PromptOK("Benchmark: " + AsString(double(time - time0) / n) + " ms");
return true;
}
return TopWindow::Key(key, count);
PromptOK("Benchmark: " + AsString(double(time - time0) / n) + " ms");
}
virtual void Paint(Draw& w)
@ -104,6 +101,7 @@ struct App : TopWindow {
{
ToSlider(&ctrl.rotate, &ctrl.rotate_slider);
ToSlider(&ctrl.scale, &ctrl.scale_slider);
ToSlider(&ctrl.scale_x, &ctrl.scale_x_slider);
ToSlider(&ctrl.translate_x, &ctrl.translate_x_slider);
ToSlider(&ctrl.translate_y, &ctrl.translate_y_slider);
ToSlider(&ctrl.opacity, &ctrl.opacity_slider);
@ -112,7 +110,7 @@ struct App : TopWindow {
void Reset()
{
ctrl.rotate <<= ctrl.translate_x <<= ctrl.translate_y <<= 0;
ctrl.scale <<= ctrl.opacity <<= 1.0;
ctrl.scale <<= ctrl.scale_x <<= ctrl.opacity <<= 1.0;
ToSlider();
}
@ -135,9 +133,13 @@ struct App : TopWindow {
Reset();
Pair(ctrl.rotate, ctrl.rotate_slider);
Pair(ctrl.scale, ctrl.scale_slider);
Pair(ctrl.scale_x, ctrl.scale_x_slider);
Pair(ctrl.translate_x, ctrl.translate_x_slider);
Pair(ctrl.translate_y, ctrl.translate_y_slider);
Pair(ctrl.opacity, ctrl.opacity_slider);
Pair(ctrl.opacity, ctrl.opacity_slider);
ctrl.reset <<= THISBACK(Reset);
ctrl.benchmark <<= THISBACK(Benchmark);
ctrl.print <<= THISBACK(Print);
}
~App()
{