Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 98828 | Differences between
and this patch

Collapse All | Expand All

(-)mozilla/layout/svg/renderer/src/cairo/nsSVGCairoCanvas.cpp.orig (-1 / +2 lines)
Lines 116-125 Link Here
116
  surface->GetSize(&mWidth, &mHeight);
116
  surface->GetSize(&mWidth, &mHeight);
117
  GdkDrawable *drawable = surface->GetDrawable();
117
  GdkDrawable *drawable = surface->GetDrawable();
118
118
119
  GdkVisual *visual = gdk_window_get_visual(drawable);
119
  cairo_surface_t *target =
120
  cairo_surface_t *target =
120
	cairo_xlib_surface_create(GDK_WINDOW_XDISPLAY(drawable),
121
	cairo_xlib_surface_create(GDK_WINDOW_XDISPLAY(drawable),
121
				  drawable,
122
				  GDK_WINDOW_XWINDOW(drawable),
122
				  GDK_WINDOW_XWINDOW(drawable),
123
				  GDK_VISUAL_XVISUAL(visual),
123
				  mWidth,
124
				  mWidth,
124
				  mHeight);
125
				  mHeight);
125
126
(-)mozilla/layout/svg/renderer/src/cairo/nsSVGCairoPathGeometry.cpp.orig (-5 / +5 lines)
Lines 166-174 Link Here
166
  ctm->GetF(&val);
166
  ctm->GetF(&val);
167
  m[5] = val;
167
  m[5] = val;
168
168
169
  cairo_matrix_t *matrix = cairo_matrix_create();
169
  cairo_matrix_t matrix = { m[0], m[1], m[2], m[3], m[4], m[5] };
170
  cairo_matrix_set_affine(matrix, m[0], m[1], m[2], m[3], m[4], m[5]);
170
  cairo_set_matrix(ctx, &matrix);
171
  cairo_concat_matrix(ctx, matrix);
172
171
173
  nsCOMPtr<nsISVGRendererPathBuilder> builder;
172
  nsCOMPtr<nsISVGRendererPathBuilder> builder;
174
  NS_NewSVGCairoPathBuilder(getter_AddRefs(builder), ctx);
173
  NS_NewSVGCairoPathBuilder(getter_AddRefs(builder), ctx);
Lines 322-331 Link Here
322
{
321
{
323
  *_retval = PR_FALSE;
322
  *_retval = PR_FALSE;
324
323
325
  cairo_t *ctx = cairo_create();
324
  cairo_t *ctx = cairo_create(0);
326
325
327
  GeneratePath(ctx);
326
  GeneratePath(ctx);
328
  cairo_default_matrix(ctx);
327
  double xx = x, yy = y;
328
  cairo_device_to_user(ctx, &xx, &yy);
329
329
330
  PRUint16 mask = 0;
330
  PRUint16 mask = 0;
331
  mSource->GetHittestMask(&mask);
331
  mSource->GetHittestMask(&mask);
(-)mozilla/layout/svg/renderer/src/cairo/nsISVGCairoGlyphMetrics.h.orig (-1 / +1 lines)
Lines 65-71 Link Here
65
65
66
  NS_IMETHOD_(void) GetSubBoundingBox(PRUint32 charoffset, PRUint32 count, nsIDOMSVGRect * *aBoundingBox)=0;
66
  NS_IMETHOD_(void) GetSubBoundingBox(PRUint32 charoffset, PRUint32 count, nsIDOMSVGRect * *aBoundingBox)=0;
67
67
68
  NS_IMETHOD_(cairo_font_t*) GetFont() = 0;
68
  NS_IMETHOD_(void) SelectFont(cairo_t *ctx) = 0;
69
};
69
};
70
70
71
/** @} */
71
/** @} */
(-)mozilla/layout/svg/renderer/src/cairo/nsSVGCairoGlyphMetrics.cpp.orig (-27 / +25 lines)
Lines 83-93 Link Here
83
  NS_IMETHOD_(void) GetSubBoundingBox(PRUint32 charoffset, PRUint32 count,
83
  NS_IMETHOD_(void) GetSubBoundingBox(PRUint32 charoffset, PRUint32 count,
84
                                      nsIDOMSVGRect * *aBoundingBox);
84
                                      nsIDOMSVGRect * *aBoundingBox);
85
85
86
  NS_IMETHOD_(cairo_font_t*)GetFont() { return mFont; }
86
  NS_IMETHOD_(void) SelectFont(cairo_t *ctx);
87
87
88
private:
88
private:
89
  cairo_t *mCT;
89
  cairo_t *mCT;
90
  cairo_font_t *mFont;
91
  cairo_text_extents_t mExtents;
90
  cairo_text_extents_t mExtents;
92
  nsCOMPtr<nsISVGGlyphMetricsSource> mSource;
91
  nsCOMPtr<nsISVGGlyphMetricsSource> mSource;
