mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-05 00:38:06 +02:00
Rename gstate->ppm to gstate->pixels_per_inch. Add new pixels_per_inch to the surface backend.
This commit is contained in:
parent
8bb3f7664d
commit
859bfd03a6
8 changed files with 62 additions and 22 deletions
12
ChangeLog
12
ChangeLog
|
|
@ -1,3 +1,15 @@
|
|||
2003-10-28 Carl Worth <cworth@isi.edu>
|
||||
|
||||
* src/cairo_xlib_surface.c (_cairo_xlib_surface_pixels_per_inch):
|
||||
Implement new backend function.
|
||||
|
||||
* src/cairo_surface.c (_cairo_surface_pixels_per_inch): Add new
|
||||
function to query surface pixels_per_inch.
|
||||
|
||||
* src/cairo_gstate.c (_cairo_gstate_init): Rename gstate->ppm to
|
||||
gstate->pixels_per_inch. Swithc from default 3780 pixels per meter
|
||||
to 96.0 pixels per inch which is slightly different.
|
||||
|
||||
2003-10-28 Carl Worth <cworth@isi.edu>
|
||||
|
||||
* src/cairo_gstate.c (_cairo_gstate_ensure_source):
|
||||
|
|
|
|||
|
|
@ -89,8 +89,7 @@ _cairo_gstate_init (cairo_gstate_t *gstate)
|
|||
gstate->alpha = 1.0;
|
||||
_cairo_color_init (&gstate->color);
|
||||
|
||||
/* 3780 PPM (~96DPI) is a good enough assumption until we get a surface */
|
||||
gstate->ppm = 3780;
|
||||
gstate->pixels_per_inch = CAIRO_GSTATE_PIXELS_PER_INCH_DEFAULT;
|
||||
_cairo_gstate_default_matrix (gstate);
|
||||
|
||||
_cairo_path_init (&gstate->path);
|
||||
|
|
@ -322,9 +321,9 @@ _cairo_gstate_set_target_surface (cairo_gstate_t *gstate, cairo_surface_t *surfa
|
|||
gstate->surface = surface;
|
||||
cairo_surface_reference (gstate->surface);
|
||||
|
||||
scale = surface->ppm / gstate->ppm;
|
||||
scale = _cairo_surface_pixels_per_inch (surface) / gstate->pixels_per_inch;
|
||||
_cairo_gstate_scale (gstate, scale, scale);
|
||||
gstate->ppm = surface->ppm;
|
||||
gstate->pixels_per_inch = _cairo_surface_pixels_per_inch (surface);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
@ -609,9 +608,7 @@ _cairo_gstate_set_matrix (cairo_gstate_t *gstate,
|
|||
cairo_status_t
|
||||
_cairo_gstate_default_matrix (cairo_gstate_t *gstate)
|
||||
{
|
||||
#define CAIRO_GSTATE_DEFAULT_PPM 3780.0
|
||||
|
||||
int scale = gstate->ppm / CAIRO_GSTATE_DEFAULT_PPM + 0.5;
|
||||
int scale = gstate->pixels_per_inch / CAIRO_GSTATE_PIXELS_PER_INCH_DEFAULT + 0.5;
|
||||
if (scale == 0)
|
||||
scale = 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -70,9 +70,6 @@ _cairo_surface_init (cairo_surface_t *surface,
|
|||
|
||||
surface->image_data = NULL;
|
||||
|
||||
/* XXX: We should really get this value from somewhere like Xft.dpy */
|
||||
/* Assume a default until the user lets us know otherwise */
|
||||
surface->ppm = 3780;
|
||||
surface->ref_count = 1;
|
||||
surface->repeat = 0;
|
||||
|
||||
|
|
@ -215,6 +212,15 @@ cairo_surface_destroy (cairo_surface_t *surface)
|
|||
}
|
||||
slim_hidden_def(cairo_surface_destroy);
|
||||
|
||||
#define CAIRO_SURFACE_PIXELS_PER_INCH_DEFAULT 96.0
|
||||
double
|
||||
_cairo_surface_pixels_per_inch (cairo_surface_t *surface)
|
||||
{
|
||||
if (surface->backend->pixels_per_inch)
|
||||
return surface->backend->pixels_per_inch (surface);
|
||||
|
||||
return CAIRO_SURFACE_PIXELS_PER_INCH_DEFAULT;
|
||||
}
|
||||
void
|
||||
_cairo_surface_pull_image (cairo_surface_t *surface)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -152,6 +152,13 @@ _cairo_xlib_surface_destroy (void *abstract_surface)
|
|||
surface->dpy = 0;
|
||||
}
|
||||
|
||||
static double
|
||||
_cairo_xlib_surface_pixels_per_inch (void *abstract_surface)
|
||||
{
|
||||
/* XXX: We should really get this value from somewhere like Xft.dpy */
|
||||
return 96.0;
|
||||
}
|
||||
|
||||
static void
|
||||
_cairo_xlib_surface_pull_image (void *abstract_surface)
|
||||
{
|
||||
|
|
@ -468,6 +475,7 @@ _cairo_xlib_surface_composite_trapezoids (cairo_operator_t operator,
|
|||
static const struct cairo_surface_backend cairo_xlib_surface_backend = {
|
||||
_cairo_xlib_surface_create_similar,
|
||||
_cairo_xlib_surface_destroy,
|
||||
_cairo_xlib_surface_pixels_per_inch,
|
||||
_cairo_xlib_surface_pull_image,
|
||||
_cairo_xlib_surface_push_image,
|
||||
_cairo_xlib_surface_set_matrix,
|
||||
|
|
|
|||
|
|
@ -89,8 +89,7 @@ _cairo_gstate_init (cairo_gstate_t *gstate)
|
|||
gstate->alpha = 1.0;
|
||||
_cairo_color_init (&gstate->color);
|
||||
|
||||
/* 3780 PPM (~96DPI) is a good enough assumption until we get a surface */
|
||||
gstate->ppm = 3780;
|
||||
gstate->pixels_per_inch = CAIRO_GSTATE_PIXELS_PER_INCH_DEFAULT;
|
||||
_cairo_gstate_default_matrix (gstate);
|
||||
|
||||
_cairo_path_init (&gstate->path);
|
||||
|
|
@ -322,9 +321,9 @@ _cairo_gstate_set_target_surface (cairo_gstate_t *gstate, cairo_surface_t *surfa
|
|||
gstate->surface = surface;
|
||||
cairo_surface_reference (gstate->surface);
|
||||
|
||||
scale = surface->ppm / gstate->ppm;
|
||||
scale = _cairo_surface_pixels_per_inch (surface) / gstate->pixels_per_inch;
|
||||
_cairo_gstate_scale (gstate, scale, scale);
|
||||
gstate->ppm = surface->ppm;
|
||||
gstate->pixels_per_inch = _cairo_surface_pixels_per_inch (surface);
|
||||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
|
@ -609,9 +608,7 @@ _cairo_gstate_set_matrix (cairo_gstate_t *gstate,
|
|||
cairo_status_t
|
||||
_cairo_gstate_default_matrix (cairo_gstate_t *gstate)
|
||||
{
|
||||
#define CAIRO_GSTATE_DEFAULT_PPM 3780.0
|
||||
|
||||
int scale = gstate->ppm / CAIRO_GSTATE_DEFAULT_PPM + 0.5;
|
||||
int scale = gstate->pixels_per_inch / CAIRO_GSTATE_PIXELS_PER_INCH_DEFAULT + 0.5;
|
||||
if (scale == 0)
|
||||
scale = 1;
|
||||
|
||||
|
|
|
|||
|
|
@ -70,9 +70,6 @@ _cairo_surface_init (cairo_surface_t *surface,
|
|||
|
||||
surface->image_data = NULL;
|
||||
|
||||
/* XXX: We should really get this value from somewhere like Xft.dpy */
|
||||
/* Assume a default until the user lets us know otherwise */
|
||||
surface->ppm = 3780;
|
||||
surface->ref_count = 1;
|
||||
surface->repeat = 0;
|
||||
|
||||
|
|
@ -215,6 +212,15 @@ cairo_surface_destroy (cairo_surface_t *surface)
|
|||
}
|
||||
slim_hidden_def(cairo_surface_destroy);
|
||||
|
||||
#define CAIRO_SURFACE_PIXELS_PER_INCH_DEFAULT 96.0
|
||||
double
|
||||
_cairo_surface_pixels_per_inch (cairo_surface_t *surface)
|
||||
{
|
||||
if (surface->backend->pixels_per_inch)
|
||||
return surface->backend->pixels_per_inch (surface);
|
||||
|
||||
return CAIRO_SURFACE_PIXELS_PER_INCH_DEFAULT;
|
||||
}
|
||||
void
|
||||
_cairo_surface_pull_image (cairo_surface_t *surface)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -152,6 +152,13 @@ _cairo_xlib_surface_destroy (void *abstract_surface)
|
|||
surface->dpy = 0;
|
||||
}
|
||||
|
||||
static double
|
||||
_cairo_xlib_surface_pixels_per_inch (void *abstract_surface)
|
||||
{
|
||||
/* XXX: We should really get this value from somewhere like Xft.dpy */
|
||||
return 96.0;
|
||||
}
|
||||
|
||||
static void
|
||||
_cairo_xlib_surface_pull_image (void *abstract_surface)
|
||||
{
|
||||
|
|
@ -468,6 +475,7 @@ _cairo_xlib_surface_composite_trapezoids (cairo_operator_t operator,
|
|||
static const struct cairo_surface_backend cairo_xlib_surface_backend = {
|
||||
_cairo_xlib_surface_create_similar,
|
||||
_cairo_xlib_surface_destroy,
|
||||
_cairo_xlib_surface_pixels_per_inch,
|
||||
_cairo_xlib_surface_pull_image,
|
||||
_cairo_xlib_surface_push_image,
|
||||
_cairo_xlib_surface_set_matrix,
|
||||
|
|
|
|||
|
|
@ -292,6 +292,9 @@ struct cairo_surface_backend {
|
|||
void
|
||||
(*destroy) (void *surface);
|
||||
|
||||
double
|
||||
(*pixels_per_inch) (void *surface);
|
||||
|
||||
void
|
||||
(*pull_image) (void *surface);
|
||||
|
||||
|
|
@ -348,7 +351,6 @@ struct cairo_surface {
|
|||
|
||||
char *image_data;
|
||||
|
||||
double ppm;
|
||||
unsigned int ref_count;
|
||||
int repeat;
|
||||
|
||||
|
|
@ -411,6 +413,7 @@ struct cairo_font {
|
|||
#define CAIRO_GSTATE_LINE_CAP_DEFAULT CAIRO_LINE_CAP_BUTT
|
||||
#define CAIRO_GSTATE_LINE_JOIN_DEFAULT CAIRO_LINE_JOIN_MITER
|
||||
#define CAIRO_GSTATE_MITER_LIMIT_DEFAULT 10.0
|
||||
#define CAIRO_GSTATE_PIXELS_PER_INCH_DEFAULT 96.0
|
||||
|
||||
/* Need a name distinct from the cairo_clip function */
|
||||
typedef struct cairo_clip_rec {
|
||||
|
|
@ -451,7 +454,7 @@ typedef struct cairo_gstate {
|
|||
double alpha;
|
||||
cairo_color_t color;
|
||||
|
||||
double ppm;
|
||||
double pixels_per_inch;
|
||||
cairo_matrix_t ctm;
|
||||
cairo_matrix_t ctm_inverse;
|
||||
|
||||
|
|
@ -943,6 +946,9 @@ _cairo_surface_composite_trapezoids (cairo_operator_t operator,
|
|||
cairo_trapezoid_t *traps,
|
||||
int ntraps);
|
||||
|
||||
extern double __internal_linkage
|
||||
_cairo_surface_pixels_per_inch (cairo_surface_t *surface);
|
||||
|
||||
extern void __internal_linkage
|
||||
_cairo_surface_pull_image (cairo_surface_t *surface);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue