ultimatepp/uppdev/aggtest/main.cpp
cxl f5653dff76 Developing rasterizer
git-svn-id: svn://ultimatepp.org/upp/trunk@830 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2009-02-01 22:24:17 +00:00

47 lines
1.4 KiB
C++

#include "aggtest.h"
// this function is defined in lion.cpp, where's also the description of the lion
unsigned parse_lion(agg::path_storage& ps, agg::rgba8* colors, unsigned* path_idx);
void AggTestCtrl::parse_lion() {
npaths = ::parse_lion(path, colors, path_idx);
agg::pod_array_adaptor<unsigned> pathidx(path_idx, 100);
agg::bounding_rect(path, pathidx, 0, npaths, &x1, &y1, &x2, &y2);
base_dx=(x2-x1);
base_dy=(y2-y1);
};
AggTestCtrl::AggTestCtrl():
pixf(rbuf),rb(pixf),r(rb),
x1(0),y1(0),x2(0),y2(0),
npaths(0),base_dx(0),base_dy(0),scale(1.0){
SetPixFmt(agg::pix_format_bgr24);
parse_lion();
};
void AggTestCtrl::onDraw(Draw& dest){
scale = 1;
rb.clear(agg::rgba8(255, 255, 255));
for(int i = 0; i < 200; i++) {
RTIMING("Lion");
agg::trans_affine mtx;
mtx *= agg::trans_affine_translation(-base_dx/2.0, -base_dy/2.0);
mtx *= agg::trans_affine_scaling(scale, scale);
mtx *= agg::trans_affine_translation(rbuf.width()/2, rbuf.height()/2);
agg::conv_transform<agg::path_storage, agg::trans_affine> trans(path, mtx);
agg::render_all_paths(rasterizer, sl, r, trans, colors, path_idx, npaths);
}
};
void AggTestCtrl::onInit(){
};
void AggTestCtrl::onResize(int width,int height){
scale=Upp::min(width/base_dx,height/base_dy);
rb.reset_clipping(true);
};
aggtest::aggtest(){
CtrlLayout(*this, "AggCtrl");
SetMinSize(Size(16,16));
Sizeable();
};
GUI_APP_MAIN {
aggtest().Run();
}