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