Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/model_treenode.py
diff options
context:
space:
mode:
authorNostalghia <b.vehikel@googlemail.com>2010-05-22 13:52:30 (GMT)
committer Nostalghia <b.vehikel@googlemail.com>2010-05-22 13:52:30 (GMT)
commite24ca571a8dccf66740d66e50b47862b5e28adc9 (patch)
treec65719efcd250439c45c96537f4e49654c51d145 /model_treenode.py
parent8394595622cbeb9894da9e83fd3dadacd6266cf6 (diff)
Bug fixing the mask modifier and border modifier in the rendering engine.
This is not backward compatible.
Diffstat (limited to 'model_treenode.py')
-rw-r--r--model_treenode.py71
1 files changed, 44 insertions, 27 deletions
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):