int maxi_png_plot(struct zint_symbol *symbol, int rotate_angle, int data_type) { int i, row, column, xposn, yposn; int image_height, image_width; char *pixelbuf; int error_number; int xoffset, yoffset; xoffset = symbol->border_width + symbol->whitespace_width; yoffset = symbol->border_width; image_width = 300 + (2 * xoffset * 2); image_height = 300 + (2 * yoffset * 2); if (!(pixelbuf = (char *) malloc(image_width * image_height))) { printf("Insifficient memory for pixel buffer"); return ZERROR_ENCODING_PROBLEM; } else { for(i = 0; i < (image_width * image_height); i++) { *(pixelbuf + i) = '0'; } } draw_bullseye(pixelbuf, image_width, (2 * xoffset), (2 * yoffset)); for(row = 0; row < symbol->rows; row++) { yposn = row * 9; for(column = 0; column < symbol->width; column++) { xposn = column * 10; if(module_is_set(symbol, row, column)) { if(row & 1) { /* Odd (reduced) row */ xposn += 5; draw_hexagon(pixelbuf, image_width, xposn + (2 * xoffset), yposn + (2 * yoffset)); } else { /* Even (full) row */ draw_hexagon(pixelbuf, image_width, xposn + (2 * xoffset), yposn + (2 * yoffset)); } } } } if(((symbol->output_options & BARCODE_BOX) != 0) || ((symbol->output_options & BARCODE_BIND) != 0)) { /* boundary bars */ draw_bar(pixelbuf, 0, image_width, 0, symbol->border_width * 2, image_width, image_height); draw_bar(pixelbuf, 0, image_width, 300 + (symbol->border_width * 2), symbol->border_width * 2, image_width, image_height); } if((symbol->output_options & BARCODE_BOX) != 0) { /* side bars */ draw_bar(pixelbuf, 0, symbol->border_width * 2, 0, image_height, image_width, image_height); draw_bar(pixelbuf, 300 + ((symbol->border_width + symbol->whitespace_width + symbol->whitespace_width) * 2), symbol->border_width * 2, 0, image_height, image_width, image_height); } error_number=png_to_file(symbol, image_height, image_width, pixelbuf, rotate_angle, data_type); free(pixelbuf); return error_number; }
void draw_image() { cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, cfg.output_pixels_x, cfg.output_pixels_y); cairo_t *cr = cairo_create (surface); cairo_set_line_width(cr,0.1); cairo_set_source_rgb(cr, 0, 0, 1.0); cairo_set_font_size(cr, 0.5); setup_transform(cr); hex_t *h=NULL; while ( (h=(hex_t*)utarray_next(cfg.hexv,h))) draw_hexagon(cr,h); cairo_destroy (cr); cairo_surface_write_to_png (surface, cfg.outfile); cairo_surface_destroy (surface); }
/* draw 7 hexagons */ void draw_hexplane(void) { if(wflag) { glPushMatrix(); glRotatef(-0.5*a, 0.0, 0.0, 1.0); } /* center , <0, 0, 0> */ draw_hexagon(); /* 12 o'clock, <0, 4, 0> */ glTranslatef(0., 4., 0.); draw_hexagon(); /* 10 o'clock, <-3.464, 2, 0> */ glTranslatef(-3.464, -2., 0.); draw_hexagon(); /* 8 o'clock, <-3.464, -2, 0> */ glTranslatef(0., -4., 0.); draw_hexagon(); /* 6 o'clock, <0, -4, 0> */ glTranslatef(3.464, -2., 0.); draw_hexagon(); /* 4 o'clock, <3.464, -2, 0> */ glTranslatef(3.464, 2., 0.); draw_hexagon(); /* 2 o'clock, <3.464, 2, 0> */ glTranslatef(0., 4., 0.); draw_hexagon(); if(wflag) glPopMatrix(); }