93
};
92
};
Lines 98-106 Link Here
98
// implementation:
97
// implementation:
99
98
100
nsSVGCairoGlyphMetrics::nsSVGCairoGlyphMetrics(nsISVGGlyphMetricsSource *src)
99
nsSVGCairoGlyphMetrics::nsSVGCairoGlyphMetrics(nsISVGGlyphMetricsSource *src)
101
  : mFont(NULL), mSource(src)
100
  : mSource(src)
102
{
101
{
103
  mCT = cairo_create();
102
  mCT = cairo_create(0);
104
}
103
}
105
104
106
nsSVGCairoGlyphMetrics::~nsSVGCairoGlyphMetrics()
105
nsSVGCairoGlyphMetrics::~nsSVGCairoGlyphMetrics()
Lines 203-211 Link Here
203
  nsAutoString text;
202
  nsAutoString text;
204
  mSource->GetCharacterData(text);
203
  mSource->GetCharacterData(text);
205
  cairo_text_extents(mCT,
204
  cairo_text_extents(mCT,
206
                     (unsigned char *)NS_ConvertUCS2toUTF8(Substring(text,
205
                     NS_ConvertUCS2toUTF8(Substring(text,
207
                                                                     charoffset,
206
                                                    charoffset,
208
                                                                     count)).get(),
207
                                                    count)).get(),
209
                     &extents);
208
                     &extents);
210
209
211
  
210
  
Lines 255-261 Link Here
255
  mSource->GetCharacterData(text);
254
  mSource->GetCharacterData(text);
256
  glyph.index = text[charnum];
255
  glyph.index = text[charnum];
257
256
258
  cairo_set_font(mCT, mFont);
257
  SelectFont(mCT);
259
  cairo_glyph_extents(mCT, &glyph, 1, &extent);
258
  cairo_glyph_extents(mCT, &glyph, 1, &extent);
260
259
261
  nsCOMPtr<nsIDOMSVGRect> rect = do_CreateInstance(NS_SVGRECT_CONTRACTID);
260
  nsCOMPtr<nsIDOMSVGRect> rect = do_CreateInstance(NS_SVGRECT_CONTRACTID);
Lines 285-298 Link Here
285
  }
284
  }
286
285
287
  if (updatemask & nsISVGGlyphMetricsSource::UPDATEMASK_FONT) {
286
  if (updatemask & nsISVGGlyphMetricsSource::UPDATEMASK_FONT) {
288
    if (mFont) {
289
      // don't delete mFont because we're just pointing at the ctx copy
290
      mFont = NULL;
291
    }
292
    *_retval = PR_TRUE;
287
    *_retval = PR_TRUE;
293
  }
288
  }
294
289
295
  if (!mFont) {
290
    SelectFont(mCT);
291
292
    nsAutoString text;
293
    mSource->GetCharacterData(text);
294
    cairo_text_extents(mCT, 
295
                       NS_ConvertUCS2toUTF8(text).get(),
296
                       &mExtents);
297
  
298
  return NS_OK;
299
}
300
301
NS_IMETHODIMP_(void)
302
nsSVGCairoGlyphMetrics::SelectFont(cairo_t *ctx)
303
{
296
    nsFont font;
304
    nsFont font;
297
    mSource->GetFont(&font);
305
    mSource->GetFont(&font);
298
      
306
      
Lines 313-319 Link Here
313
321
314
    if (font.weight % 100 == 0) {
322
    if (font.weight % 100 == 0) {
315
      if (font.weight >= 600)
323
      if (font.weight >= 600)
316
	      weight = CAIRO_FONT_WEIGHT_BOLD;
324
        weight = CAIRO_FONT_WEIGHT_BOLD;
317
    } else if (font.weight % 100 < 50) {
325
    } else if (font.weight % 100 < 50) {
318
      weight = CAIRO_FONT_WEIGHT_BOLD;
326
      weight = CAIRO_FONT_WEIGHT_BOLD;
319
    }
327
    }
Lines 321-342 Link Here
321
    nsString family;
329
    nsString family;
322
    font.GetFirstFamily(family);
330
    font.GetFirstFamily(family);
323
    char *f = ToNewCString(family);
331
    char *f = ToNewCString(family);
324
    cairo_select_font(mCT, f, slant, weight);
332
    cairo_select_font_face(ctx, f, slant, weight);
325
    free(f);
333
    nsMemory::Free(f);
326
    mFont = cairo_get_font(mCT);
327
334
328
    nsCOMPtr<nsIPresContext> presContext;
335
    nsCOMPtr<nsIPresContext> presContext;
329
    mSource->GetPresContext(getter_AddRefs(presContext));
336
    mSource->GetPresContext(getter_AddRefs(presContext));
330
    float pxPerTwips;
337
    float pxPerTwips;
331
    pxPerTwips = presContext->TwipsToPixels();
338
    pxPerTwips = presContext->TwipsToPixels();
332
    cairo_scale_font(mCT, font.size*pxPerTwips);
339
    cairo_set_font_size(ctx, font.size*pxPerTwips);
333
 
334
    nsAutoString text;
335
    mSource->GetCharacterData(text);
336
    cairo_text_extents(mCT, 
337
                       (unsigned char*)NS_ConvertUCS2toUTF8(text).get(),
338
                       &mExtents);
339
  }
