Browse Source

Merge pull request #810 from chearon/restore-blackhole

fix #809
master
Linus Unnebäck 8 years ago
committed by GitHub
parent
commit
84d8e896b4
  1. 30
      src/CanvasRenderingContext2d.cc

30
src/CanvasRenderingContext2d.cc

@ -191,45 +191,29 @@ Context2d::~Context2d() {
void void
Context2d::save() { Context2d::save() {
if (stateno < CANVAS_MAX_STATES) {
cairo_save(_context); cairo_save(_context);
saveState();
}
/*
* Restore cairo / canvas state.
*/
void
Context2d::restore() {
cairo_restore(_context);
restoreState();
}
/*
* Save the current state.
*/
void
Context2d::saveState() {
if (stateno == CANVAS_MAX_STATES) return;
states[++stateno] = (canvas_state_t *) malloc(sizeof(canvas_state_t)); states[++stateno] = (canvas_state_t *) malloc(sizeof(canvas_state_t));
memcpy(states[stateno], state, sizeof(canvas_state_t)); memcpy(states[stateno], state, sizeof(canvas_state_t));
states[stateno]->fontDescription = pango_font_description_copy(states[stateno-1]->fontDescription); states[stateno]->fontDescription = pango_font_description_copy(states[stateno-1]->fontDescription);
state = states[stateno]; state = states[stateno];
}
} }
/* /*
* Restore state. * Restore cairo / canvas state.
*/ */
void void
Context2d::restoreState() { Context2d::restore() {
if (0 == stateno) return; if (stateno > 0) {
cairo_restore(_context);
pango_font_description_free(states[stateno]->fontDescription); pango_font_description_free(states[stateno]->fontDescription);
free(states[stateno]); free(states[stateno]);
states[stateno] = NULL; states[stateno] = NULL;
state = states[--stateno]; state = states[--stateno];
pango_layout_set_font_description(_layout, state->fontDescription); pango_layout_set_font_description(_layout, state->fontDescription);
}
} }
/* /*

Loading…
Cancel
Save