#--
-# $Id: part.rb 19 2005-04-02 22:05:24Z tilman $
+# $Id: part.rb 32 2005-04-24 09:18:07Z tilman $
#
# Copyright (c) 2005 Tilman Sauerbeck (tilman at code-monkey de)
#
include Comparable
- attr_reader :collection, :id, :name, :dragable, :clip
- attr_accessor :mouse_events, :repeat_events
+ attr_reader :collection, :id, :name, :dragable, :clip,
+ :mouse_events, :repeat_events
def initialize(collection, id, name)
@collection = collection
@id <=> b.id
end
+ def mouse_events=(val)
+ @mouse_events = (val == true)
+ end
+
+ def repeat_events=(val)
+ @repeat_events = (val == true)
+ end
+
def clip=(part)
- if self == part
+ if part == self
raise(ArgumentError, "cannot clip part to itself")
- elsif part.nil?
- @clip = nil
- elsif part.collection != @collection
- raise(ArgumentError, "parts' collections not identical")
+ elsif !part.nil? && part.collection != @collection
+ raise(ArgumentError, "items not in the same collection")
else
@clip = part
end
end
class TextPart < Part
- EFFECT_NONE = 0
- EFFECT_PLAIN = 1
- EFFECT_OUTLINE = 2
- EFFECT_SOFT_OUTLINE = 3
- EFFECT_SHADOW = 4
- EFFECT_SOFT_SHADOW = 5
- EFFECT_OUTLINE_SHADOW = 6
- EFFECT_OUTLINE_SOFT_SHADOW = 7
-
attr_accessor :effect
def initialize(collection, id, name)
super
@type = TYPE_TEXT
- @effect = EFFECT_NONE
+ @effect = :none
end
protected
end
def to_eet_properties
- super.merge!({"effect" => [@effect, :char]})
+ effect = case @effect
+ when :none: 0
+ when :plain: 1
+ when :outline: 2
+ when :soft_outline: 3
+ when :shadow: 4
+ when :soft_shadow: 5
+ when :outline_shadow: 6
+ when :outline_soft_shadow: 7
+ else
+ raise(RedactError, "invalid effect value - #{@effect}")
+ end
+
+ super.merge!({"effect" => [effect, :char]})
end
end
end
def confine=(part)
- if part == self
+ if part == @part
raise(ArgumentError, "cannot confine part to itself")
elsif !part.nil? && part.collection != @part.collection
- raise(ArgumentError, "parts' collections not identical")
+ raise(ArgumentError, "items not in the same collection")
else
@confine = part
end
end
def to=(part)
- @to_id = [].fill(part.nil? ? -1 : part.id, 0..1)
+ self.set_to(part)
+ end
+
+ def set_to(part_x, part_y = part_x)
+ @to_id = [part_x.nil? ? -1 : part_x.id,
+ part_y.nil? ? -1 : part_y.id]
end
end
class Description
- attr_reader :rel, :aspect, :step
- attr_accessor :visible, :aspect_preference, :color_class
+ attr_reader :rel, :aspect, :step, :visible, :color_class
+ attr_accessor :aspect_preference
def initialize(name = "default", value = 0.0)
@name = name.to_str.dup.freeze
@color_class = ""
end
+ def visible=(v)
+ @visible = (v == true)
+ end
+
+ def color_class=(v)
+ @color_class = v.to_str.dup
+ end
+
def set_step(x = 0, y = 0)
@step = [x, y]
end
pairs.map { |p| p.hex }
end
- def map_aspect_preference
- case @aspect_preference
- when :none
- 0
- when :vertical
- 1
- when :horizontal
- 2
- when :both
- 3
- else
- raise(RedactError, "invalid aspect preference value - " +
- @aspect_preference.to_s)
- end
- end
-
def to_eet_name
"Edje_Part_Description"
end
def to_eet_properties
+ asp_pref = case @aspect_preference
+ when :none: 0
+ when :vertical: 1
+ when :horizontal: 2
+ when :both: 3
+ else
+ raise(RedactError, "invalid aspect preference value - " +
+ @aspect_preference.to_s)
+ end
+
{"state.name" => [@name],
"state.value" => [@value, :double],
"visible" => [@visible],
"step.y" => [@step[1]],
"aspect.min" => [@aspect[0], :double],
"aspect.max" => [@aspect[1], :double],
- "aspect.prefer" => [map_aspect_preference, :char],
+ "aspect.prefer" => [asp_pref, :char],
"rel1.relative_x" => [@rel[0].rel[0], :double],
"rel1.relative_y" => [@rel[0].rel[1], :double],
"rel1.offset_x" => [@rel[0].offset[0]],
"border.r" => [0],
"border.t" => [0],
"border.b" => [0],
+ "border.no_fill" => [false],
"fill.smooth" => [true],
"fill.pos_rel_x" => [0.0, :double],
"fill.pos_abs_x" => [0],
@id = image.id
end
+ protected
def to_eet_name
"Edje_Part_Image_Id"
end
end
class ImageDescription < Description
- attr_reader :image, :auto_rel, :tweens
+ attr_reader :image, :auto_rel, :tweens, :border_fill_middle
def initialize(name = "default", value = 0.0)
super
@image = nil
@tweens = Tweens.new
@border = [0, 0, 0, 0]
+ @border_fill_middle = true
@fill_smooth = true
@auto_rel = false
end
+ def border_fill_middle=(var)
+ @border_fill_middle = (var == true)
+ end
+
def image=(im)
return if !@image.nil? && im == @image.filename
@border = [r, r, t, b]
end
+ protected
def to_eet_properties
super.merge!(
{"image.id" => [@image.nil? ? -1 : @image.id],
"border.r" => [@border[1]],
"border.t" => [@border[2]],
"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],
end
class TextDescription < Description
- attr_reader :font
- attr_accessor :text, :font_size, :text_class
+ attr_reader :font, :text, :font_size, :text_class
def initialize(name = "default", value = 0.0)
super
@text_id_text_source = -1
end
+ def text=(v)
+ @text = v.to_str.dup
+ end
+
+ def font_size=(v)
+ @font_size = v.to_int
+ end
+
+ def text_class=(v)
+ @text_class = v.to_str.dup
+ end
+
def set_fit(x = false, y = false)
@fit = [x, y]
end
end
def font=(f)
- md = f.to_str.match(/.*\.ttf/)
+ f = f.to_str.strip
+ md = f.match(/.*\.ttf$/)
unless md.nil?
found = EDJE.font_dir.find { |font| font.filename == f }
if found.nil?
end
end
- @font = f.dup
+ @font = f
end
def outline_color=(c)
@shadow_color = parse_hex_color(c)
end
+ protected
def to_eet_properties
super.merge!(
{"color2.r" => [@outline_color[0], :char],