Codebase list ruby-fxruby / run/8a909198-7fff-4596-a78d-571f487fdb51/upstream rdoc-sources / FXGLViewer.rb
run/8a909198-7fff-4596-a78d-571f487fdb51/upstream

Tree @run/8a909198-7fff-4596-a78d-571f487fdb51/upstream (Download .tar.gz)

FXGLViewer.rb @run/8a909198-7fff-4596-a78d-571f487fdb51/upstreamraw · history · blame

module Fox
  # OpenGL Viewer Viewport
  class FXViewport
    # Viewport width [Integer]
    attr_accessor :w

    # Viewport height
    attr_accessor :h

    # World left [Float]
    attr_accessor :left

    # World right [Float]
    attr_accessor :right

    # World bottom [Float]
    attr_accessor :bottom

    # World top [Float]
    attr_accessor :top

    # World hither [Float]
    attr_accessor :hither

    # World yon [Float]
    attr_accessor :yon

    # Returns an initialized FXViewport instance
    def initialize; end
  end

  # OpenGL Light Source
  class FXLight
    # Ambient light color {FXVec4f}
    attr_accessor :ambient

    # Diffuse light color {FXVec4f}
    attr_accessor :diffuse

    # Specular light color {FXVec4f}
    attr_accessor :specular

    # Light position {FXVec4f}
    attr_accessor :position

    # Spot direction {FXVec3f}
    attr_accessor :direction

    # Spotlight exponent [Float]
    attr_accessor :exponent

    # Spotlight cutoff angle [Float]
    attr_accessor :cutoff

    # Constant attenuation factor [Float]
    attr_accessor :c_attn

    # Linear attenuation factor [Float]
    attr_accessor :l_attn

    # Quadratic attenuation factor [Float]
    attr_accessor :q_attn

    # Returns an initialized FXLight instance
    def initialize; end
  end

  # OpenGL Material Description
  class FXMaterial
    # Ambient material color {FXVec4f}
    attr_accessor :ambient

    # Diffuse material color {FXVec4f}
    attr_accessor :diffuse

    # Specular material color {FXVec4f}
    attr_accessor :specular

    # Emissive material color {FXVec4f}
    attr_accessor :emission

    # Specular shininess [Float]
    attr_accessor :shininess

    # Returns an initialized FXMaterial instance
    def initialize; end
  end

  #
  # Canvas, an area drawn by another object
  #
  # === Events
  #
  # The following messages are sent by FXGLViewer to its message target:
  #
  # +SEL_KEYPRESS+::  sent when a key goes down; the message data is an FXEvent instance.
  # +SEL_KEYRELEASE+::  sent when a key goes up; the message data is an FXEvent instance.
  # +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_MIDDLEBUTTONPRESS+:: sent when the middle mouse button goes down; the message data is an FXEvent instance.
  # +SEL_MIDDLEBUTTONRELEASE+:: sent when the middle mouse button goes up; the message data is an FXEvent instance.
  # +SEL_RIGHTBUTTONPRESS+:: sent when the right mouse button goes down; the message data is an FXEvent instance.
  # +SEL_RIGHTBUTTONRELEASE+:: sent when the right mouse button goes up; the message data is an FXEvent instance.
  # +SEL_MOTION+::  sent when the mouse pointer is moved; the message data is an FXEvent instance.
  # +SEL_MOUSEWHEEL+::  sent when the mouse wheel is spun; the message data is an FXEvent instance.
  # +SEL_CLICKED+::  sent when the mouse is single-clicked somewhere in the widget; the message data is a reference to the clicked object (possibly +nil+)
  # +SEL_DOUBLECLICKED+:: sent when the mouse is double-clicked somewhere in the widget; the message data is a reference to the clicked object (possibly +nil+)
  # +SEL_TRIPLECLICKED+:: sent when the mouse is triple-clicked somewhere in the widget; the message data is a reference to the clicked object (possibly +nil+)
  # +SEL_PICKED+::  sent when an object is picked; the message data is an FXEvent instance.
  # +SEL_SELECTED+::  sent when object(s) are selected in the viewer; the message data is an array of references to the selected objects.
  # +SEL_DESELECTED+::  sent when object(s) are deselected in the viewer; the message data is an array of references to the deselected objects.
  # +SEL_LASSOED+::  sent when a lasso-selection has been completed; the message data is an FXEvent instance.
  # +SEL_INSERTED+::  sent when the viewer receives a +SEL_INSERTED+ message.
  # +SEL_DELETED+::  sent when the viewer receives a +SEL_COMMAND+ message with the +ID_DELETE_SEL+ identifier; the message data is an array of references to the selected object(s).
  # +SEL_DRAGGED+::  sent when the selected object is dragged around in the viewer; the message data is a reference to the selected object.
  # +SEL_COMMAND+::  sent when the mouse is clicked somewhere in the widget; the message data is a reference to the clicked object (possibly +nil+)
  # +SEL_CHANGED+::  sent when the selection changes; the message data is a reference to the newly selected object (or +nil+).
  #
  # === FXGLViewer options
  #
  # +VIEWER_LIGHTING+:: Lighting is on
  # +VIEWER_FOG+:: Fog mode on
  # +VIEWER_DITHER+:: Dithering
  #
  # === Projection modes (class constants)
  #
  # +PARALLEL+:: Parallel projection
  # +PERSPECTIVE+:: Perspective projection
  #
  # === Message identifiers
  #
  # +ID_PERSPECTIVE+::  x
  # +ID_PARALLEL+::  x
  # +ID_FRONT+:: x
  # +ID_BACK+:: x
  # +ID_LEFT+:: x
  # +ID_RIGHT+:: x
  # +ID_TOP+:: x
  # +ID_BOTTOM+:: x
  # +ID_RESETVIEW+:: x
  # +ID_FITVIEW+:: x
  # +ID_TIPTIMER+:: x
  # +ID_TOP_COLOR+:: x
  # +ID_BOTTOM_COLOR+:: x
  # +ID_BACK_COLOR+:: x
  # +ID_AMBIENT_COLOR+:: x
  # +ID_LIGHT_AMBIENT+:: x
  # +ID_LIGHT_DIFFUSE+:: x
  # +ID_LIGHT_SPECULAR+:: x
  # +ID_LIGHTING+:: x
  # +ID_TURBO+:: x
  # +ID_FOG+:: x
  # +ID_DITHER+:: x
  # +ID_SCALE_X+:: x
  # +ID_SCALE_Y+:: x
  # +ID_SCALE_Z+:: x
  # +ID_DIAL_X+:: x
  # +ID_DIAL_Y+:: x
  # +ID_DIAL_Z+:: x
  # +ID_ROLL+:: x
  # +ID_PITCH+:: x
  # +ID_YAW+:: x
  # +ID_FOV+:: x
  # +ID_ZOOM+:: x
  # +ID_CUT_SEL+:: x
  # +ID_COPY_SEL+:: x
  # +ID_PASTE_SEL+:: x
  # +ID_DELETE_SEL+:: x
  # +ID_PRINT_IMAGE+:: x
  # +ID_PRINT_VECTOR+:: x
  # +ID_LASSO_ZOOM+:: x
  # +ID_LASSO_SELECT+:: x
  #
  class FXGLViewer < FXGLCanvas

    # Size of pixel in world coordinates [Float]
    attr_reader :worldPix

    # Size of pixel in model coordinates [Float]
    attr_reader :modelPix

    # The viewport for this viewer {FXViewport}
    attr_reader :viewport

    # Default object material setting {FXMaterial}
    attr_accessor :material

    # Camera field of view angle (in degrees) [Float]
    attr_accessor :fieldOfView

    # Camera zoom factor [Float]
    attr_accessor :zoom

    # Target point distance [Float]
    attr_accessor :distance

    # Current scaling factors {FXVec3f}
    attr_accessor :scale

    # Camera orientation {FXQuatf}
    attr_accessor :orientation

    # Object center {FXVec3f}
    attr_accessor :center

    # Eyesight vector {FXVec3f}
    attr_reader :eyeVector

    # Eye position {FXVec3f}
    attr_reader :eyePosition

    # Status line help text [String]
    attr_accessor :helpText

    # Tool tip text [String]
    attr_accessor :tipText

    # The current transformation matrix {FXMat4f}
    attr_reader :transform

    # The inverse of the current transformation matrix {FXMat4f}
    attr_reader :invTransform

    # The current scene object {FXGLObject}
    attr_accessor :scene

    # The selection {FXGLObject}
    attr_accessor :selection

    # The projection mode (either +FXGLViewer::PERSPECTIVE+ or +FXGLViewer::PARALLEL+)
    attr_accessor :projection

    # Global ambient light color {FXMat4f}
    attr_accessor :ambientColor

    # The maximum hits, i.e. the maximum size of the pick buffer [Integer].
    # When less than or equal to zero, picking is essentially turned off.
    attr_accessor :maxHits

    # Set turbo mode [Boolean]
    attr_writer :turboMode

    # Light source settings {FXLight}
    attr_accessor :light

    # Returns the FXDragType for FXGLObject
    def FXGLViewer.objectType; end

    # Returns the drag type name
    def FXGLViewer.objectTypeName; end

    #
    # Construct GL viewer widget
    #
    def initialize(p, vis, target=nil, selector=0, opts=0, x=0, y=0, width=0, height=0) # :yields: theGLViewer
    end

    #
    # Construct GL viewer widget sharing display list with another GL viewer
    #
    def initialize(p, vis, sharegroup, target=nil, selector=0, opts=0, x=0, y=0, width=0, height=0) # :yields: theGLViewer
    end

    # Return an array of all objects in the given rectangle
    def lasso(x1, y1, x2, y2); end

    # Change the model bounding box; this adjusts the viewer
    def setBounds(box); end

    # Fit viewer to the given bounding box
    def fitToBounds(box); end

    #
    # Translate eye-coordinate to screen coordinate.
    # Returns a 2-element array [sx, sy] containing the screen coordinate.
    #
    def eyeToScreen(e); end

    # Translate screen coordinate to eye coordinate at the given depth.
    def screenToEye(sx, sy, eyez=0.0); end

    # Translate screen coordinate to eye coordinate at the target point depth
    def screenToTarget(sx, sy); end

    # Translate world coordinate to eye coordinate
    def worldToEye(w); end

    # Translate world coordinate to eye coordinate depth
    def worldToEyeZ(w); end

    # Translate eye coordinate to eye coordinate
    def eyeToWorld(e); end

    # Calculate world coordinate vector from screen movement
    def worldVector(fx, fy, tx, ty); end

    # Translate object center
    def translate(vec); end

    # Return boresight vector (an array of two arrays)
    def getBoreVector(sx, sy); end

    # Returns +true+ if the viewer is locked
    def locked?; end

    # Read the pixels off the screen as R,G,B tuples.
    def readPixels(x, y, w, h); end

    # Read the feedback buffer containing the current scene.
    def readFeedback(x, y, w, h); end

    #
    # When drawing a GL object, if doesTurbo? returns +true+, the object
    # may choose to perform a reduced complexity drawing as the user is
    # interactively manipulating; another update will be done later when
    # the full complexity drawing can be performed again.
    #
    def doesTurbo?; end

    # Returns +true+ if turbo mode is enabled
    def turboMode?; end

    #
    # Change top, bottom or both background colors.
    #
    def setBackgroundColor(clr, bottom=MAYBE); end

    # Return top or bottom window background color.
    def getBackgroundColor(bottom=false); end
  end
end