Skip to content
Snippets Groups Projects
FXGradientBar.rb 9.96 KiB
Newer Older
  • Learn to ignore specific revisions
  • module Fox
      #
      # An FXGradientBar widget is defined in part by its array of "segments",
      # each of which is an FXGradient instance. An FXGradient instance defines
      # the properties of one segment, namely, the lower, middle and upper
      # values (all Floats); the lower and upper color values; and the blending
      # mode for the segment.
      #
      class FXGradient
        # Lower value [Float]
        attr_accessor :lower
        
        # Middle value [Float]
        attr_accessor :middle
        
        # Upper value [Float]
        attr_accessor :upper
        
        # Lower color [FXColor]
        attr_accessor :lowerColor
        
        # Upper color [FXColor]
        attr_accessor :upperColor
        
        # Blend mode [Integer]
        attr_accessor :blend
      end
    
      #
      # The FXGradientBar is a control that is used to edit color gradient,
      # such as used in texture mapping and shape filling.
      #
      # === Events
      #
      # The following messages are sent by FXGradientBar to its target:
      #
      # +SEL_LEFTBUTTONPRESS+::	sent when the left mouse button goes down; the message data is an FXEvent instance.
      # +SEL_LEFTBUTTONRELEASE+::	sent when the left mouse button goes up; the message data is an FXEvent instance.
      # +SEL_CHANGED+::		sent when anything about a segment changes; the message data is an integer indicating the segment number
      # +SEL_SELECTED+::		sent when one or more segments are selected.
      # +SEL_DESELECTED+::		sent when one or more segments are deselected.
      #
      # === Gradient bar orientation
      #
      # +GRADIENTBAR_HORIZONTAL+::		Gradient bar shown horizontally
      # +GRADIENTBAR_VERTICAL+::		Gradient bar shown vertically
      # +GRADIENTBAR_NO_CONTROLS+::		No controls shown
      # +GRADIENTBAR_CONTROLS_TOP+::	Controls on top
      # +GRADIENTBAR_CONTROLS_BOTTOM+::	Controls on bottom
      # +GRADIENTBAR_CONTROLS_LEFT+::	Controls on left
      # +GRADIENTBAR_CONTROLS_RIGHT+::	Controls on right
      #
      # === Blend modes
      #
      # +GRADIENT_BLEND_LINEAR+::		Linear blend
      # +GRADIENT_BLEND_POWER+::		Power law blend
      # +GRADIENT_BLEND_SINE+::		Sine blend
      # +GRADIENT_BLEND_INCREASING+::	Quadratic increasing blend
      # +GRADIENT_BLEND_DECREASING+::	Quadratic decreasing blend
      #
      # === Message identifiers
      #
      # +ID_LOWER_COLOR+::			write me
      # +ID_UPPER_COLOR+::			write me
      # +ID_BLEND_LINEAR+::			write me
      # +ID_BLEND_POWER+::			write me
      # +ID_BLEND_SINE+::			write me
      # +ID_BLEND_INCREASING+::		write me
      # +ID_BLEND_DECREASING+::		write me
      # +ID_RECENTER+::			write me
      # +ID_SPLIT+::			write me
      # +ID_MERGE+::		 	write me
      # +ID_UNIFORM+::			write me
      #
      class FXGradientBar < FXFrame
      
        #
        # Gradient bar style, some combination of +GRADIENTBAR_HORIZONTAL+,
        # +GRADIENTBAR_VERTICAL+, +GRADIENTBAR_NO_CONTROLS+,
        # +GRADIENTBAR_CONTROLS_TOP+, +GRADIENTBAR_CONTROLS_BOTTOM+,
        # +GRADIENTBAR_CONTROLS_LEFT+ and +GRADIENTBAR_CONTROLS_RIGHT+.
        #
        attr_accessor :barStyle
        
        # Selection color [FXColor]
        attr_accessor :selectColor
        
        # Status line help text [String]
        attr_accessor :helpText
        
        # Tool tip text [String]
        attr_accessor :tipText
    
        #
        # Return an initialized FXGradientBar instance.
        #
        def initialize(p, target=nil, selector=0, opts=FRAME_NORMAL, x=0, y=0, width=0, height=0, padLeft=DEFAULT_PAD, padRight=DEFAULT_PAD, padTop=DEFAULT_PAD, padBottom=DEFAULT_PAD) # :yields: theGradientBar
        end
        
        #
        # Return the zero-based index of the segment containing location (_x_, _y_).
        # Returns -1 if no matching segment was found.
        #
        def getSegment(x, y); end
    
        #
        # Return the grip in segment _seg_ which is closest to location (_x_, _y_),
        # one of +GRIP_LOWER+, +GRIP_SEG_LOWER+, +GRIP_MIDDLE+, +GRIP_SEG_UPPER+,
        # +GRIP_UPPER+ or +GRIP_NONE+.
        #
        def getGrip(seg, x, y); end
    
        # Return the number of segments
        def numSegments(); end
    
        #
        # Replace the current gradient segments with _segments_, an array of
        # FXGradient instances.
        #
        def gradients=(segments); end
    
        #
        # Return a reference to the array of gradient segments (an array of
        # FXGradient instances).
        #
        def gradients(); end
    
        #
        # Change current segment to _index_. Use an _index_ of -1 to indicate that there
        # is no current segment.
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after the current segment is changed.
        # Raises IndexError if _index_ is out of bounds.
        # 
        def setCurrentSegment(index, notify=false); end
    
        #
        # Return the index of the current segment, or -1 if there is no current segment.
        #
        def getCurrentSegment(); end
    
        #
        # Change anchor segment to _seg_.
        # Use a _seg_ value of -1 to indicate that there is no anchor segment.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def anchorSegment=(seg); end
    
        #
        # Return the index of the anchor segment, or -1 if there is no anchor segment.
        #
        def anchorSegment(); end
    
        #
        # Select segment(s) _fm_ through _to_ and return +true+ if the selected range
        # is different than it was.
        # If _notify_ is +true+, a +SEL_SELECTED+ message is sent to the gradient bar's
        # message target after the current segment is changed.
        # Raises ArgumentError if _fm_ is greater than _to_, and
        # IndexError if either _fm_ or _to_ is out of bounds.
        #
        def selectSegments(fm, to, notify=false); end
    
        #
        # Deselect all segments, and return +true+ if there was a previously
        # selected range.
        # If _notify_ is +true+, a +SEL_DESELECTED+ message is sent to the gradient bar's
        # message target after the current selection is deselected.
        #
        def deselectSegments(notify); end
    
        #
        # Return +true+ if the specified segment is selected.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def segmentSelected?(seg); end
    
        #
        # Set lower color of the segment with index _seg_.
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after the segment's lower color is changed.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def setSegmentLowerColor(seg, clr, notify=false); end
      
        #
        # Set upper color of the segment with index _seg_.
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after the segment's upper color is changed.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def setSegmentUpperColor(seg, clr, notify=false); end
    
        #
        # Return lower color of the segment with index _seg_.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def getSegmentLowerColor(seg); end
      
        #
        # Return upper color of the segment with index _seg_.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def getSegmentUpperColor(seg); end
    
        #
        # Move lower point of segment _seg_ to _val_.
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after the segment's lower value is changed.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def moveSegmentLower(seg, val, notify=false); end
    
        #
        # Move middle point of segment _seg_ to _val_.
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after the segment's middle value is changed.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def moveSegmentMiddle(seg, val, notify=false); end
    
        #
        # Move upper point of segment _seg_ to _val_.
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after the segment's upper value is changed.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def moveSegmentUpper(seg, val, notify=false); end
    
        #
        # Move segments _sglo_ to _sghi_ to new position _val_.
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after the segments' values are changed.
        #
        def moveSegments(sglo, sghi, val, notify=false); end
    
        #
        # Return lower value of segment _seg_.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def getSegmentLower(seg); end
      
        #
        # Return middle value of segment _seg_.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def getSegmentMiddle(seg); end
      
        #
        # Return upper value of segment _seg_.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def getSegmentUpper(seg); end
    
        #
        # Return a gradient ramp of size _nramp_ based on the settings for this
        # gradient bar. The return value is an array of color values corresponding
        # to this gradient bar.
        #
        def gradient(nramp); end
    
        #
        # Return the blend mode of segment _seg_, one of +GRADIENT_BLEND_LINEAR+,
        # +GRADIENT_BLEND_POWER+, +GRADIENT_BLEND_SINE+, +GRADIENT_BLEND_INCREASING+
        # or +GRADIENT_BLEND_DECREASING+.
        # Raises IndexError if _seg_ is out of bounds.
        #
        def getSegmentBlend(seg); end
    
        #
        # Split segment at the midpoint
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after this change is completed.
        #
        def splitSegments(sglo, sghi, notify=false); end
    
        #
        # Merge segments.
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after this change is completed.
        #
        def mergeSegments(sglo, sghi, notify=false); end
    
        #
        # Make segments uniformly distributed.
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after this change is completed.
        #
        def uniformSegments(sglo, sghi, notify=false); end
    
        #
        # Set the blend mode for segments _sglo_ through _sghi_ to _blend_, where
        # _blend_ is one of +GRADIENT_BLEND_LINEAR+,
        # +GRADIENT_BLEND_POWER+, +GRADIENT_BLEND_SINE+, +GRADIENT_BLEND_INCREASING+
        # or +GRADIENT_BLEND_DECREASING+.
        # If _notify_ is +true+, a +SEL_CHANGED+ message is sent to the gradient bar's
        # message target after this change is completed.
        #
        def blendSegments(sglo, sghi, blend=GRADIENT_BLEND_LINEAR, notify=false); end
      end
    end