# Style is eveything relzted to the look and feel of a widget, # That is the foreground, background, border colors as well as # the font module Zori class Style # Style colors is a class that groups the colors of the style class Colors attr_accessor :foreground attr_accessor :background attr_accessor :border def initialize(fg = nil, bg = nil, br = nil, hi = nil, sh = nil) @foreground = fg || [255,255,255] @background = bg || [0,0,128] # PaleGreen # GoldenWhisp # PaleGoldenRod @border = br || [191,191,191] end # Returns a deep copy of self def deep_copy() return self.class.new(@text, @background, @border, @highlight, @shadow) end end # A spacer is used to leave space in the given direction between widgets # or between a widget and it's content class Spacers attr_accessor :top attr_accessor :left attr_accessor :bottom attr_accessor :right def initialize(t = 0, l = nil, b = nil, r = nil) @top = t || 0 @bottom = b || @top @left = l || @top @right = r || @left end # Returns a deep copy of self def deep_copy() return self.class.new(@top, @left, @bottom, @right) end end attr_reader :font attr_reader :colors attr_reader :margin attr_reader :padding attr_accessor :alignment # DEFAULT_FONTNAME = 'dejavuserif' DEFAULT_MARGIN = 4 DEFAULT_PADDING = 4 DEFAULT_ALIGNMENT = :left DEFAULT_BACKGROUND = 'green.png' def self.font_dir return '/font' end def initialize(font = nil, colors_in = nil, background = DEFAULT_BACKGROUND) @font = font @colors = colors_in || Zori::Style::Colors.new @margin = DEFAULT_MARGIN @padding = DEFAULT_PADDING @alignment = DEFAULT_ALIGNMENT load_background(background) yield self if block_given? end def load_background(back) if back.is_a? String @bgimage = Zori::Hanao.load_image('ui', 'background', back) rescue nil; else @bgimage = back end end # Returns a deep copy of self def deep_copy() new_colors = self.colors.deep_copy(); return self.class.new(@font, new_colors, @bgimage) end def colors_foreground() return self.colors.foreground end def colors_highlight() return self.colors.highlight end def colors_border() return self.colors.border end # Sets the graph node object to the given Zori style. def to_graph(node) node.background_color = @colors.background node.border_color = @colors.border node.color = @colors.foreground node.margin = @margin node.border_thickness = @thickness Eruta::Graph.border_thickness_(@id, t) end def angle=(a) Eruta::Graph.angle_(@id, r, g, b, a) end def size=(size) w, h = *size Eruta::Graph.size_(@id, w, h) end def font_id=(f) Eruta::Graph.font_(@id, f) end def self.default @default ||= self.new() return @default end end # class Style end # module Zori