1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _SV_SYSDATA_HXX 25 #define _SV_SYSDATA_HXX 26 27 #include <vector> 28 29 #ifdef QUARTZ 30 // predeclare the native classes to avoid header/include problems 31 typedef struct CGContext *CGContextRef; 32 typedef struct CGLayer *CGLayerRef; 33 #ifdef __OBJC__ 34 @class NSView; 35 #else 36 class NSView; 37 #endif 38 #endif 39 40 // ----------------- 41 // - SystemEnvData - 42 // ----------------- 43 44 struct SystemEnvData 45 { 46 unsigned long nSize; // size in bytes of this structure 47 #if defined( WNT ) || defined( OS2 ) 48 HWND hWnd; // the window hwnd 49 #elif defined( QUARTZ ) 50 NSView* mpNSView; // the cocoa (NSView *) implementing this object 51 #elif defined( UNX ) 52 void* pDisplay; // the relevant display connection 53 long aWindow; // the window of the object 54 void* pSalFrame; // contains a salframe, if object has one 55 void* pWidget; // the corresponding widget 56 void* pVisual; // the visual in use 57 int nScreen; // the current screen of the window 58 int nDepth; // depth of said visual 59 long aColormap; // the colormap being used 60 void* pAppContext; // the application context in use 61 long aShellWindow; // the window of the frame's shell 62 void* pShellWidget; // the frame's shell widget 63 #endif 64 }; 65 66 #define SystemChildData SystemEnvData 67 68 // -------------------- 69 // - SystemParentData - 70 // -------------------- 71 72 struct SystemParentData 73 { 74 unsigned long nSize; // size in bytes of this structure 75 #if defined( WNT ) || defined( OS2 ) 76 HWND hWnd; // the window hwnd 77 #elif defined( QUARTZ ) 78 NSView* pView; // the cocoa (NSView *) implementing this object 79 #elif defined( UNX ) 80 long aWindow; // the window of the object 81 bool bXEmbedSupport:1; // decides whether the object in question 82 // should support the XEmbed protocol 83 #endif 84 }; 85 86 // -------------------- 87 // - SystemMenuData - 88 // -------------------- 89 90 struct SystemMenuData 91 { 92 unsigned long nSize; // size in bytes of this structure 93 #if defined( WNT ) 94 HMENU hMenu; // the menu handle of the menu bar 95 #elif defined( QUARTZ ) 96 //not defined 97 #elif defined( UNX ) 98 long aMenu; // ??? 99 #endif 100 }; 101 102 // -------------------- 103 // - SystemGraphicsData - 104 // -------------------- 105 106 struct SystemGraphicsData 107 { 108 unsigned long nSize; // size in bytes of this structure 109 #if defined( WNT ) 110 HDC hDC; // handle to a device context 111 #elif defined( QUARTZ ) 112 CGContextRef rCGContext; // QUARTZ graphic context 113 #elif defined( UNX ) 114 void* pDisplay; // the relevant display connection 115 long hDrawable; // a drawable 116 void* pVisual; // the visual in use 117 int nScreen; // the current screen of the drawable 118 int nDepth; // depth of said visual 119 long aColormap; // the colormap being used 120 void* pRenderFormat; // render format for drawable 121 #endif 122 }; 123 124 125 // -------------------- 126 // - SystemWindowData - 127 // -------------------- 128 129 struct SystemWindowData 130 { 131 unsigned long nSize; // size in bytes of this structure 132 #if defined( WNT ) // meaningless on Windows 133 #elif defined( QUARTZ ) // meaningless on Mac OS X / Quartz 134 #elif defined( UNX ) 135 void* pVisual; // the visual to be used 136 #endif 137 }; 138 139 140 // -------------------- 141 // - SystemGlyphData - 142 // -------------------- 143 144 struct SystemGlyphData 145 { 146 unsigned long index; 147 double x; 148 double y; 149 int fallbacklevel; 150 }; 151 152 153 // -------------------- 154 // - SystemFontData - 155 // -------------------- 156 157 struct SystemFontData 158 { 159 unsigned long nSize; // size in bytes of this structure 160 #if defined( WNT ) 161 HFONT hFont; // native font object 162 #elif defined( OS2 ) 163 ULONG hFont; // native font object 164 #elif defined( QUARTZ ) 165 void* aATSUFontID; // native font object 166 #elif defined( UNX ) 167 void* nFontId; // native font id 168 int nFontFlags; // native font flags 169 #endif 170 bool bFakeBold; // Does this font need faking the bold style 171 bool bFakeItalic; // Does this font need faking the italic style 172 bool bAntialias; // Should this font be antialiased 173 bool bVerticalCharacterType; // Is the font using vertical character type 174 }; 175 176 // -------------------- 177 // - SystemTextLayoutData - 178 // -------------------- 179 180 typedef std::vector<SystemGlyphData> SystemGlyphDataVector; 181 182 struct SystemTextLayoutData 183 { 184 unsigned long nSize; // size in bytes of this structure 185 std::vector<SystemGlyphData> rGlyphData; // glyph data 186 int orientation; // Text orientation 187 }; 188 189 #endif // _SV_SYSDATA_HXX 190 191