Implemented TextDescription#text_max.
[redact.git] / lib / redact / part.rb
index d285c19dba139d61cd8ce5dfcd5613b2bca2b426..5c3bd607bc6df006329ead7aad05309aaf01a48d 100644 (file)
@@ -1,6 +1,4 @@
 #--
-# $Id: part.rb 68 2005-09-19 20:03:09Z tilman $
-#
 # Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
 #
 # Permission is hereby granted, free of charge, to any person obtaining
@@ -203,13 +201,13 @@ module Redact
                attr_reader :rel, :to_id, :offset
 
                def initialize(rel, offset)
-                       @rel = [rel, rel]
+                       @rel = [rel.to_f, rel.to_f]
                        @to_id = [-1, -1]
                        @offset = [offset, offset]
                end
 
                def set_rel(x, y)
-                       @rel = [x, y]
+                       @rel = [x.to_f, y.to_f]
                end
 
                def set_offset(x, y)
@@ -245,6 +243,20 @@ module Redact
                        @color_class = ""
                end
 
+               def inherit(other)
+                       unless other.is_a?(Description)
+                               raise(ArgumentError, "Cannot inherit from description")
+                       end
+
+                       prot = ["@name", "@value"]
+
+                       (instance_variables - prot).each do |v|
+                               n = other.instance_variable_get(v.intern)
+                               n = n.dup rescue n
+                               instance_variable_set(v.intern, n)
+                       end
+               end
+
                def visible=(v)
                        @visible = (v == true)
                end
@@ -486,19 +498,19 @@ module Redact
                        @fill_smooth = (v == true)
                end
 
-               def fill_pos_rel=(x, y)
+               def set_fill_pos_rel(x, y)
                        @fill_pos_rel = [x.to_f, y.to_f]
                end
 
-               def fill_pos_abs=(x, y)
+               def set_fill_pos_abs(x, y)
                        @fill_pos_abs = [x.to_i, y.to_i]
                end
 
-               def fill_rel=(x, y)
+               def set_fill_rel(x, y)
                        @fill_rel = [x.to_f, y.to_f]
                end
 
-               def fill_abs=(x, y)
+               def set_fill_abs(x, y)
                        @fill_abs = [x.to_i, y.to_i]
                end
 
@@ -548,6 +560,7 @@ module Redact
                        @font_size = 0
                        @fit = [false, false]
                        @text_min = [false, false]
+                       @text_max = [false, false]
                        @text_align = [0.5, 0.5]
                        @text_id_source = -1
                        @text_id_text_source = -1
@@ -573,6 +586,10 @@ module Redact
                        @text_min = [x, y]
                end
 
+               def set_text_max(x = false, y = false)
+                       @text_max = [x, y]
+               end
+
                def set_text_align(x = 0.5, y = 0.5)
                        @text_align = [x, y]
                end
@@ -623,6 +640,8 @@ module Redact
                         "text.fit_y" => [@fit[1]],
                         "text.min_x" => [@text_min[0]],
                         "text.min_y" => [@text_min[1]],
+                        "text.max_x" => [@text_max[0]],
+                        "text.max_y" => [@text_max[1]],
                         "text.align.x" => [@text_align[0], :double],
                         "text.align.y" => [@text_align[1], :double],
                         "text.id_source" => [@text_id_source],