Skip to content
Snippets Groups Projects
FXFrame.i 8.34 KiB
Newer Older
  • Learn to ignore specific revisions
  • /***********************************************************************
     * FXRuby -- the Ruby language bindings for the FOX GUI toolkit.
    
     * Copyright (c) 2001-2009 by Lyle Johnson. All Rights Reserved.
    
     *
     * This library is free software; you can redistribute it and/or
     * modify it under the terms of the GNU Lesser General Public
     * License as published by the Free Software Foundation; either
     * version 2.1 of the License, or (at your option) any later version.
     *
     * This library is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     * Lesser General Public License for more details.
     *
     * You should have received a copy of the GNU Lesser General Public
     * License along with this library; if not, write to the Free Software
     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
     *
     * For further information please contact the author by e-mail
    
     * at "lyle@lylejohnson.name".
    
     ***********************************************************************/
    
    /// Justification modes
    enum {
      JUSTIFY_NORMAL       = 0,			      /// Default justification is centered text
      JUSTIFY_CENTER_X     = 0,			      /// Text is centered horizontally
      JUSTIFY_LEFT         = 0x00008000,		      /// Text is left-justified
      JUSTIFY_RIGHT        = 0x00010000,		      /// Text is right-justified
      JUSTIFY_HZ_APART     = JUSTIFY_LEFT|JUSTIFY_RIGHT,  /// Combination of JUSTIFY_LEFT & JUSTIFY_RIGHT
      JUSTIFY_CENTER_Y     = 0,			      /// Text is centered vertically
      JUSTIFY_TOP          = 0x00020000,		      /// Text is aligned with label top
      JUSTIFY_BOTTOM       = 0x00040000,		      /// Text is aligned with label bottom
      JUSTIFY_VT_APART     = JUSTIFY_TOP|JUSTIFY_BOTTOM   /// Combination of JUSTIFY_TOP & JUSTIFY_BOTTOM
      };
    
    
    /// Default padding
    enum { DEFAULT_PAD = 2 };
    
    
    /// Base Frame
    class FXFrame : public FXWindow {
    protected:
      FXColor baseColor;    // Base color
      FXColor hiliteColor;  // Highlight color
      FXColor shadowColor;  // Shadow color
      FXColor borderColor;  // Border color
      FXint   padtop;       // Top padding
      FXint   padbottom;    // Bottom padding
      FXint   padleft;      // Left padding
      FXint   padright;     // right padding
      FXint   border;       // Border size
    protected:
      FXFrame();
      void drawBorderRectangle(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
      void drawRaisedRectangle(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
      void drawSunkenRectangle(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
      void drawRidgeRectangle(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
      void drawGrooveRectangle(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
      void drawDoubleRaisedRectangle(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
      void drawDoubleSunkenRectangle(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
      void drawFrame(FXDCWindow& dc,FXint x,FXint y,FXint w,FXint h);
    public:
      long onPaint(FXObject*,FXSelector,void* PTR_EVENT);
    public:
      %extend {
        /// Construct frame window
        FXFrame(FXComposite* p,FXuint opts=FRAME_NORMAL,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=DEFAULT_PAD,FXint pr=DEFAULT_PAD,FXint pt=DEFAULT_PAD,FXint pb=DEFAULT_PAD){
          return new FXRbFrame(p,opts,x,y,w,h,pl,pr,pt,pb);
          }
        }
    
      /// Change frame style
      void setFrameStyle(FXuint style);
    
      /// Get current frame style
      FXuint getFrameStyle() const;
    
      /// Get border width
      FXint getBorderWidth() const;
    
      /// Change top padding
      void setPadTop(FXint pt);
    
      /// Get top interior padding
      FXint getPadTop() const;
    
      /// Change bottom padding
      void setPadBottom(FXint pb);
    
      /// Get bottom interior padding
      FXint getPadBottom() const;
    
      /// Change left padding
      void setPadLeft(FXint pl);
    
      /// Get left interior padding
      FXint getPadLeft() const;
    
      /// Change right padding
      void setPadRight(FXint pr);
    
      /// Get right interior padding
      FXint getPadRight() const;
    
      /// Change highlight color
      void setHiliteColor(FXColor clr);
    
      /// Get highlight color
      FXColor getHiliteColor() const;
    
      /// Change shadow color
      void setShadowColor(FXColor clr);
    
      /// Get shadow color
      FXColor getShadowColor() const;
    
      /// Change border color
      void setBorderColor(FXColor clr);
    
      /// Get border color
      FXColor getBorderColor() const;
    
      /// Change base gui color
      void setBaseColor(FXColor clr);
    
      /// Get base gui color
      FXColor getBaseColor() const;
      };
    
    
    DECLARE_FXOBJECT_VIRTUALS(FXFrame)
    DECLARE_FXID_VIRTUALS(FXFrame)
    DECLARE_FXDRAWABLE_VIRTUALS(FXFrame)
    DECLARE_FXWINDOW_VIRTUALS(FXFrame)
    
    %{
    static swig_type_info *FXFrame_dynamic_cast(void **ptr) {
        FXFrame **ppFrame = reinterpret_cast<FXFrame **>(ptr);
        FX7Segment *p7Segment=dynamic_cast<FX7Segment*>(*ppFrame);
        if(p7Segment){
          *ptr=reinterpret_cast<void*>(p7Segment);
          return SWIG_TypeQuery("FX7Segment *");
          }
        FXArrowButton *pArrowButton=dynamic_cast<FXArrowButton*>(*ppFrame);
        if(pArrowButton){
          *ptr=reinterpret_cast<void*>(pArrowButton);
          return SWIG_TypeQuery("FXArrowButton *");
          }
        FXBitmapFrame *pBitmapFrame=dynamic_cast<FXBitmapFrame*>(*ppFrame);
        if(pBitmapFrame){
          *ptr=reinterpret_cast<void*>(pBitmapFrame);
          return SWIG_TypeQuery("FXBitmapFrame *");
          }
        FXColorBar *pColorBar=dynamic_cast<FXColorBar*>(*ppFrame);
        if(pColorBar){
          *ptr=reinterpret_cast<void*>(pColorBar);
          return SWIG_TypeQuery("FXColorBar *");
          }
        FXColorRing *pColorRing=dynamic_cast<FXColorRing*>(*ppFrame);
        if(pColorRing){
          *ptr=reinterpret_cast<void*>(pColorRing);
          return SWIG_TypeQuery("FXColorRing *");
          }
        FXColorWell *pColorWell=dynamic_cast<FXColorWell*>(*ppFrame);
        if(pColorWell){
          *ptr=reinterpret_cast<void*>(pColorWell);
          return SWIG_TypeQuery("FXColorWell *");
          }
        FXColorWheel *pColorWheel=dynamic_cast<FXColorWheel*>(*ppFrame);
        if(pColorWheel){
          *ptr=reinterpret_cast<void*>(pColorWheel);
          return SWIG_TypeQuery("FXColorWheel *");
          }
        FXDial *pDial=dynamic_cast<FXDial*>(*ppFrame);
        if(pDial){
          *ptr=reinterpret_cast<void*>(pDial);
          return SWIG_TypeQuery("FXDial *");
          }
        FXDockHandler *pDockHandler=dynamic_cast<FXDockHandler*>(*ppFrame);
        if(pDockHandler){
          *ptr=reinterpret_cast<void*>(pDockHandler);
          return SWIG_TypeQuery("FXDockHandler *");
          }
        FXHeader *pHeader=dynamic_cast<FXHeader*>(*ppFrame);
        if(pHeader){
          *ptr=reinterpret_cast<void*>(pHeader);
          return SWIG_TypeQuery("FXHeader *");
          }
        FXImageFrame *pImageFrame=dynamic_cast<FXImageFrame*>(*ppFrame);
        if(pImageFrame){
          *ptr=reinterpret_cast<void*>(pImageFrame);
          return SWIG_TypeQuery("FXImageFrame *");
          }
        FXKnob *pKnob=dynamic_cast<FXKnob*>(*ppFrame);
        if(pKnob){
          *ptr=reinterpret_cast<void*>(pKnob);
          return SWIG_TypeQuery("FXKnob *");
          }
        FXLabel *pLabel=dynamic_cast<FXLabel*>(*ppFrame);
        if(pLabel){
          *ptr=reinterpret_cast<void*>(pLabel);
          return SWIG_TypeQuery("FXLabel *");
          }
        FXProgressBar *pProgressBar=dynamic_cast<FXProgressBar*>(*ppFrame);
        if(pProgressBar){
          *ptr=reinterpret_cast<void*>(pProgressBar);
          return SWIG_TypeQuery("FXProgressBar *");
          }
        FXRealSlider *pRealSlider=dynamic_cast<FXRealSlider*>(*ppFrame);
        if(pRealSlider){
          *ptr=reinterpret_cast<void*>(pRealSlider);
          return SWIG_TypeQuery("FXRealSlider *");
          }
        FXSeparator *pSeparator=dynamic_cast<FXSeparator*>(*ppFrame);
        if(pSeparator){
          *ptr=reinterpret_cast<void*>(pSeparator);
          return SWIG_TypeQuery("FXSeparator *");
          }
        FXSlider *pSlider=dynamic_cast<FXSlider*>(*ppFrame);
        if(pSlider){
          *ptr=reinterpret_cast<void*>(pSlider);
          return SWIG_TypeQuery("FXSlider *");
          }
        FXStatusLine *pStatusLine=dynamic_cast<FXStatusLine*>(*ppFrame);
        if(pStatusLine){
          *ptr=reinterpret_cast<void*>(pStatusLine);
          return SWIG_TypeQuery("FXStatusLine *");
          }
        FXTextField *pTextField=dynamic_cast<FXTextField*>(*ppFrame);
        if(pTextField){
          *ptr=reinterpret_cast<void*>(pTextField);
          return SWIG_TypeQuery("FXTextField *");
          }
        FXToolBarTab *pToolBarTab=dynamic_cast<FXToolBarTab*>(*ppFrame);
        if(pToolBarTab){
          *ptr=reinterpret_cast<void*>(pToolBarTab);
          return SWIG_TypeQuery("FXToolBarTab *");
          }
        return 0;
    }
    %}
    
    DYNAMIC_CAST(SWIGTYPE_p_FXFrame, FXFrame_dynamic_cast);