Last active
August 29, 2015 13:57
-
-
Save michalfapso/9546065 to your computer and use it in GitHub Desktop.
AntiGrainGeometry simple float antialiasing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Compiling: | |
// | |
// just put this file into agg24/examples and run: | |
// g++ -DRECT_X=1 -DRECT_Y=1 -DAGG_GRAY16 -I. -I../include -g -O2 -o aa_float aa_float.cpp | |
#if !defined(AGG_GRAY8) && !defined(AGG_GRAY16) && !defined(AGG_GRAY32) | |
#define AGG_GRAY32 | |
#endif | |
#if defined(AGG_GRAY8) | |
#define AGG_RENDERING_BUFFER row_accessor<int8u> | |
#elif defined(AGG_GRAY16) | |
#define AGG_RENDERING_BUFFER row_accessor<int16u> | |
#elif defined(AGG_GRAY32) | |
#define AGG_RENDERING_BUFFER row_accessor<float> | |
#endif | |
#ifndef RECT_X | |
#define RECT_X 1 | |
#endif | |
#ifndef RECT_Y | |
#define RECT_Y 1 | |
#endif | |
#include "agg_basics.h" | |
#include "agg_rendering_buffer.h" | |
#include "agg_rasterizer_scanline_aa.h" | |
#include "agg_scanline_u.h" | |
#include "agg_renderer_scanline.h" | |
#include "agg_pixfmt_rgb.h" | |
#include "agg_pixfmt_rgba.h" | |
#include "platform/agg_platform_support.h" | |
#include <iostream> | |
//#define AGG_GRAY8 | |
//#define AGG_GRAY16 | |
//#define AGG_GRAY32 | |
#include "pixel_formats.h" | |
typedef agg::rendering_buffer rendering_buffer; | |
static const int WIDTH = 10; | |
static const int HEIGHT = 4; | |
int main(int argc, char* argv[]) | |
{ | |
color_type::value_type buf_data[WIDTH * HEIGHT]; | |
rendering_buffer rbuf(buf_data, WIDTH, HEIGHT, WIDTH); | |
// Create Pixel Format and Basic renderers | |
//-------------------- | |
pixfmt pixf(rbuf); | |
agg::renderer_base<pixfmt> ren_base(pixf); | |
// At last we do some very simple things, like clear | |
//-------------------- | |
ren_base.clear(agg::rgba8(0, 0, 0)); | |
// Create Scanline Container, Scanline Rasterizer, | |
// and Scanline Renderer for solid fill. | |
//-------------------- | |
agg::scanline_u8 sl; | |
agg::rasterizer_scanline_aa<> ras; | |
agg::renderer_scanline_aa_solid< | |
agg::renderer_base<pixfmt> > ren_sl(ren_base); | |
float ul_x = RECT_X; // upper-left corner position | |
float ul_y = RECT_Y; | |
float sz = 2; // size of the drawn rectangle | |
ras.move_to_d(ul_x , ul_y ); | |
ras.line_to_d(ul_x+sz, ul_y ); | |
ras.line_to_d(ul_x+sz, ul_y+sz); | |
ras.line_to_d(ul_x , ul_y+sz); | |
// Set the color_type and render the scanlines | |
//----------------------- | |
ren_sl.color(agg::rgba8(255, 255, 255)); | |
agg::render_scanlines(ras, sl, ren_sl); | |
// Print the buffer | |
for (int y=0; y<HEIGHT; y++) { | |
color_type::value_type* row = rbuf.row_ptr(y); | |
for (int x=0; x<WIDTH; x++) { | |
std::cout << (float)row[x] << " "; | |
} | |
std::cout << std::endl; | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment