diff --git a/examples/PainterExamples/Examples.lay b/examples/PainterExamples/Examples.lay index 88ef01ceb..03fce83a9 100644 --- a/examples/PainterExamples/Examples.lay +++ b/examples/PainterExamples/Examples.lay @@ -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 diff --git a/examples/PainterExamples/main.cpp b/examples/PainterExamples/main.cpp index 94620b1cf..3805c2c65 100644 --- a/examples/PainterExamples/main.cpp +++ b/examples/PainterExamples/main.cpp @@ -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() {