diff options
author | Nostalghia <b.vehikel@googlemail.com> | 2010-05-22 13:52:30 (GMT) |
---|---|---|
committer | Nostalghia <b.vehikel@googlemail.com> | 2010-05-22 13:52:30 (GMT) |
commit | e24ca571a8dccf66740d66e50b47862b5e28adc9 (patch) | |
tree | c65719efcd250439c45c96537f4e49654c51d145 | |
parent | 8394595622cbeb9894da9e83fd3dadacd6266cf6 (diff) |
Bug fixing the mask modifier and border modifier in the rendering engine.
This is not backward compatible.
-rw-r--r-- | ep_layer_letterpress.py | 1 | ||||
-rw-r--r-- | ep_merger_combine.py | 4 | ||||
-rw-r--r-- | ep_merger_mask.py | 4 | ||||
-rw-r--r-- | ep_modifier_border.py | 70 | ||||
-rw-r--r-- | ep_modifier_flip.py | 6 | ||||
-rw-r--r-- | ep_modifier_mask.py | 17 | ||||
-rw-r--r-- | ep_modifier_rectangulartile.py | 9 | ||||
-rw-r--r-- | ep_page_ancestors.py | 5 | ||||
-rw-r--r-- | ep_sampler_affineifs.py | 2 | ||||
-rw-r--r-- | ep_stamp_svg.py | 5 | ||||
-rw-r--r-- | exon_direction.py | 2 | ||||
-rw-r--r-- | exon_position.py | 2 | ||||
-rw-r--r-- | ka_debug.py | 29 | ||||
-rw-r--r-- | ka_importer.py | 1 | ||||
-rw-r--r-- | ka_utils.py | 2 | ||||
-rw-r--r-- | model_constraintpool.py | 6 | ||||
-rw-r--r-- | model_protozoon.py | 4 | ||||
-rw-r--r-- | model_treenode.py | 71 | ||||
-rw-r--r-- | test_model.py | 1 | ||||
-rw-r--r-- | test_suite.py | 10 |
20 files changed, 176 insertions, 75 deletions
diff --git a/ep_layer_letterpress.py b/ep_layer_letterpress.py index 97dee3c..7319cb7 100644 --- a/ep_layer_letterpress.py +++ b/ep_layer_letterpress.py @@ -193,6 +193,7 @@ class LetterPress(model_layer.Layer): self.begin_render(ctx, width, height) ctx.scale(1.0/width, 1.0/height) + ka_debug.matrix(ctx.get_matrix()) pango_ctx = pangocairo.CairoContext(ctx) points = self.sampler.get_sample_points() if len(points) > 0: diff --git a/ep_merger_combine.py b/ep_merger_combine.py index 85cdca4..d07266a 100644 --- a/ep_merger_combine.py +++ b/ep_merger_combine.py @@ -157,14 +157,18 @@ class CombineMerger(model_allele.Allele): pre: width == height """ ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) ctx.set_operator(self.left_operator) ctx.translate(-0.5, -0.5) + ka_debug.matrix(ctx.get_matrix()) ctx.scale(1.0/width, 1.0/height) + ka_debug.matrix(ctx.get_matrix()) ctx.set_source_surface(left_surface) ctx.paint_with_alpha(self.left_alphablending) # 0.5 .. 1.0 ctx.set_operator(self.right_operator) ctx.set_source_surface(right_surface) ctx.paint_with_alpha(self.right_alphablending) # 0.5 .. 1.0 + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() def explain_left(self, formater): diff --git a/ep_merger_mask.py b/ep_merger_mask.py index 89737dc..fc9478e 100644 --- a/ep_merger_mask.py +++ b/ep_merger_mask.py @@ -137,13 +137,17 @@ class MaskMerger(model_allele.Allele): pre: width == height """ ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) # draw 'left' layer using 'right' layer as mask ctx.set_operator(self.left_operator) ctx.translate(-0.5, -0.5) + ka_debug.matrix(ctx.get_matrix()) ctx.scale(1.0/width, 1.0/height) + ka_debug.matrix(ctx.get_matrix()) ctx.mask_surface(right_surface, 0, 0) ctx.set_source_surface(left_surface) ctx.paint_with_alpha(self.left_alphablending) # 0.5 .. 1.0 + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() def explain_left(self, formater): diff --git a/ep_modifier_border.py b/ep_modifier_border.py index 1d9d904..a2db1c1 100644 --- a/ep_modifier_border.py +++ b/ep_modifier_border.py @@ -21,6 +21,9 @@ import model_locus import model_allele import model_random from gettext import gettext as _ +import ka_debug +import traceback +import sys class BorderModifier(model_allele.Allele): """BorderModifier @@ -81,39 +84,40 @@ class BorderModifier(model_allele.Allele): pre: height > 0 pre: width == height """ - # paint one layer - ctx.save() - msk_surface = ctx.get_target().create_similar(cairo.CONTENT_ALPHA, - width, height) - msk_ctx = cairo.Context(msk_surface) - msk_width = msk_surface.get_width() - msk_height = msk_surface.get_height() - - # fill the whole background with an alpha value. - msk_ctx.set_operator(cairo.OPERATOR_SOURCE) - msk_ctx.set_source_rgba(1.0, 1.0, 1.0, self.border_alpha) - msk_ctx.paint() - - # fill the interior with an alpha value. - msk_ctx.set_operator(cairo.OPERATOR_SOURCE) - msk_ctx.set_source_rgba(1.0, 1.0, 1.0, 1.0-self.border_alpha) - msk_ctx.rectangle(self.border_weight*msk_width, - self.border_weight*msk_height, - (1.0-2.0*self.border_weight)*msk_height, - (1.0-2.0*self.border_weight)*msk_width) - msk_ctx.fill() - - ctx.save() - ctx.translate(-0.5, -0.5) - ctx.scale(1.0/msk_width, 1.0/msk_height) - ctx.mask_surface(msk_surface, 0.0, 0.0) - ctx.restore() - - ctx.save() - single_layer.render(task, ctx, width, height) - ctx.restore() - single_treenode.render(task, ctx, width, height) - ctx.restore() + try: + # paint one layer + msk_surface = ctx.get_target().create_similar(cairo.CONTENT_ALPHA, + width, height) + msk_ctx = cairo.Context(msk_surface) + msk_width = msk_surface.get_width() + msk_height = msk_surface.get_height() + + # fill the whole background with an alpha value. + msk_ctx.set_operator(cairo.OPERATOR_SOURCE) + msk_ctx.set_source_rgba(1.0, 1.0, 1.0, self.border_alpha) + msk_ctx.paint() + + # fill the interior with an alpha value. + msk_ctx.set_operator(cairo.OPERATOR_SOURCE) + msk_ctx.set_source_rgba(1.0, 1.0, 1.0, 1.0-self.border_alpha) + msk_ctx.rectangle(self.border_weight*msk_width, + self.border_weight*msk_height, + (1.0-2.0*self.border_weight)*msk_width, + (1.0-2.0*self.border_weight)*msk_height) + msk_ctx.fill() + ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) + single_layer.render(task, ctx, width, height) +# msk_surface.write_to_png('/dev/shm/mask_' + self.get_unique_id() + '.png') + ctx.mask_surface(msk_surface, -0.5*width, -0.5*height) + single_treenode.render(task, ctx, width, height) + ka_debug.matrix_r(ctx.get_matrix()) + ctx.restore() + except: + ka_debug.err('failed calculating [%s] [%s] [%s]' % \ + (self.get_unique_id(), sys.exc_info()[0], sys.exc_info()[1])) + traceback.print_exc(file=sys.__stderr__) + ka_debug.matrix(ctx.get_matrix()) def explain(self, task, formater, single_layer, single_treenode): diff --git a/ep_modifier_flip.py b/ep_modifier_flip.py index ac588d0..a7bc5ce 100644 --- a/ep_modifier_flip.py +++ b/ep_modifier_flip.py @@ -20,6 +20,7 @@ import model_random import model_locus import model_allele from gettext import gettext as _ +import ka_debug class FlipModifier(model_allele.Allele): """FlipModifier: Reverse the layer horizontally or vertically. @@ -81,11 +82,16 @@ class FlipModifier(model_allele.Allele): """ # paint one layer ctx.scale(self.xFlip, self.yFlip) + ka_debug.matrix(ctx.get_matrix()) ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) single_layer.render(task, ctx, width, height) + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() single_treenode.render(task, ctx, width, height) + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() def explain(self, task, formater, single_layer, single_treenode): diff --git a/ep_modifier_mask.py b/ep_modifier_mask.py index 732a5a7..75db6e4 100644 --- a/ep_modifier_mask.py +++ b/ep_modifier_mask.py @@ -106,23 +106,28 @@ class MaskModifier(model_allele.Allele): pre: height > 0 pre: width == height """ - # paint one layer masked by an linear gradient + # paint masked by an linear gradient ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) delta_x = self.direction.offset * math.cos(self.direction.radian) delta_y = self.direction.offset * math.sin(self.direction.radian) - linear = cairo.LinearGradient(self.center.x_pos + delta_x, - self.center.y_pos + delta_y, - self.center.x_pos - delta_x, - self.center.y_pos - delta_y) + linear = cairo.LinearGradient(self.center.x_pos + delta_x - 0.5, + self.center.y_pos + delta_y - 0.5, + self.center.x_pos - delta_x - 0.5, + self.center.y_pos - delta_y - 0.5) linear.add_color_stop_rgba(1.0, 1.0, 1.0, 1.0, self.alpha1) linear.add_color_stop_rgba(0.0, 0.0, 0.0, 0.0, self.alpha2) - ctx.mask(linear) +# ctx.mask(linear) ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) single_layer.render(task, ctx, width, height) + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() + ctx.mask(linear) single_treenode.render(task, ctx, width, height) + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() def explain(self, task, formater, single_layer, single_treenode): diff --git a/ep_modifier_rectangulartile.py b/ep_modifier_rectangulartile.py index d290594..75318fa 100644 --- a/ep_modifier_rectangulartile.py +++ b/ep_modifier_rectangulartile.py @@ -20,6 +20,7 @@ import model_random import model_locus import model_allele from gettext import gettext as _ +import ka_debug class RectangularTileModifier(model_allele.Allele): """RectangularTileModifier: Reverse the layer horizontally or vertically. @@ -89,15 +90,23 @@ class RectangularTileModifier(model_allele.Allele): if task.quit: return ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) ctx.translate((tix-0.5*self.x_tiles)*delta_x+0.5*delta_x, \ (tiy-0.5*self.y_tiles)*delta_y+0.5*delta_y) + ka_debug.matrix(ctx.get_matrix()) ctx.scale(delta_x, delta_y) + ka_debug.matrix(ctx.get_matrix()) ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) single_layer.render(task, ctx, width, height) + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() single_treenode.render(task, ctx, width, height) + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() def explain(self, task, formater, single_layer, single_treenode): diff --git a/ep_page_ancestors.py b/ep_page_ancestors.py index 8935bf4..c4c28c2 100644 --- a/ep_page_ancestors.py +++ b/ep_page_ancestors.py @@ -137,18 +137,23 @@ class AncestorsController(object): self._paint_connector(ctx, mx, my, x1, y1, my_parents[1]) ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) ctx.scale(1.0/_SCALE, 1.0/_SCALE) + ka_debug.matrix(ctx.get_matrix()) self._paint_next(ctx, _SCALE*x0, _SCALE*y0, my_parents[0]) self._paint_next(ctx, _SCALE*x1, _SCALE*y1, my_parents[1]) + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() if surface is not None: # ka_debug.info('(xpos, ypos): %d, %d' % (xpos, ypos)) ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) ctx.set_operator(cairo.OPERATOR_SOURCE) ctx.rectangle(xpos-width/2, ypos, width, height) ctx.clip() ctx.set_source_surface(surface, xpos-width/2, ypos) ctx.paint() # ctx.reset_clip() #TODO Required argument 'cr' not found + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() diff --git a/ep_sampler_affineifs.py b/ep_sampler_affineifs.py index b88d312..f7abd1c 100644 --- a/ep_sampler_affineifs.py +++ b/ep_sampler_affineifs.py @@ -427,7 +427,7 @@ class AffineIfsSampler(model_allele.Allele): tnumber = self._iterate() x_rel = (self.x_point - self.xmin) / x_delta y_rel = (self.y_point - self.ymin) / y_delta - #TODO dritter parameter sample_points.append( (x_rel-0.5, y_rel-0.5, tnumber) ) +#TODO dritter parameter sample_points.append( (x_rel-0.5, y_rel-0.5, tnumber) ) sample_points.append( (x_rel-0.5, y_rel-0.5) ) loop += 1 return sample_points diff --git a/ep_stamp_svg.py b/ep_stamp_svg.py index dc37ed4..51e6536 100644 --- a/ep_stamp_svg.py +++ b/ep_stamp_svg.py @@ -23,6 +23,7 @@ import model_allele import model_constraintpool import ka_importer from gettext import gettext as _ +import ka_debug STAMPREPEATER_CONSTRAINT = 'stamprepaeterconstraint' THEME_CONSTRAINT = 'themeconstraint' @@ -166,11 +167,15 @@ class SvgStamp(model_allele.Allele): (state + rx) % len(self.mapping)] % len(svg_image_list)] ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) svg = rsvg.Handle(file=svg_pathname) ctx.translate(-self.dw/2.0+point[0], -self.dh/2.0+point[1]) + ka_debug.matrix(ctx.get_matrix()) ctx.scale(self.dw/100, self.dh/100) + ka_debug.matrix(ctx.get_matrix()) svg.render_cairo(ctx) svg.close() + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() def explain(self): diff --git a/exon_direction.py b/exon_direction.py index dd911d7..c18f868 100644 --- a/exon_direction.py +++ b/exon_direction.py @@ -23,6 +23,7 @@ import model_random import model_constraintpool import model_locus import model_allele +import ka_debug EPSILON = 0.00001 DIRECTION_CONSTRAINT = 'directionconstraint' @@ -108,6 +109,7 @@ class Direction(model_allele.Allele): surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) ctx = cairo.Context(surface) ctx.scale(width, height) + ka_debug.matrix(ctx.get_matrix()) # paint background ctx.set_operator(cairo.OPERATOR_OVER) ctx.set_source_rgb(1.0, 1.0, 1.0) diff --git a/exon_position.py b/exon_position.py index f937a3c..12c0976 100644 --- a/exon_position.py +++ b/exon_position.py @@ -22,6 +22,7 @@ import model_random import model_constraintpool import model_locus import model_allele +import ka_debug EPSILON = 0.00001 POSITION_CONSTRAINT = 'positionconstraint' @@ -107,6 +108,7 @@ class Position(model_allele.Allele): surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) ctx = cairo.Context(surface) ctx.scale(width, height) + ka_debug.matrix(ctx.get_matrix()) # paint background ctx.set_operator(cairo.OPERATOR_OVER) ctx.set_source_rgb(1.0, 1.0, 1.0) diff --git a/ka_debug.py b/ka_debug.py index 9456259..03ed3f1 100644 --- a/ka_debug.py +++ b/ka_debug.py @@ -18,6 +18,7 @@ import logging import os import time +import math #Add support for design by contract to all classes except blacklist. @@ -32,6 +33,7 @@ _try_once, locale_testrun = False, False if os.path.exists(DEBUG_ACTIVITY_PATH): locale_testrun = True _try_once = True + _try_once = False is_DbC_activated = False @@ -54,6 +56,33 @@ def info(msg): _logger.debug(msg) # _logger.debug(caller()) +def _matrix(mtrx, context): + """Log an info message.""" + xx, yx, xy, yy, x0, y0 = mtrx + det = xx * yy + yx * xy + if math.fabs(det) < (0.004 ** 2): + global _last_clock, locale_testrun + clock_now = time.clock() + if locale_testrun: + print 'matrix', int((time.time()-_start_time)*1000), \ + int((clock_now-_last_clock)*1000), ':', context, mtrx, ', det=', det + _last_clock = clock_now + _avtivate_logger() + _logger.debug(mtrx) +# raise ValueError('det=' + str(det) + ', ' + str(mtrx)) + +def matrix(mtrx): + """Log an info message.""" + _matrix(mtrx, '') + +def matrix_s(mtrx): + """Log matrix after save.""" + _matrix(mtrx, 'save') + +def matrix_r(mtrx): + """Log matrix before restore.""" + _matrix(mtrx, 'restore') + def err(msg): """Log an error message.""" global _last_clock, locale_testrun diff --git a/ka_importer.py b/ka_importer.py index 18ff184..03b5835 100644 --- a/ka_importer.py +++ b/ka_importer.py @@ -164,6 +164,7 @@ def _create_icon(is_plus_sign): surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) ctx = cairo.Context(surface) ctx.scale(width, height) + ka_debug.matrix(ctx.get_matrix()) # paint background ctx.set_operator(cairo.OPERATOR_OVER) ctx.set_source_rgb(1.0, 1.0, 1.0) diff --git a/ka_utils.py b/ka_utils.py index df51e8d..91e2778 100644 --- a/ka_utils.py +++ b/ka_utils.py @@ -15,6 +15,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import cairo +import ka_debug ICON_WIDTH = ICON_HEIGHT = 48 @@ -33,6 +34,7 @@ def explain_points(head, points): surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, ICON_WIDTH, ICON_HEIGHT) ctx = cairo.Context(surface) ctx.scale(ICON_WIDTH, ICON_HEIGHT) + ka_debug.matrix(ctx.get_matrix()) # paint background ctx.set_operator(cairo.OPERATOR_OVER) ctx.set_source_rgb(1.0, 1.0, 1.0) diff --git a/model_constraintpool.py b/model_constraintpool.py index 5d0ef06..6a9e210 100644 --- a/model_constraintpool.py +++ b/model_constraintpool.py @@ -133,17 +133,17 @@ class ConstraintPool(object): def _my_defaults(self): #TODO read from persistence, provide an constraint editor -# self.set('*', 'samplertypeconstraint', ['affineifs',]) + self.set('*', 'samplertypeconstraint', ['affineifs',]) # self.set('*', 'layertypeconstraint', ['filledspline', ]) # self.set('*', 'layertypeconstraint', ['lca', ]) # self.set('*', 'modifiertypeconstraint', ['flip', ]) # self.set('*', 'modifiertypeconstraint', ['border', ]) # self.set('*', 'stamptypeconstraint', ['filledcyclic',]) -# self.set('*', 'layertypeconstraint', ['markovchain', ]) + self.set('*', 'layertypeconstraint', ['markovchain', ]) # self.set('*', 'samplertypeconstraint', ['randomwalk',]) # self.set('*', 'layertypeconstraint', ['referencepattern', ]) # self.set('*', 'modifiertypeconstraint', ['border', ]) - + self.set('*', 'modifiertypeconstraint', ['mask', ]) # self.set('*', 'layertypeconstraint', ['quadtree', ]) # self.set('*', 'colorconstraint', ['colorconstraint_none', ]) # self.set('*', 'layertypeconstraint', ['voronoidiagram', 'markovchain', ]) diff --git a/model_protozoon.py b/model_protozoon.py index b63195f..bc366bc 100644 --- a/model_protozoon.py +++ b/model_protozoon.py @@ -91,8 +91,11 @@ class Protozoon(model_allele.Allele): pre: width == height """ ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) ctx.scale(width, height) + ka_debug.matrix(ctx.get_matrix()) ctx.translate(0.5, 0.5) + ka_debug.matrix(ctx.get_matrix()) # paint background # ctx.set_operator(cairo.OPERATOR_CLEAR) @@ -102,6 +105,7 @@ class Protozoon(model_allele.Allele): ctx.paint() self.treenode.render(task, ctx, width, height) + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() def explain(self, task, formater): diff --git a/model_treenode.py b/model_treenode.py index 3f11417..917ec64 100644 --- a/model_treenode.py +++ b/model_treenode.py @@ -25,6 +25,9 @@ import model_locus import model_allele import exon_color from gettext import gettext as _ +from symbol import try_stmt +import sys +import traceback LAYERTYPE_CONSTRAINT = 'layertypeconstraint' NUMBER_OF_LAYERS_CONSTRAINT = 'layernumberofconstraint' @@ -254,40 +257,49 @@ class TreeNode(model_allele.Allele): # (task.work_for, self.path)) return #!! time.sleep(0.001) - ctx.save() - - if (self.left_treenode is None) and (self.right_treenode is None): - # I am a leaf, use my own layer painting strategy - self.layer.render(task, ctx, width, height) - elif (self.left_treenode is not None) and (self.right_treenode is not None): - # merge 'left' and 'right' tree node - left_surface, left_ctx = self._prepare_surface(ctx, width, height, \ - self.left_background) - self.left_treenode.render(task, left_ctx, width, height) -# left_surface.write_to_png('/dev/shm/left_' + self.left_treenode.get_unique_id() + '.png') - right_surface, right_ctx = self._prepare_surface(ctx, width, height, \ - self.right_background) - right_ctx.set_operator(cairo.OPERATOR_SOURCE) - self.right_treenode.render(task, right_ctx, width, height) -# right_surface.write_to_png('/dev/shm/right_' + self.right_treenode.get_unique_id() + '.png') - - if not task.quit: - self.merger.merge_layers(left_surface, right_surface, \ - ctx, width, height) - elif (self.left_treenode is not None) and (self.right_treenode is None): - self.modifier.render_single_layer(task, self.layer, self.left_treenode, - ctx, width, height) - elif (self.left_treenode is None) and (self.right_treenode is not None): - self.modifier.render_single_layer(task, self.layer, self.right_treenode, - ctx, width, height) - ctx.restore() + try: + ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) + if (self.left_treenode is None) and (self.right_treenode is None): + # I am a leaf, use my own layer painting strategy + self.layer.render(task, ctx, width, height) + elif (self.left_treenode is not None) and (self.right_treenode is not None): + # merge 'left' and 'right' tree node + left_surface, left_ctx = self._prepare_surface(ctx, width, height, \ + self.left_background) + self.left_treenode.render(task, left_ctx, width, height) + # left_surface.write_to_png('/dev/shm/left_' + self.left_treenode.get_unique_id() + '.png') + right_surface, right_ctx = self._prepare_surface(ctx, width, height, \ + self.right_background) + right_ctx.set_operator(cairo.OPERATOR_SOURCE) + self.right_treenode.render(task, right_ctx, width, height) + # right_surface.write_to_png('/dev/shm/right_' + self.right_treenode.get_unique_id() + '.png') + + if not task.quit: + self.merger.merge_layers(left_surface, right_surface, \ + ctx, width, height) + elif (self.left_treenode is not None) and (self.right_treenode is None): + self.modifier.render_single_layer(task, self.layer, self.left_treenode, + ctx, width, height) + elif (self.left_treenode is None) and (self.right_treenode is not None): + self.modifier.render_single_layer(task, self.layer, self.right_treenode, + ctx, width, height) + ka_debug.matrix_r(ctx.get_matrix()) + ctx.restore() + except: + ka_debug.err('failed calculating [%s] [%s] [%s]' % \ + (self.get_unique_id(), sys.exc_info()[0], sys.exc_info()[1])) + traceback.print_exc(file=sys.__stderr__) + ka_debug.matrix(ctx.get_matrix()) def _prepare_surface(self, ctx, width, height, background): new_surface = ctx.get_target().create_similar(cairo.CONTENT_COLOR_ALPHA, width, height) new_ctx = cairo.Context(new_surface) new_ctx.scale(width, height) + ka_debug.matrix(new_ctx.get_matrix()) new_ctx.translate(0.5, 0.5) + ka_debug.matrix(new_ctx.get_matrix()) new_ctx.set_operator(cairo.OPERATOR_SOURCE) rgba = background.rgba new_ctx.set_source_rgba(rgba[0], rgba[1], rgba[2], rgba[3]) @@ -335,6 +347,7 @@ class TreeNode(model_allele.Allele): if self.right_treenode is not None: self.modifier.explain(task, formater, self.layer, self.right_treenode) + self._preview(task, self.layer, formater, width, height) formater.end_list() #ex formater.end_list() @@ -343,11 +356,15 @@ class TreeNode(model_allele.Allele): surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) ctx = cairo.Context(surface) ctx.scale(width, height) + ka_debug.matrix(ctx.get_matrix()) ctx.translate(0.5, 0.5) + ka_debug.matrix(ctx.get_matrix()) TreeNode._paint_checker_board(ctx) ctx.save() + ka_debug.matrix_s(ctx.get_matrix()) source.render(task, ctx, width, height) formater.surface_item(surface, 'Tree node ' + self.path, self.path) + ka_debug.matrix_r(ctx.get_matrix()) ctx.restore() def copy(self): diff --git a/test_model.py b/test_model.py index b345d6a..28d877c 100644 --- a/test_model.py +++ b/test_model.py @@ -485,6 +485,7 @@ class TestKandidModel(unittest.TestCase): surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height) ctx = cairo.Context(surface) ctx.scale(width, height) + ka_debug.matrix(ctx.get_matrix()) # paint background ctx.set_operator(cairo.OPERATOR_SOURCE) ctx.set_source_rgb(0.0, 0.0, 0.0) diff --git a/test_suite.py b/test_suite.py index b9e3cf8..1d9d1e8 100644 --- a/test_suite.py +++ b/test_suite.py @@ -34,10 +34,10 @@ gtk.gdk.threads_init() alltests = unittest.TestSuite((\ unittest.makeSuite(test_buildingblocks.TestKandidBuildingBlocks), \ unittest.makeSuite(test_layer.TestKandidLayer), \ - unittest.makeSuite(test_exporter.TestKandidExporter), \ - unittest.makeSuite(test_status.TestKandidStatus), \ - unittest.makeSuite(test_history.TestKandidHistory), \ - unittest.makeSuite(test_pages.TestKandidPages), \ - unittest.makeSuite(test_model.TestKandidModel), \ +# unittest.makeSuite(test_exporter.TestKandidExporter), \ +# unittest.makeSuite(test_status.TestKandidStatus), \ +# unittest.makeSuite(test_history.TestKandidHistory), \ +# unittest.makeSuite(test_pages.TestKandidPages), \ +# unittest.makeSuite(test_model.TestKandidModel), \ )) unittest.TextTestRunner(verbosity=2).run(alltests) |