本文整理汇总了C++中cairo_matrix_scale函数的典型用法代码示例。如果您正苦于以下问题:C++ cairo_matrix_scale函数的具体用法?C++ cairo_matrix_scale怎么用?C++ cairo_matrix_scale使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cairo_matrix_scale函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: draw_text
static void
draw_text (cairo_t *cr)
{
cairo_matrix_t tm;
/* skew */
cairo_matrix_init (&tm, 1, 0,
-0.25, 1,
0, 0);
cairo_matrix_scale (&tm, FONT_SIZE, FONT_SIZE);
cairo_set_font_matrix (cr, &tm);
cairo_new_path (cr);
cairo_move_to (cr, 50, SIZE-PAD);
cairo_show_text (cr, "A");
/* rotate and scale */
cairo_matrix_init_rotate (&tm, M_PI / 2);
cairo_matrix_scale (&tm, FONT_SIZE, FONT_SIZE * 2.0);
cairo_set_font_matrix (cr, &tm);
cairo_new_path (cr);
cairo_move_to (cr, PAD, PAD + 25);
cairo_show_text (cr, "A");
cairo_matrix_init_rotate (&tm, M_PI / 2);
cairo_matrix_scale (&tm, FONT_SIZE * 2.0, FONT_SIZE);
cairo_set_font_matrix (cr, &tm);
cairo_new_path (cr);
cairo_move_to (cr, PAD, PAD + 50);
cairo_show_text (cr, "A");
}
开发者ID:499940913,项目名称:moon,代码行数:33,代码来源:text-transform.c
示例2: ge_cairo_mirror
void
ge_cairo_mirror (cairo_t *cr,
CairoMirror mirror,
gint *x,
gint *y,
gint *width,
gint *height)
{
cairo_matrix_t matrix;
cairo_matrix_init_identity (&matrix);
cairo_translate (cr, *x, *y);
*x = 0;
*y = 0;
if (mirror & CR_MIRROR_HORIZONTAL)
{
cairo_matrix_scale (&matrix, -1, 1);
*x = -*width;
}
if (mirror & CR_MIRROR_VERTICAL)
{
cairo_matrix_scale (&matrix, 1, -1);
*y = -*height;
}
cairo_transform (cr, &matrix);
}
开发者ID:Distrotech,项目名称:gtk-engines,代码行数:29,代码来源:cairo-support.c
示例3: fabs
void wxGISDisplay::InitTransformMatrix(void)
{
m_dFrameCenterX = m_oDeviceFrameRect.GetWidth() / 2;
m_dFrameCenterY = m_oDeviceFrameRect.GetHeight() / 2;
double dWorldCenterX = (m_CurrentBounds.MaxX - m_CurrentBounds.MinX) / 2;
double dWorldCenterY = (m_CurrentBounds.MaxY - m_CurrentBounds.MinY) / 2;
//origin (UL corner)
m_dOrigin_X = m_dCacheCenterX - m_dFrameCenterX;
m_dOrigin_Y = m_dCacheCenterY - m_dFrameCenterY;
//get scale
double dScaleX = fabs(m_dFrameCenterX / dWorldCenterX);
double dScaleY = fabs(m_dFrameCenterY / dWorldCenterY);
m_dScale = wxMin(dScaleX, dScaleY);
double dWorldDeltaX = dWorldCenterX + m_CurrentBounds.MinX;
double dWorldDeltaY = dWorldCenterY + m_CurrentBounds.MinY;
double dWorldDeltaXSt = m_dScale * dWorldDeltaX;// + m_dAngleRad * dWorldDeltaY;
double dWorldDeltaYSt = m_dScale * dWorldDeltaY;//m_dAngleRad * dWorldDeltaX +
//double dCenterX = m_dCacheCenterX - dWorldDeltaXSt;//(dWorldCenterX + m_CurrentBounds.MinX) * dScale;//
//double dCenterY = m_dCacheCenterY + dWorldDeltaYSt;//(dWorldCenterY + m_CurrentBounds.MinY) * dScale;//
m_dFrameXShift = m_dFrameCenterX - dWorldDeltaXSt;//(dWorldCenterX + m_CurrentBounds.MinX) * dScale;//
m_dFrameYShift = m_dFrameCenterY + dWorldDeltaYSt;//(dWorldCenterY + m_CurrentBounds.MinY) * dScale;//
// cairo_matrix_init (m_pMatrix, 1, 0, 0, 1, m_dCacheCenterX, m_dCacheCenterY);
//cairo_matrix_init (m_pMatrix, dScale, 0.0, 0.0, -dScale, dCenterX, dCenterY);
cairo_matrix_init_translate (m_pMatrix, m_dCacheCenterX, m_dCacheCenterY);
//rotate
//cairo_matrix_rotate(m_pMatrix, 45.0 * M_PI / 180.0);
if(!IsDoubleEquil(m_dAngleRad, 0.0))
//{
//cairo_matrix_translate(m_pMatrix, dWorldDeltaXSt, dWorldDeltaYSt);
cairo_matrix_rotate(m_pMatrix, m_dAngleRad);
//cairo_matrix_translate(m_pMatrix, -dWorldDeltaXSt, dWorldDeltaYSt);
//}
//else
cairo_matrix_translate(m_pMatrix, -dWorldDeltaXSt, dWorldDeltaYSt);
cairo_matrix_scale(m_pMatrix, m_dScale, -m_dScale);
//init matrix for Wld2DC & DC2Wld
cairo_matrix_init_translate (m_pDisplayMatrix, m_dFrameCenterX, m_dFrameCenterY);
if(!IsDoubleEquil(m_dAngleRad, 0.0))
cairo_matrix_rotate(m_pDisplayMatrix, m_dAngleRad);
cairo_matrix_translate(m_pDisplayMatrix, -dWorldDeltaXSt, dWorldDeltaYSt);
cairo_matrix_scale(m_pDisplayMatrix, m_dScale, -m_dScale);
//init matrix for TransformRect
cairo_matrix_init_translate (m_pDisplayMatrixNoRotate, m_dFrameCenterX, m_dFrameCenterY);
cairo_matrix_translate(m_pDisplayMatrixNoRotate, -dWorldDeltaXSt, dWorldDeltaYSt);
cairo_matrix_scale(m_pDisplayMatrixNoRotate, m_dScale, -m_dScale);
//set matrix to all caches
for(size_t i = 0; i < m_saLayerCaches.size(); ++i)
cairo_set_matrix (m_saLayerCaches[i].pCairoContext, m_pMatrix);
}
开发者ID:GimpoByte,项目名称:nextgismanager,代码行数:58,代码来源:gisdisplay.cpp
示例4: draw_gdk_apply_netstate_transformation
void
draw_gdk_apply_netstate_transformation (cairo_matrix_t *fullMatrix, cairo_matrix_t *scaleMatrix,
gerbv_netstate_t *state) {
/* apply scale factor */
cairo_matrix_scale (fullMatrix, state->scaleA, state->scaleB);
cairo_matrix_scale (scaleMatrix, state->scaleA, state->scaleB);
/* apply offset */
cairo_matrix_translate (fullMatrix, state->offsetA, state->offsetB);
/* apply mirror */
switch (state->mirrorState) {
case GERBV_MIRROR_STATE_FLIPA:
cairo_matrix_scale (fullMatrix, -1, 1);
cairo_matrix_scale (scaleMatrix, -1, 1);
break;
case GERBV_MIRROR_STATE_FLIPB:
cairo_matrix_scale (fullMatrix, 1, -1);
cairo_matrix_scale (scaleMatrix, -1, 1);
break;
case GERBV_MIRROR_STATE_FLIPAB:
cairo_matrix_scale (fullMatrix, -1, -1);
cairo_matrix_scale (scaleMatrix, -1, 1);
break;
default:
break;
}
/* finally, apply axis select */
if (state->axisSelect == GERBV_AXIS_SELECT_SWAPAB) {
/* we do this by rotating 270 (counterclockwise, then mirroring
the Y axis */
cairo_matrix_rotate (fullMatrix, 3 * M_PI / 2);
cairo_matrix_scale (fullMatrix, 1, -1);
}
}
开发者ID:rupin,项目名称:test-gerbv,代码行数:33,代码来源:draw-gdk.c
示例5: _cairo_draw_film_foreground
void
_cairo_draw_film_foreground (cairo_t *cr,
int x,
int y,
int width,
int height,
int thumbnail_size)
{
cairo_pattern_t *pattern;
double film_scale;
cairo_matrix_t matrix;
double film_strip;
/* left film strip */
pattern = _cairo_film_pattern_create ();
if (thumbnail_size > 128)
film_scale = 256.0 / thumbnail_size;
else
film_scale = 128.0 / thumbnail_size;
film_strip = 9.0 / film_scale;
cairo_matrix_init_identity (&matrix);
cairo_matrix_scale (&matrix, film_scale, film_scale);
cairo_matrix_translate (&matrix, -x, 0);
cairo_pattern_set_matrix (pattern, &matrix);
cairo_set_source (cr, pattern);
cairo_rectangle (cr,
x,
y,
film_strip,
height);
cairo_fill (cr);
/* right film strip */
x = x + width - film_strip;
cairo_matrix_init_identity (&matrix);
cairo_matrix_scale (&matrix, film_scale, film_scale);
cairo_matrix_translate (&matrix, -x, 0);
cairo_pattern_set_matrix (pattern, &matrix);
cairo_set_source (cr, pattern);
cairo_rectangle (cr,
x,
y,
film_strip,
height);
cairo_fill (cr);
cairo_pattern_destroy (pattern);
}
开发者ID:GNOME,项目名称:gthumb,代码行数:52,代码来源:cairo-utils.c
示例6: source
static cairo_test_status_t
source (cairo_t *cr, int width, int height)
{
cairo_pattern_t *pattern;
cairo_matrix_t mat;
cairo_translate (cr, PAD, PAD);
pattern = create_pattern (cr);
cairo_matrix_init_identity (&mat);
cairo_matrix_scale (&mat, 2, 1.5);
cairo_matrix_rotate (&mat, 1);
cairo_matrix_translate (&mat, -PAT_WIDTH/4.0, -PAT_WIDTH/2.0);
cairo_pattern_set_matrix (pattern, &mat);
cairo_pattern_set_extend (pattern, CAIRO_EXTEND_NONE);
cairo_set_source (cr, pattern);
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
cairo_paint (cr);
cairo_pattern_destroy (pattern);
return CAIRO_TEST_SUCCESS;
}
开发者ID:AZed,项目名称:cairo,代码行数:25,代码来源:recording-surface-pattern.c
示例7: _cairo_type3_glyph_surface_emit_image_pattern
static cairo_status_t
_cairo_type3_glyph_surface_emit_image_pattern (cairo_type3_glyph_surface_t *surface,
cairo_image_surface_t *image,
cairo_matrix_t *pattern_matrix)
{
cairo_matrix_t mat, upside_down;
cairo_status_t status;
if (image->width == 0 || image->height == 0)
return CAIRO_STATUS_SUCCESS;
mat = *pattern_matrix;
/* Get the pattern space to user space matrix */
status = cairo_matrix_invert (&mat);
/* cairo_pattern_set_matrix ensures the matrix is invertible */
assert (status == CAIRO_STATUS_SUCCESS);
/* Make this a pattern space to Type 3 font space matrix */
cairo_matrix_multiply (&mat, &mat, &surface->cairo_to_pdf);
/* PDF images are in a 1 unit by 1 unit image space. Turn the 1 by
* 1 image upside down to convert to flip the Y-axis going from
* cairo to PDF. Then scale the image up to the required size. */
cairo_matrix_scale (&mat, image->width, image->height);
cairo_matrix_init (&upside_down, 1, 0, 0, -1, 0, 1);
cairo_matrix_multiply (&mat, &upside_down, &mat);
return _cairo_type3_glyph_surface_emit_image (surface, image, &mat);
}
开发者ID:jwmcglynn,项目名称:Gadgets,代码行数:31,代码来源:cairo-type3-glyph-surface.c
示例8: draw
static cairo_test_status_t
draw (cairo_t *cr, int width, int height)
{
cairo_font_face_t *font_face;
cairo_font_options_t *font_options;
cairo_scaled_font_t *scaled_font;
cairo_matrix_t identity;
cairo_matrix_t zero;
cairo_matrix_init_identity(&identity);
zero = identity;
cairo_matrix_scale(&zero, 0, 0);
font_face = cairo_get_font_face (cr);
font_options = cairo_font_options_create ();
cairo_get_font_options (cr, font_options);
scaled_font = cairo_scaled_font_create (font_face,
&identity,
&zero,
font_options);
cairo_set_scaled_font (cr, scaled_font);
cairo_show_text (cr, "Hello");
cairo_scaled_font_destroy (scaled_font);
cairo_font_options_destroy (font_options);
return cairo_test_status_from_status (cairo_test_get_context (cr),
cairo_status(cr));
}
开发者ID:AZed,项目名称:cairo,代码行数:29,代码来源:scaled-font-zero-matrix.c
示例9: seed_cairo_matrix_scale
static SeedValue
seed_cairo_matrix_scale (SeedContext ctx,
SeedObject function,
SeedObject this_object,
gsize argument_count,
const SeedValue arguments[],
SeedException *exception)
{
gdouble x, y;
cairo_matrix_t m;
if (argument_count != 3)
{
EXPECTED_EXCEPTION("scale", "3 arguments");
}
if (!seed_value_to_cairo_matrix (ctx, arguments[0], &m, exception))
{
seed_make_exception (ctx, exception, "ArgumentError", "scale needs an array [xx, yx, xy, yy, x0, y0]");
}
x = seed_value_to_double (ctx, arguments[1], exception);
y = seed_value_to_double (ctx, arguments[2], exception);
cairo_matrix_scale (&m, x, y);
return seed_value_from_cairo_matrix (ctx, &m, exception);
}
开发者ID:dannote,项目名称:seed,代码行数:27,代码来源:seed-cairo-matrix.c
示例10: adg_gtk_area_reset
/**
* adg_gtk_area_reset:
* @area: an #AdgGtkArea
*
* Forcibly resets the zoom ratio and position of the canvas bound
* to @area. This means the canvas will be scaled and centered on
* the current available space.
**/
void
adg_gtk_area_reset(AdgGtkArea *area)
{
AdgGtkAreaPrivate *data;
GtkWidget *parent;
const CpmlExtents *sheet;
GtkAllocation allocation;
CpmlPair size;
gdouble zoom;
g_return_if_fail(ADG_GTK_IS_AREA(area));
data = adg_gtk_area_get_instance_private(area);
cairo_matrix_init_identity(&data->render_map);
sheet = _adg_get_extents(area);
if (!sheet->is_defined || sheet->size.x <= 0 || sheet->size.y <= 0)
return;
parent = gtk_widget_get_parent((GtkWidget *) area);
gtk_widget_get_allocation(parent, &allocation);
size.x = allocation.width;
size.y = allocation.height;
zoom = MIN(size.x / sheet->size.x, size.y / sheet->size.y);
cairo_matrix_scale(&data->render_map, zoom, zoom);
cairo_matrix_translate(&data->render_map,
(size.x / zoom - sheet->size.x) / 2 - sheet->org.x,
(size.y / zoom - sheet->size.y) / 2 - sheet->org.y);
/* Trigger a resize trying to hide the scrollbars on the parent */
gtk_widget_queue_resize(parent);
}
开发者ID:ntd,项目名称:adg,代码行数:41,代码来源:adg-gtk-area.c
示例11: cairo_matrix_scale
JNIEXPORT void JNICALL
Java_org_freedesktop_cairo_CairoMatrix_cairo_1matrix_1scale
(
JNIEnv* env,
jclass cls,
jlong _self,
jdouble _sx,
jdouble _sy
)
{
cairo_matrix_t* self;
double sx;
double sy;
// convert parameter self
self = (cairo_matrix_t*) _self;
// convert parameter sx
sx = (double) _sx;
// convert parameter sy
sy = (double) _sy;
// call function
cairo_matrix_scale(self, sx, sy);
// cleanup parameter self
// cleanup parameter sx
// cleanup parameter sy
}
开发者ID:cyberpython,项目名称:java-gnome,代码行数:32,代码来源:CairoMatrix.c
示例12: cairmat_scale
static int
cairmat_scale (lua_State *L) {
cairo_matrix_t mat;
from_lua_matrix(L, &mat, 1);
cairo_matrix_scale(&mat, luaL_checknumber(L, 2), luaL_checknumber(L, 3));
to_lua_matrix(L, &mat, 1);
return 0;
}
开发者ID:awesomeWM,项目名称:oocairo,代码行数:8,代码来源:obj_matrix.c
示例13: m_cairo_matrix_scale
static int m_cairo_matrix_scale(lua_State * L)
{
cairo_matrix_t * matrix = luaL_checkudata(L, 1, MT_NAME_CAIRO_MATRIX);
double sx = luaL_checknumber(L, 2);
double sy = luaL_checknumber(L, 3);
cairo_matrix_scale(matrix, sx, sy);
return 0;
}
开发者ID:qioixiy,项目名称:xboot,代码行数:8,代码来源:l_cairo_matrix.c
示例14: cairo_matrix_scale
void ofCairoRenderer::scale(float xAmnt, float yAmnt, float zAmnt ){
if(!surface || !cr) return;
cairo_matrix_scale(getCairoMatrix(),xAmnt,yAmnt);
setCairoMatrix();
if(!b3D) return;
modelView.glScale(xAmnt,yAmnt,zAmnt);
}
开发者ID:AppleToolbox,项目名称:openFrameworks,代码行数:8,代码来源:ofCairoRenderer.cpp
示例15: _cairo_skia_context_scale
static cairo_status_t
_cairo_skia_context_scale (void *abstract_cr,
double sx,
double sy)
{
cairo_skia_context_t *cr = (cairo_skia_context_t *) abstract_cr;
cairo_matrix_scale (&cr->matrix, sx, sy);
return CAIRO_STATUS_SUCCESS;
}
开发者ID:Ashod,项目名称:WinCairoRequirements,代码行数:10,代码来源:cairo-skia-context.cpp
示例16: cairo_get_matrix
//----------------------------------------------------------
void ofCairoRenderer::scale(float xAmnt, float yAmnt, float zAmnt ){
if(!surface || !cr) return;
cairo_matrix_t matrix;
cairo_get_matrix(cr,&matrix);
cairo_matrix_scale(&matrix,xAmnt,yAmnt);
cairo_set_matrix(cr,&matrix);
if(!b3D) return;
modelView.glScale(xAmnt,yAmnt,zAmnt);
}
开发者ID:8morikazuto,项目名称:openFrameworks,代码行数:11,代码来源:ofCairoRenderer.cpp
示例17: matrix_scale
static PyObject *
matrix_scale (PycairoMatrix *o, PyObject *args) {
double sx, sy;
if (!PyArg_ParseTuple(args, "dd:Matrix.scale", &sx, &sy))
return NULL;
cairo_matrix_scale (&o->matrix, sx, sy);
Py_RETURN_NONE;
}
开发者ID:Projjol,项目名称:Fracktal,代码行数:10,代码来源:matrix.c
示例18: GOO_CANVAS_ITEM_MODEL_GET_IFACE
/**
* goo_canvas_item_model_scale:
* @model: an item model.
* @sx: the amount to scale the horizontal axis.
* @sy: the amount to scale the vertical axis.
*
* Scales the model's coordinate system by the given amounts.
**/
void
goo_canvas_item_model_scale (GooCanvasItemModel *model,
gdouble sx,
gdouble sy)
{
GooCanvasItemModelIface *iface = GOO_CANVAS_ITEM_MODEL_GET_IFACE (model);
cairo_matrix_t new_matrix = { 1, 0, 0, 1, 0, 0 };
iface->get_transform (model, &new_matrix);
cairo_matrix_scale (&new_matrix, sx, sy);
iface->set_transform (model, &new_matrix);
}
开发者ID:anderflash,项目名称:goocanvas,代码行数:20,代码来源:goocanvasitemmodel.c
示例19: create_scaled_font
static cairo_scaled_font_t *
create_scaled_font (cairo_t * cr)
{
FcPattern *pattern, *resolved;
FcResult result;
cairo_font_face_t *font_face;
cairo_scaled_font_t *scaled_font;
cairo_font_options_t *font_options;
cairo_matrix_t font_matrix, ctm;
double pixel_size;
font_options = cairo_font_options_create ();
cairo_get_font_options (cr, font_options);
pattern = FcPatternCreate ();
FcPatternAddString (pattern, FC_FAMILY, (FcChar8 *)"Bitstream Vera Sans");
FcPatternAddDouble (pattern, FC_PIXEL_SIZE, TEXT_SIZE);
FcConfigSubstitute (NULL, pattern, FcMatchPattern);
cairo_ft_font_options_substitute (font_options, pattern);
FcDefaultSubstitute (pattern);
resolved = FcFontMatch (NULL, pattern, &result);
/* set layout to vertical */
FcPatternDel (resolved, FC_VERTICAL_LAYOUT);
FcPatternAddBool (resolved, FC_VERTICAL_LAYOUT, FcTrue);
FcPatternGetDouble (resolved, FC_PIXEL_SIZE, 0, &pixel_size);
font_face = cairo_ft_font_face_create_for_pattern (resolved);
cairo_matrix_init_translate (&font_matrix, 10, 30);
cairo_matrix_rotate (&font_matrix, M_PI_2/3);
cairo_matrix_scale (&font_matrix, pixel_size, pixel_size);
cairo_get_matrix (cr, &ctm);
scaled_font = cairo_scaled_font_create (font_face,
&font_matrix,
&ctm,
font_options);
cairo_font_options_destroy (font_options);
cairo_font_face_destroy (font_face);
FcPatternDestroy (pattern);
FcPatternDestroy (resolved);
return scaled_font;
}
开发者ID:jwmcglynn,项目名称:Gadgets,代码行数:52,代码来源:ft-text-vertical-layout-type3.c
示例20: clear
void
S9xGTKDisplayDriver::output (void *src,
int src_pitch,
int x,
int y,
int width,
int height,
int dst_width,
int dst_height)
{
if (last_known_width != dst_width || last_known_height != dst_height)
{
clear ();
last_known_width = dst_width;
last_known_height = dst_height;
}
cairo_t *cr = window->get_cairo ();
cairo_surface_t *surface;
surface = cairo_image_surface_create_for_data ((unsigned char *) src, CAIRO_FORMAT_RGB16_565, width, height, src_pitch);
cairo_set_source_surface (cr, surface, 0, 0);
if (width != dst_width || height != dst_height)
{
cairo_matrix_t matrix;
cairo_pattern_t *pattern = cairo_get_source (cr);;
cairo_matrix_init_identity (&matrix);
cairo_matrix_scale (&matrix,
(double) width / (double) dst_width,
(double) height / (double) dst_height);
cairo_matrix_translate (&matrix, -x, -y);
cairo_pattern_set_matrix (pattern, &matrix);
cairo_pattern_set_filter (pattern,
Settings.BilinearFilter
? CAIRO_FILTER_BILINEAR
: CAIRO_FILTER_NEAREST);
}
cairo_rectangle (cr, x, y, dst_width, dst_height);
cairo_fill (cr);
cairo_surface_finish (surface);
cairo_surface_destroy (surface);
window->release_cairo ();
window->set_mouseable_area (x, y, width, height);
}
开发者ID:snes9xgit,项目名称:snes9x,代码行数:52,代码来源:gtk_display_driver_gtk.cpp
注:本文中的cairo_matrix_scale函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论