blob: e09b4fc794cc093b9ec58044804d2ec32cccbec8 [file] [log] [blame]
/*
* Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#ifndef AWT_WIN32GRAPHICSDEVICE_H
#define AWT_WIN32GRAPHICSDEVICE_H
#include "awt.h"
extern "C" {
#include "img_globals.h"
} // extern "C"
#include "colordata.h"
#include "awt_Palette.h"
#include "Devices.h"
class AwtPalette;
class Devices;
class AwtWin32GraphicsDevice {
public:
AwtWin32GraphicsDevice(int screen, HMONITOR mhnd, Devices *arr);
~AwtWin32GraphicsDevice();
void UpdateDeviceColorState();
void SetGrayness(int grayValue);
int GetGrayness() { return colorData->grayscale; }
HDC GetDC();
void ReleaseDC(HDC hDC);
jobject GetColorModel(JNIEnv *env,
jboolean useDeviceSettings);
void Initialize();
void UpdateDynamicColorModel();
BOOL UpdateSystemPalette();
unsigned int *GetSystemPaletteEntries();
unsigned char *GetSystemInverseLUT();
void SetJavaDevice(JNIEnv *env, jobject objPtr);
HPALETTE SelectPalette(HDC hDC);
void RealizePalette(HDC hDC);
HPALETTE GetPalette();
ColorData *GetColorData() { return cData; }
int GetBitDepth() { return colorData->bitsperpixel; }
HMONITOR GetMonitor() { return monitor; }
LPMONITORINFO GetMonitorInfo() { return pMonitorInfo; }
jobject GetJavaDevice() { return javaDevice; }
int GetDeviceIndex() { return screen; }
void Release();
void DisableOffscreenAcceleration();
void Invalidate(JNIEnv *env);
static int DeviceIndexForWindow(HWND hWnd);
static jobject GetColorModel(JNIEnv *env, jboolean dynamic,
int deviceIndex);
static HPALETTE SelectPalette(HDC hDC, int deviceIndex);
static void RealizePalette(HDC hDC, int deviceIndex);
static ColorData *GetColorData(int deviceIndex);
static int GetGrayness(int deviceIndex);
static void UpdateDynamicColorModel(int deviceIndex);
static BOOL UpdateSystemPalette(int deviceIndex);
static HPALETTE GetPalette(int deviceIndex);
static HMONITOR GetMonitor(int deviceIndex);
static LPMONITORINFO GetMonitorInfo(int deviceIndex);
static void ResetAllMonitorInfo();
static BOOL IsPrimaryPalettized() { return primaryPalettized; }
static int GetDefaultDeviceIndex() { return primaryIndex; }
static void DisableOffscreenAccelerationForDevice(HMONITOR hMonitor);
static HDC GetDCFromScreen(int screen);
static int GetScreenFromHMONITOR(HMONITOR mon);
static int primaryIndex;
static BOOL primaryPalettized;
static jclass indexCMClass;
static jclass wToolkitClass;
static jfieldID dynamicColorModelID;
static jfieldID indexCMrgbID;
static jfieldID indexCMcacheID;
static jmethodID paletteChangedMID;
private:
static BOOL AreSameMonitors(HMONITOR mon1, HMONITOR mon2);
ImgColorData *colorData;
AwtPalette *palette;
ColorData *cData; // Could be static, but may sometime
// have per-device info in this structure
BITMAPINFO *gpBitmapInfo;
int screen;
HMONITOR monitor;
LPMONITORINFO pMonitorInfo;
jobject javaDevice;
Devices *devicesArray;
static HDC MakeDCFromMonitor(HMONITOR);
};
#endif AWT_WIN32GRAPHICSDEVICE_H