1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_VCL_SYSDATA_HXX
21 #define INCLUDED_VCL_SYSDATA_HXX
23 #include <sal/types.h>
26 // predeclare the native classes to avoid header/include problems
27 typedef struct CGContext
*CGContextRef
;
28 typedef struct CGLayer
*CGLayerRef
;
29 typedef const struct __CTFont
* CTFontRef
;
38 typedef const struct __CTFont
* CTFontRef
;
39 typedef struct CGContext
*CGContextRef
;
51 HWND hWnd
; // the window hwnd
52 #elif defined( MACOSX )
53 NSView
* mpNSView
; // the cocoa (NSView *) implementing this object
54 bool mbOpenGL
; // use an OpenGL providing NSView
55 #elif defined( ANDROID )
60 enum class Toolkit
{ Gtk3
, Qt5
, Gen
};
61 enum class Platform
{ Wayland
, Xcb
};
63 void* pDisplay
; // the relevant display connection
64 sal_uIntPtr aWindow
; // the window of the object
65 void* pSalFrame
; // contains a salframe, if object has one
66 void* pWidget
; // the corresponding widget
67 void* pVisual
; // the visual in use
68 int nScreen
; // the current screen of the window
69 // note: this is a "long" in Xlib *but* in the protocol it's only 32-bit
70 // however, the GTK3 vclplug wants to store pointers in here!
71 sal_IntPtr aShellWindow
; // the window of the frame's shell
72 Toolkit toolkit
; // the toolkit in use
73 Platform platform
; // the windowing system in use
79 #elif defined( MACOSX )
82 #elif defined( ANDROID )
93 , platform(Platform())
99 struct SystemParentData
101 sal_uInt32 nSize
; // size in bytes of this structure
103 HWND hWnd
; // the window hwnd
104 #elif defined( MACOSX )
105 NSView
* pView
; // the cocoa (NSView *) implementing this object
106 #elif defined( ANDROID )
111 sal_uIntPtr aWindow
; // the window of the object
112 bool bXEmbedSupport
:1; // decides whether the object in question
113 // should support the XEmbed protocol
117 struct SystemMenuData
120 HMENU hMenu
; // the menu handle of the menu bar
126 struct SystemGraphicsData
128 sal_uInt32 nSize
; // size in bytes of this structure
130 HDC hDC
; // handle to a device context
131 HWND hWnd
; // optional handle to a window
132 #elif defined( MACOSX )
133 CGContextRef rCGContext
; // CoreGraphics graphic context
134 #elif defined( ANDROID )
137 CGContextRef rCGContext
; // CoreGraphics graphic context
139 void* pDisplay
; // the relevant display connection
140 sal_uIntPtr hDrawable
; // a drawable
141 void* pVisual
; // the visual in use
142 int nScreen
; // the current screen of the drawable
143 void* pXRenderFormat
; // render format for drawable
144 void* pSurface
; // the cairo surface when using svp-based backends
147 : nSize( sizeof( SystemGraphicsData
) )
151 #elif defined( MACOSX )
152 , rCGContext( nullptr )
153 #elif defined( ANDROID )
158 , pDisplay( nullptr )
162 , pXRenderFormat( nullptr )
163 , pSurface( nullptr )
168 struct SystemWindowData
170 #if defined(_WIN32) // meaningless on Windows
171 #elif defined( MACOSX )
172 bool bOpenGL
; // create an OpenGL providing NSView
173 bool bLegacy
; // create a 2.1 legacy context, only valid if bOpenGL == true
174 #elif defined( ANDROID )
179 void* pVisual
; // the visual to be used
180 bool bClipUsingNativeWidget
; // default is false, true will attempt to clip the childwindow with a native widget
184 #endif // INCLUDED_VCL_SYSDATA_HXX
186 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */