X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=lib%2Fredact%2Fpart.rb;h=0fd4139eeca2234f8525ccbe240c3df9ffc4d93e;hb=HEAD;hp=90a29776875acd36c849cc09752062ca47403475;hpb=bf303d7901b8d8105571f66c1fa4fb7f0907bed4;p=redact.git diff --git a/lib/redact/part.rb b/lib/redact/part.rb index 90a2977..0fd4139 100644 --- a/lib/redact/part.rb +++ b/lib/redact/part.rb @@ -1,6 +1,4 @@ #-- -# $Id: part.rb 48 2005-06-08 21:38:34Z tilman $ -# # Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de) # # Permission is hereby granted, free of charge, to any person obtaining @@ -112,6 +110,7 @@ module Redact "dragable.y" => [@dragable.enabled[1], :char], "dragable.step_y" => [@dragable.step[1]], "dragable.count_y" => [@dragable.count[1]], + "dragable.events_id" => [-1], "dragable.counfine_id" => [confine_id]} # not a typo! end @@ -137,6 +136,11 @@ module Redact @type = TYPE_TEXT @effect = :none + @use_alternate_font_metrics = false + end + + def use_alternate_font_metrics=(b) + @use_alternate_font_metrics = (b == true) end protected @@ -158,7 +162,9 @@ module Redact raise(RedactError, "invalid effect value - #{@effect}") end - super.merge!({"effect" => [effect, :char]}) + super.merge!( + {"effect" => [effect, :char], + "use_alternate_font_metrics" => [@use_alternate_font_metrics, :char]}) end end @@ -202,13 +208,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) @@ -244,6 +250,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 @@ -405,7 +425,7 @@ module Redact image = EDJE.image_dir.find { |e| e.filename == im2 } if image.nil? - image = ImageDirectoryEntry.new(im2) + image = ImageDirectoryEntry.new(im, im2) EDJE.image_dir << image end @@ -425,7 +445,9 @@ module Redact end class ImageDescription < Description - attr_reader :image, :auto_rel, :tweens, :border_fill_middle + attr_reader :image, :auto_rel, :tweens, :border_fill_middle, + :fill_smooth, :fill_pos_rel, :fill_pos_abs, + :fill_rel, :fill_abs def initialize(name = "default", value = 0.0) super @@ -434,7 +456,13 @@ module Redact @tweens = Tweens.new @border = [0, 0, 0, 0] @border_fill_middle = true + @fill_smooth = true + @fill_pos_rel = [0.0, 0.0] + @fill_pos_abs = [0, 0] + @fill_rel = [1.0, 1.0] + @fill_abs = [0, 0] + @auto_rel = false end @@ -450,7 +478,7 @@ module Redact @image = EDJE.image_dir.find { |e| e.filename == im2 } if @image.nil? - @image = ImageDirectoryEntry.new(im2) + @image = ImageDirectoryEntry.new(im, im2) EDJE.image_dir << @image end @@ -470,7 +498,27 @@ module Redact end def set_border(l = 0, r = 0, t = 0, b = 0) - @border = [r, r, t, b] + @border = [l, r, t, b] + end + + def fill_smooth=(v) + @fill_smooth = (v == true) + end + + def set_fill_pos_rel(x, y) + @fill_pos_rel = [x.to_f, y.to_f] + end + + def set_fill_pos_abs(x, y) + @fill_pos_abs = [x.to_i, y.to_i] + end + + def set_fill_rel(x, y) + @fill_rel = [x.to_f, y.to_f] + end + + def set_fill_abs(x, y) + @fill_abs = [x.to_i, y.to_i] end protected @@ -484,14 +532,14 @@ module Redact "border.b" => [@border[3]], "border.no_fill" => [!@border_fill_middle], "fill.smooth" => [@fill_smooth], - "fill.pos_rel_x" => [0.0, :double], - "fill.pos_abs_x" => [0], - "fill.rel_x" => [1.0, :double], - "fill.abs_x" => [0], - "fill.pos_rel_y" => [0.0, :double], - "fill.pos_abs_y" => [0], - "fill.rel_y" => [1.0, :double], - "fill.abs_y" => [0]}) + "fill.pos_rel_x" => [@fill_pos_rel[0], :double], + "fill.pos_abs_x" => [@fill_pos_abs[0]], + "fill.rel_x" => [@fill_rel[0], :double], + "fill.abs_x" => [@fill_abs[0]], + "fill.pos_rel_y" => [@fill_pos_rel[1], :double], + "fill.pos_abs_y" => [@fill_pos_abs[1]], + "fill.rel_y" => [@fill_rel[1], :double], + "fill.abs_y" => [@fill_abs[1]]}) end private @@ -519,6 +567,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 @@ -544,6 +593,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 @@ -557,7 +610,7 @@ module Redact found = EDJE.font_dir.find { |font| font.filename == f2 } if found.nil? - EDJE.font_dir << FontDirectoryEntry.new(f2) + EDJE.font_dir << FontDirectoryEntry.new(f, f2) @font = EDJE.font_dir.last.alias else @font = found.alias @@ -594,6 +647,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],