twin_pixmap_t * twin_pixmap_create (twin_format_t format, twin_coord_t width, twin_coord_t height) { twin_coord_t stride = twin_bytes_per_pixel (format) * width; twin_area_t space = (twin_area_t) stride * height; twin_area_t size = sizeof (twin_pixmap_t) + space; twin_pixmap_t *pixmap = malloc (size); if (!pixmap) return 0; pixmap->screen = 0; pixmap->up = 0; pixmap->down = 0; pixmap->x = pixmap->y = 0; pixmap->format = format; pixmap->width = width; pixmap->height = height; twin_matrix_identity(&pixmap->transform); pixmap->clip.left = pixmap->clip.top = 0; pixmap->clip.right = pixmap->width; pixmap->clip.bottom = pixmap->height; pixmap->origin_x = pixmap->origin_y = 0; pixmap->stride = stride; pixmap->disable = 0; pixmap->p.v = pixmap + 1; memset (pixmap->p.v, '\0', space); return pixmap; }
twin_pixmap_t * twin_pixmap_create_const (twin_format_t format, twin_coord_t width, twin_coord_t height, twin_coord_t stride, twin_pointer_t pixels) { twin_pixmap_t *pixmap = malloc (sizeof (twin_pixmap_t)); if (!pixmap) return 0; pixmap->screen = 0; pixmap->up = 0; pixmap->down = 0; pixmap->x = pixmap->y = 0; pixmap->format = format; pixmap->width = width; pixmap->height = height; twin_matrix_identity(&pixmap->transform); pixmap->clip.left = pixmap->clip.top = 0; pixmap->clip.right = pixmap->width; pixmap->clip.bottom = pixmap->height; pixmap->origin_x = pixmap->origin_y = 0; pixmap->stride = stride; pixmap->disable = 0; pixmap->p = pixels; return pixmap; }
twin_path_t * twin_path_create (void) { twin_path_t *path; path = malloc (sizeof (twin_path_t)); path->npoints = path->size_points = 0; path->nsublen = path->size_sublen = 0; path->points = 0; path->sublen = 0; twin_matrix_identity (&path->state.matrix); path->state.font_size = TWIN_FIXED_ONE * 15; path->state.font_style = TWIN_TEXT_ROMAN; path->state.cap_style = TwinCapRound; return path; }
void twin_path_identity (twin_path_t *path) { twin_matrix_identity (&path->state.matrix); }