340
  
341
  return NS_OK;
342
}
340
}
(-)mozilla/layout/svg/renderer/src/cairo/nsSVGCairoGlyphGeometry.cpp.orig (-13 / +9 lines)
Lines 164-176 Link Here
164
	return NS_ERROR_FAILURE;
164
	return NS_ERROR_FAILURE;
165
  }
165
  }
166
166
167
  cairo_font_t *font = metrics->GetFont();
167
  metrics->SelectFont(ctx);
168
168
169
  /* save/pop the state so we don't screw up the xform */
169
  /* save/pop the state so we don't screw up the xform */
170
  cairo_save(ctx);
170
  cairo_save(ctx);
171
171
172
  cairo_set_font(ctx, font);
173
174
  GetGlobalTransform(ctx);
172
  GetGlobalTransform(ctx);
175
173
176
  float x,y;
174
  float x,y;
Lines 212-218 Link Here
212
      
210
      
213
      nsAutoString text;
211
      nsAutoString text;
214
      mSource->GetCharacterData(text);
212
      mSource->GetCharacterData(text);
215
      cairo_show_text(ctx, (unsigned char*)NS_ConvertUCS2toUTF8(text).get());
213
      cairo_show_text(ctx, (const char*)NS_ConvertUCS2toUTF8(text).get());
216
  }
214
  }
217
215
218
  if (hasStroke) {
216
  if (hasStroke) {
Lines 277-283 Link Here
277
275
278
    nsAutoString text;
276
    nsAutoString text;
279
    mSource->GetCharacterData(text);
277
    mSource->GetCharacterData(text);
280
    cairo_text_path(ctx, (unsigned char*)NS_ConvertUCS2toUTF8(text).get());
278
    cairo_text_path(ctx, NS_ConvertUCS2toUTF8(text).get());
281
    cairo_stroke(ctx);
279
    cairo_stroke(ctx);
282
  }
280
  }
283
281
Lines 319-334 Link Here
319
	return NS_ERROR_FAILURE;
317
	return NS_ERROR_FAILURE;
320
  }
318
  }
321
319
322
  cairo_font_t *font = metrics->GetFont();
320
  cairo_t *ctx = cairo_create(0);
323
321
324
  cairo_t *ctx = cairo_create();
322
  metrics->SelectFont(ctx);
325
  cairo_set_font(ctx, font);
326
323
327
  GetGlobalTransform(ctx);
324
  GetGlobalTransform(ctx);
328
  nsAutoString text;
325
  nsAutoString text;
329
  mSource->GetCharacterData(text);
326
  mSource->GetCharacterData(text);
330
  cairo_text_path(ctx, (unsigned char*)NS_ConvertUCS2toUTF8(text).get());
327
  cairo_text_path(ctx, NS_ConvertUCS2toUTF8(text).get());
331
  cairo_default_matrix(ctx);
328
  cairo_identity_matrix(ctx);
332
  *_retval = cairo_in_fill(ctx, x, y);
329
  *_retval = cairo_in_fill(ctx, x, y);
333
  cairo_destroy(ctx);
330
  cairo_destroy(ctx);
334
331
Lines 363-369 Link Here
363
  ctm->GetF(&val);
360
  ctm->GetF(&val);
364
  m[5] = val;
361
  m[5] = val;
365
362
366
  cairo_matrix_t *matrix = cairo_matrix_create();
363
  cairo_matrix_t matrix = {m[0], m[1], m[2], m[3], m[4], m[5]};
367
  cairo_matrix_set_affine(matrix, m[0], m[1], m[2], m[3], m[4], m[5]);
364
  cairo_set_matrix(ctx, &matrix);
368
  cairo_concat_matrix(ctx, matrix);
369
}
365
}
(-)mozilla/layout/svg/renderer/src/cairo/nsSVGCairoPathBuilder.cpp.orig (-1 / +1 lines)
Lines 154-160 Link Here
154
  const double radPerDeg = pi/180.0;
154
  const double radPerDeg = pi/180.0;
155
155
156
  double x1=0.0, y1=0.0;
156
  double x1=0.0, y1=0.0;
157
  cairo_get_point(mCR, &x1, &y1);
157
  cairo_get_current_point(mCR, &x1, &y1);
158
158
159
  // 1. Treat out-of-range parameters as described in
159
  // 1. Treat out-of-range parameters as described in
160
  // http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
160
  // http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes

Return to bug 98828