awt_Win32GraphicsDevice.h revision 13220:a8e9ad77ac81
1113657Sdeischen/*
2113661Sdeischen * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
3113657Sdeischen * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4113657Sdeischen *
5113657Sdeischen * This code is free software; you can redistribute it and/or modify it
6113657Sdeischen * under the terms of the GNU General Public License version 2 only, as
7113657Sdeischen * published by the Free Software Foundation.  Oracle designates this
8113657Sdeischen * particular file as subject to the "Classpath" exception as provided
9113657Sdeischen * by Oracle in the LICENSE file that accompanied this code.
10113657Sdeischen *
11113657Sdeischen * This code is distributed in the hope that it will be useful, but WITHOUT
12113657Sdeischen * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13113657Sdeischen * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14113657Sdeischen * version 2 for more details (a copy is included in the LICENSE file that
15113657Sdeischen * accompanied this code).
16113657Sdeischen *
17113657Sdeischen * You should have received a copy of the GNU General Public License version
18113657Sdeischen * 2 along with this work; if not, write to the Free Software Foundation,
19113657Sdeischen * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20113657Sdeischen *
21113657Sdeischen * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22113657Sdeischen * or visit www.oracle.com if you need additional information or have any
23113657Sdeischen * questions.
24113657Sdeischen */
25113657Sdeischen
26113657Sdeischen#ifndef AWT_WIN32GRAPHICSDEVICE_H
27113657Sdeischen#define AWT_WIN32GRAPHICSDEVICE_H
28113657Sdeischen
29113657Sdeischen#include "awt.h"
30113657Sdeischenextern "C" {
31113657Sdeischen    #include "img_globals.h"
32113657Sdeischen} // extern "C"
33113657Sdeischen#include "colordata.h"
34113657Sdeischen#include "awt_Palette.h"
35113657Sdeischen#include "Devices.h"
36113657Sdeischen
37113657Sdeischenclass AwtPalette;
38113657Sdeischenclass Devices;
39113657Sdeischen
40113657Sdeischenclass AwtWin32GraphicsDevice {
41113657Sdeischenpublic:
42113657Sdeischen                            AwtWin32GraphicsDevice(int screen, HMONITOR mhnd, Devices *arr);
43113657Sdeischen                            ~AwtWin32GraphicsDevice();
44113657Sdeischen    void                    UpdateDeviceColorState();
45113657Sdeischen    void                    SetGrayness(int grayValue);
46113657Sdeischen    int                     GetGrayness() { return colorData->grayscale; }
47113657Sdeischen    HDC                     GetDC();
48113657Sdeischen    void                    ReleaseDC(HDC hDC);
49113657Sdeischen    jobject                 GetColorModel(JNIEnv *env,
50113657Sdeischen                                          jboolean useDeviceSettings);
51113657Sdeischen    void                    Initialize();
52113657Sdeischen    void                    UpdateDynamicColorModel();
53113657Sdeischen    BOOL                    UpdateSystemPalette();
54113657Sdeischen    unsigned int            *GetSystemPaletteEntries();
55113657Sdeischen    unsigned char           *GetSystemInverseLUT();
56113657Sdeischen    void                    SetJavaDevice(JNIEnv *env, jobject objPtr);
57113657Sdeischen    HPALETTE                SelectPalette(HDC hDC);
58113657Sdeischen    void                    RealizePalette(HDC hDC);
59113657Sdeischen    HPALETTE                GetPalette();
60113657Sdeischen    ColorData               *GetColorData() { return cData; }
61113657Sdeischen    int                     GetBitDepth() { return colorData->bitsperpixel; }
62113657Sdeischen    HMONITOR                GetMonitor() { return monitor; }
63113657Sdeischen    LPMONITORINFO           GetMonitorInfo() { return pMonitorInfo; }
64113657Sdeischen    jobject                 GetJavaDevice() { return javaDevice; }
65113657Sdeischen    int                     GetDeviceIndex() { return screen; }
66113657Sdeischen    void                    Release();
67115080Sdeischen    void                    DisableOffscreenAcceleration();
68113657Sdeischen    void                    Invalidate(JNIEnv *env);
69113657Sdeischen    void                    InitDesktopScales();
70113657Sdeischen    void                    SetScale(float scaleX, float scaleY);
71113657Sdeischen    float                   GetScaleX();
72113657Sdeischen    float                   GetScaleY();
73113657Sdeischen    int                     ScaleUpX(int x);
74113657Sdeischen    int                     ScaleUpY(int y);
75113657Sdeischen    int                     ScaleDownX(int x);
76113657Sdeischen    int                     ScaleDownY(int y);
77113657Sdeischen
78113657Sdeischen    static int              DeviceIndexForWindow(HWND hWnd);
79113657Sdeischen    static jobject          GetColorModel(JNIEnv *env, jboolean dynamic,
80113657Sdeischen                                          int deviceIndex);
81113657Sdeischen    static HPALETTE         SelectPalette(HDC hDC, int deviceIndex);
82113657Sdeischen    static void             RealizePalette(HDC hDC, int deviceIndex);
83113657Sdeischen    static ColorData        *GetColorData(int deviceIndex);
84113657Sdeischen    static int              GetGrayness(int deviceIndex);
85113657Sdeischen    static void             UpdateDynamicColorModel(int deviceIndex);
86115080Sdeischen    static BOOL             UpdateSystemPalette(int deviceIndex);
87113657Sdeischen    static HPALETTE         GetPalette(int deviceIndex);
88113657Sdeischen    static HMONITOR         GetMonitor(int deviceIndex);
89113657Sdeischen    static LPMONITORINFO    GetMonitorInfo(int deviceIndex);
90113657Sdeischen    static void             ResetAllMonitorInfo();
91113657Sdeischen    static BOOL             IsPrimaryPalettized() { return primaryPalettized; }
92113657Sdeischen    static int              GetDefaultDeviceIndex() { return primaryIndex; }
93113657Sdeischen    static void             DisableOffscreenAccelerationForDevice(HMONITOR hMonitor);
94113657Sdeischen    static HDC              GetDCFromScreen(int screen);
95113657Sdeischen    static int              GetScreenFromHMONITOR(HMONITOR mon);
96113657Sdeischen
97113657Sdeischen    static int              primaryIndex;
98113657Sdeischen    static BOOL             primaryPalettized;
99113657Sdeischen    static jclass           indexCMClass;
100113657Sdeischen    static jclass           wToolkitClass;
101113657Sdeischen    static jfieldID         dynamicColorModelID;
102113657Sdeischen    static jfieldID         indexCMrgbID;
103113657Sdeischen    static jfieldID         indexCMcacheID;
104113657Sdeischen    static jmethodID        paletteChangedMID;
105113657Sdeischen
106113657Sdeischenprivate:
107113657Sdeischen    static BOOL             AreSameMonitors(HMONITOR mon1, HMONITOR mon2);
108113657Sdeischen    ImgColorData            *colorData;
109113657Sdeischen    AwtPalette              *palette;
110115278Sdeischen    ColorData               *cData;     // Could be static, but may sometime
111113657Sdeischen                                        // have per-device info in this structure
112113657Sdeischen    BITMAPINFO              *gpBitmapInfo;
113113657Sdeischen    int                     screen;
114113657Sdeischen    HMONITOR                monitor;
115113657Sdeischen    LPMONITORINFO           pMonitorInfo;
116113657Sdeischen    jobject                 javaDevice;
117113657Sdeischen    Devices                 *devicesArray;
118113657Sdeischen    float                   scaleX;
119113657Sdeischen    float                   scaleY;
120113657Sdeischen
121113657Sdeischen    static HDC              MakeDCFromMonitor(HMONITOR);
122113657Sdeischen};
123113657Sdeischen
124113657Sdeischen#endif AWT_WIN32GRAPHICSDEVICE_H
125113657Sdeischen