00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef FXGLVISUAL_H
00022 #define FXGLVISUAL_H
00023
00024 #ifndef FXVISUAL_H
00025 #include "FXVisual.h"
00026 #endif
00027
00028 namespace FX {
00029
00030
00031 class FXFont;
00032 class FXWindow;
00033 class FXImage;
00034 class FXIcon;
00035 class FXBitmap;
00036 class FXDCWindow;
00037
00038
00040 class FXAPI FXGLVisual : public FXVisual {
00041 FXDECLARE(FXGLVisual)
00042 friend class FXWindow;
00043 friend class FXImage;
00044 friend class FXIcon;
00045 friend class FXBitmap;
00046 friend class FXDCWindow;
00047 protected:
00048 struct FXGLSpecs;
00049 protected:
00050 FXuchar redSize;
00051 FXuchar greenSize;
00052 FXuchar blueSize;
00053 FXuchar alphaSize;
00054 FXuchar depthSize;
00055 FXuchar stencilSize;
00056 FXuchar multiSamples;
00057 FXuchar accumRedSize;
00058 FXuchar accumGreenSize;
00059 FXuchar accumBlueSize;
00060 FXuchar accumAlphaSize;
00061 FXuchar actualRedSize;
00062 FXuchar actualGreenSize;
00063 FXuchar actualBlueSize;
00064 FXuchar actualAlphaSize;
00065 FXuchar actualDepthSize;
00066 FXuchar actualStencilSize;
00067 FXuchar actualMultiSamples;
00068 FXuchar actualAccumRedSize;
00069 FXuchar actualAccumGreenSize;
00070 FXuchar actualAccumBlueSize;
00071 FXuchar actualAccumAlphaSize;
00072 FXbool doubleBuffer;
00073 FXbool stereoBuffer;
00074 FXbool accelerated;
00075 FXbool copying;
00076 protected:
00077 FXGLVisual();
00078 private:
00079 FXGLVisual(const FXGLVisual&);
00080 FXGLVisual &operator=(const FXGLVisual&);
00081 FXint matchSpecs(const FXGLSpecs& s);
00082 public:
00083
00085 FXGLVisual(FXApp* a,FXuint flgs=VISUAL_DOUBLE_BUFFER);
00086
00088 virtual void create();
00089
00091 virtual void detach();
00092
00094 virtual void destroy();
00095
00097 FXint getRedSize() const { return redSize; }
00098 FXint getGreenSize() const { return greenSize; }
00099 FXint getBlueSize() const { return blueSize; }
00100 FXint getAlphaSize() const { return alphaSize; }
00101 FXint getDepthSize() const { return depthSize; }
00102 FXint getStencilSize() const { return stencilSize; }
00103 FXint getMultiSamples() const { return multiSamples; }
00104 FXint getAccumRedSize() const { return accumRedSize; }
00105 FXint getAccumGreenSize() const { return accumGreenSize; }
00106 FXint getAccumBlueSize() const { return accumBlueSize; }
00107 FXint getAccumAlphaSize() const { return accumAlphaSize; }
00108
00110 void setRedSize(FXint rs){ redSize=rs; }
00111 void setGreenSize(FXint gs){ greenSize=gs; }
00112 void setBlueSize(FXint bs){ blueSize=bs; }
00113 void setAlphaSize(FXint as){ alphaSize=as; }
00114 void setDepthSize(FXint ds){ depthSize=ds; }
00115 void setStencilSize(FXint ss){ stencilSize=ss; }
00116 void setMultiSamples(FXint ms){ multiSamples=ms; }
00117 void setAccumRedSize(FXint rs){ accumRedSize=rs; }
00118 void setAccumGreenSize(FXint gs){ accumGreenSize=gs; }
00119 void setAccumBlueSize(FXint bs){ accumBlueSize=bs; }
00120 void setAccumAlphaSize(FXint as){ accumAlphaSize=as; }
00121
00123 FXint getActualRedSize() const { return actualRedSize; }
00124 FXint getActualGreenSize() const { return actualGreenSize; }
00125 FXint getActualBlueSize() const { return actualBlueSize; }
00126 FXint getActualAlphaSize() const { return actualAlphaSize; }
00127 FXint getActualDepthSize() const { return actualDepthSize; }
00128 FXint getActualStencilSize() const { return actualStencilSize; }
00129 FXint getActualMultiSamples() const { return actualMultiSamples; }
00130 FXint getActualAccumRedSize() const { return actualAccumRedSize; }
00131 FXint getActualAccumGreenSize() const { return actualAccumGreenSize; }
00132 FXint getActualAccumBlueSize() const { return actualAccumBlueSize; }
00133 FXint getActualAccumAlphaSize() const { return actualAccumAlphaSize; }
00134
00136 FXbool isDoubleBuffer() const { return doubleBuffer; }
00137
00139 FXbool isStereo() const { return stereoBuffer; }
00140
00142 FXbool isAccelerated() const { return accelerated; }
00143
00145 FXbool isBufferSwapCopy() const { return copying; }
00146
00148 static FXbool hasOpenGL(FXApp* application);
00149
00151 virtual void save(FXStream& store) const;
00152
00154 virtual void load(FXStream& store);
00155
00157 virtual ~FXGLVisual();
00158 };
00159
00160 }
00161
00162 #endif