![]() |
Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members
![]() |
00001 /******************************************************************************** 00002 * * 00003 * V i s u a l C l a s s * 00004 * * 00005 ********************************************************************************* 00006 * Copyright (C) 1999,2002 by Jeroen van der Zijp. All Rights Reserved. * 00007 ********************************************************************************* 00008 * This library is free software; you can redistribute it and/or * 00009 * modify it under the terms of the GNU Lesser General Public * 00010 * License as published by the Free Software Foundation; either * 00011 * version 2.1 of the License, or (at your option) any later version. * 00012 * * 00013 * This library is distributed in the hope that it will be useful, * 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 00016 * Lesser General Public License for more details. * 00017 * * 00018 * You should have received a copy of the GNU Lesser General Public * 00019 * License along with this library; if not, write to the Free Software * 00020 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. * 00021 ********************************************************************************* 00022 * $Id: FXVisual.h,v 1.25 2002/03/12 07:11:31 fox Exp $ * 00023 ********************************************************************************/ 00024 #ifndef FXVISUAL_H 00025 #define FXVISUAL_H 00026 00027 #ifndef FXID_H 00028 #include "FXId.h" 00029 #endif 00030 00031 namespace FX { 00032 00033 00034 /// Construction options for FXVisual class 00035 enum FXVisualOptions { 00036 VISUAL_DEFAULT = 0, /// Default visual 00037 VISUAL_MONOCHROME = 1, /// Must be monochrome visual 00038 VISUAL_BEST = 2, /// Best (deepest) visual 00039 VISUAL_INDEXCOLOR = 4, /// Palette visual 00040 VISUAL_GRAYSCALE = 8, /// Gray scale visual 00041 VISUAL_TRUECOLOR = 16, /// Must be true color visual 00042 VISUAL_OWNCOLORMAP = 32, /// Allocate private colormap 00043 VISUAL_DOUBLEBUFFER = 64, /// Double-buffered [FXGLVisual] 00044 VISUAL_STEREO = 128, /// Stereo [FXGLVisual] 00045 VISUAL_NOACCEL = 256 /// No hardware acceleration [for broken h/w] 00046 }; 00047 00048 00049 /// Visual type 00050 enum FXVisualType { 00051 VISUALTYPE_UNKNOWN, /// Undetermined visual type 00052 VISUALTYPE_MONO, /// Visual for drawing into 1-bpp surfaces 00053 VISUALTYPE_TRUE, /// True color 00054 VISUALTYPE_INDEX, /// Index [palette] color 00055 VISUALTYPE_GRAY /// Gray scale 00056 }; 00057 00058 00059 class FXApp; 00060 class FXWindow; 00061 class FXGLContext; 00062 class FXGLCanvas; 00063 class FXImage; 00064 class FXIcon; 00065 class FXBitmap; 00066 class FXDCWindow; 00067 00068 00069 /// Visual describes pixel format of a drawable 00070 class FXAPI FXVisual : public FXId { 00071 FXDECLARE(FXVisual) 00072 friend class FXApp; 00073 friend class FXWindow; 00074 friend class FXGLContext; 00075 friend class FXGLCanvas; 00076 friend class FXImage; 00077 friend class FXIcon; 00078 friend class FXBitmap; 00079 friend class FXDCWindow; 00080 protected: 00081 FXuint flags; // Visual flags 00082 FXuint hint; // Depth Hint 00083 FXuint depth; // Visual depth, bits/pixel 00084 FXuint numred; // Number of reds 00085 FXuint numgreen; // Number of greens 00086 FXuint numblue; // Number of blues 00087 FXuint numcolors; // Total number of colors 00088 FXuint maxcolors; // Maximum number of colors 00089 FXVisualType type; // Visual type 00090 #ifndef WIN32 00091 protected: 00092 void *visual; // Application visual [Visual] 00093 void *info; // XVisualInfo, if any 00094 FXID colormap; // Color map, if any 00095 void* gc; // Drawing GC 00096 void* scrollgc; // Scrolling GC 00097 FXPixel rpix[16][256]; // Mapping from red -> pixel 00098 FXPixel gpix[16][256]; // Mapping from green -> pixel 00099 FXPixel bpix[16][256]; // Mapping from blue -> pixel 00100 FXPixel lut[256]; // Color lookup table 00101 FXbool freemap; // We allocated the map 00102 protected: 00103 void* makegc(FXbool gex); 00104 void setuptruecolor(); 00105 void setupdirectcolor(); 00106 void setuppseudocolor(); 00107 void setupstaticcolor(); 00108 void setupgrayscale(); 00109 void setupstaticgray(); 00110 void setuppixmapmono(); 00111 void setupcolormap(); 00112 #else 00113 protected: 00114 FXID hPalette; // Palette, if any 00115 void *info; // PIXELFORMATDESCRIPTOR, if any 00116 int pixelformat; // PIXELFORMAT number 00117 protected: 00118 FXID createAllPurposePalette(); 00119 #endif 00120 protected: 00121 FXVisual(); 00122 public: 00123 00124 /// Construct default visual 00125 FXVisual(FXApp* a,FXuint flgs,FXuint d=32); 00126 00127 /// Create visual 00128 virtual void create(); 00129 00130 /// Detach visual 00131 virtual void detach(); 00132 00133 /// Destroy visual 00134 virtual void destroy(); 00135 00136 /// Get flags (see FXVisualOptions) 00137 FXuint getFlags() const { return flags; } 00138 00139 /// Get depth 00140 FXuint getDepth() const { return depth; } 00141 00142 /// Get number of colors 00143 FXuint getNumColors() const { return numcolors; } 00144 00145 /// Get number of reds 00146 FXuint getNumRed() const { return numred; } 00147 00148 /// Get number of greens 00149 FXuint getNumGreen() const { return numred; } 00150 00151 /// Get number of blues 00152 FXuint getNumBlue() const { return numred; } 00153 00154 /// Get device pixel value for color 00155 FXPixel getPixel(FXColor clr); 00156 00157 /// Get color value for device pixel value 00158 FXColor getColor(FXPixel pix); 00159 00160 /// Set maximum number of colors to allocate 00161 void setMaxColors(FXuint maxcols); 00162 00163 /// Get maximum number of colors 00164 FXuint getMaxColors() const { return maxcolors; } 00165 00166 /// Get visual type 00167 FXVisualType getType() const { return type; } 00168 00169 /// Save visual information to a stream 00170 virtual void save(FXStream& store) const; 00171 00172 /// Load visual information from a stream 00173 virtual void load(FXStream& store); 00174 00175 /// Destructor 00176 virtual ~FXVisual(); 00177 }; 00178 00179 } 00180 00181 #endif