📄 display.h
字号:
/* * $QNXLicenseC: * Copyright 2007, 2008, QNX Software Systems. * * Licensed under the Apache License, Version 2.0 (the "License"). You * may not reproduce, modify or distribute this software except in * compliance with the License. You may obtain a copy of the License * at: http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OF ANY KIND, either express or implied. * * This file may contain contributions from others, either as * contributors under the License or as licensors under other terms. * Please review this entire file for other proprietary rights or license * notices, as well as the QNX Development Suite License Guide at * http://licensing.qnx.com/license-guide/ for other information. * $ */#ifndef _GRAPHICS_DISPLAY_H_INCLUDED#define _GRAPHICS_DISPLAY_H_INCLUDED#ifndef __TYPES_H_INCLUDED#include <sys/types.h>#endif#ifndef _WIN32#ifdef __QNXNTO__#ifndef __INTTYPES_H_INCLUDED#include <inttypes.h>#endif#endif#ifndef __GULLIVER_H_INCLUDED#include <gulliver.h>#endif#ifndef __PCI_H_INCLUDED#include <hw/pci.h>#endif#ifndef __MMAN_H_INCLUDED#include <sys/mman.h>#endif#endif /* _WIN32 */#ifndef _STDIO_H_INCLUDED#include <stdio.h>#endif#ifndef _WIN32#ifndef _PM_H_INCLUDED#include <sys/pm.h>#endif#endif /* _WIN32 */#ifndef _GRAPHICS_ROP_H_INCLUDED#include <graphics/rop.h>#endif#ifndef _WIN32#include <semaphore.h>#endif#ifdef _WIN32 #include <gfpr/gfpr.h> #ifdef _MSC_VER // Win32 Visual C++ #ifdef WINSIM_EXPORTS #define WINSIM_API __declspec(dllexport) #else #define WINSIM_API __declspec(dllimport) #endif #ifdef SOFT3D_EXPORTS #define SOFT3D_API __declspec(dllexport) #else #define SOFT3D_API __declspec(dllimport) #endif #else // Win32 mingw32 #include <stdint.h> #define WINSIM_API #define SOFT3D_API #endif typedef uint32_t disp_paddr_t; typedef uint32_t pm_power_mode_t; typedef uint64_t paddr_t;#else #define WINSIM_API #define SOFT3D_API #ifndef __QNXNTO__ #include <sys/cdefs.h> #ifndef _INTTYPES_H_INCLUDED typedef char int8_t; typedef short int16_t; typedef short int16_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned long uint32_t; /* This line may have to be omitted, depending on which version of the QNX4 header files you build against */ typedef int8_t _int8; typedef int16_t _int16; typedef uint8_t _uint8; typedef uint16_t _uint16; typedef uint32_t _uint32; #endif typedef uint32_t disp_paddr_t; typedef uint32_t uintptr_t; #else typedef uint64_t disp_paddr_t; #endif #ifndef _HW_INOUT_INCLUDED #include <hw/inout.h> #endif#endif /* _WIN32 */#define DISP_MAX_MODES 72/* * Supported layer formats; note that a layer format is comprised of * of one or more surface formats. Please don't use the most significant bit. */#define DISP_LAYER_FORMAT_PAL8 0x00000000#define DISP_LAYER_FORMAT_ARGB1555 0x00000001#define DISP_LAYER_FORMAT_RGB565 0x00000002#define DISP_LAYER_FORMAT_RGB888 0x00000003#define DISP_LAYER_FORMAT_ARGB8888 0x00000004#define DISP_LAYER_FORMAT_RGB556 0x00000005#define DISP_LAYER_FORMAT_BYTES 0x00000006#define DISP_LAYER_FORMAT_YUY2 0x00010000 /* Packed YUV, 16bpp: Y8U8Y8V8 */#define DISP_LAYER_FORMAT_UYVY 0x00010001 /* Packed YUV, 16bpp: U8Y8V8Y8 */#define DISP_LAYER_FORMAT_YVYU 0x00010002 /* Packed YUV, 16bpp: Y8V8Y8U8 */#define DISP_LAYER_FORMAT_V422 0x00010003 /* Packed YUV, 16bpp: V8Y8U8Y8 */#define DISP_LAYER_FORMAT_NV12 0x00010004 /* Y plane immediately followed by packed UV plane, one U sample and one V sample per 2x2 block of Y */#define DISP_LAYER_FORMAT_AYUV 0x00010005 /* Packed YUV, 32bpp: V8U8Y8A8 */#define DISP_LAYER_FORMAT_YVU9 0x00020000 /* Planar YUV, one U sample and one V sample per 4x4 block of Y */#define DISP_LAYER_FORMAT_YV12 0x00020001 /* Planar YUV, one U sample and one V sample per 2x2 block of Y */#define DISP_LAYER_FORMAT_YUV420 0x00020002 /* Planar YUV, one U sample and one V sample per 2x1 block of Y *//* surface formats - upper byte specifies bits per pixel */#define DISP_SURFACE_FORMAT_BYTES 0x08000000#define DISP_SURFACE_FORMAT_PAL8 0x08000001#define DISP_SURFACE_FORMAT_ARGB1555 0x10000002#define DISP_SURFACE_FORMAT_RGB565 0x10000003#define DISP_SURFACE_FORMAT_RGB888 0x18000004#define DISP_SURFACE_FORMAT_ARGB8888 0x20000005#define DISP_SURFACE_FORMAT_RGBA8888 0x20000006#define DISP_SURFACE_FORMAT_PAL4 0x04000006#define DISP_SURFACE_FORMAT_RGB556 0x10000007/* Packed YUV formats */#define DISP_SURFACE_FORMAT_PACKEDYUV_IYU1 0x0c40000a#define DISP_SURFACE_FORMAT_PACKEDYUV_IYU2 0x1840000b#define DISP_SURFACE_FORMAT_PACKEDYUV_UYVY 0x1040000c#define DISP_SURFACE_FORMAT_PACKEDYUV_YUY2 0x1040000d#define DISP_SURFACE_FORMAT_PACKEDYUV_YVYU 0x1040000e#define DISP_SURFACE_FORMAT_PACKEDYUV_V422 0x1040000f#define DISP_SURFACE_FORMAT_PACKEDYUV_CLJR 0x08400010#define DISP_SURFACE_FORMAT_PACKEDYUV_AYUV 0x20400011/* YUV planar surface types */#define DISP_SURFACE_FORMAT_YPLANE 0x00400011#define DISP_SURFACE_FORMAT_UPLANE 0x00400012#define DISP_SURFACE_FORMAT_VPLANE 0x00400013/* Useful macros to operate on surface types */#define DISP_BITS_PER_PIXEL(__fmt) ((__fmt) >> 24)#define DISP_BYTES_PER_PIXEL(__fmt) (((__fmt) + 0x7000000) >> 27)#define DISP_SURFACE_ISPAL(__fmt) (((__fmt) & 0x00800000) || ((__fmt) == DISP_SURFACE_FORMAT_PAL4) || ((__fmt) == DISP_SURFACE_FORMAT_PAL8))#define DISP_SURFACE_ISYUV(__fmt) ((__fmt) & 0x00400000)/* RGB true color macros */#define DISP_TRUE_BLUE(color) ((color) & 0xff)#define DISP_TRUE_GREEN(color) (((color) & 0xff00) >> 8)#define DISP_TRUE_RED(color) (((color) & 0xff0000) >> 16)#define DISP_TRUE_ALPHA(color) (((color) & 0xff000000) >> 24)#define DISP_MK_TRUECOLOR(a, r, g, b) \ ((a) << 24 | (r) << 16 | (g) << 8 | b)/* Alpha Blending multiplier origins */#define DISP_ALPHA_M1_SRC_PIXEL_ALPHA 0x00010000 /* "M1" comes from the source pixels alpha component */#define DISP_ALPHA_M1_DST_PIXEL_ALPHA 0x00020000 /* "M1" comes from the destination pixels alpha component */#define DISP_ALPHA_M1_GLOBAL 0x00040000 /* "M1" comes from the global multiplier 1 */#define DISP_ALPHA_M1_MAP 0x00080000 /* "M1" comes from the Alpha map */#define DISP_ALPHA_M2_SRC_PIXEL_ALPHA 0x01000000 /* "M2" comes from the source pixels alpha component */#define DISP_ALPHA_M2_DST_PIXEL_ALPHA 0x02000000 /* "M2" comes from the destination pixels alpha component */#define DISP_ALPHA_M2_GLOBAL 0x04000000 /* "M2" comes from the global multiplier 2 */#define DISP_ALPHA_M2_MAP 0x08000000 /* "M2" comes from the Alpha map */#define DISP_ALPHA_M1_ORIGIN(__mode) ((__mode) & 0x00ff0000)#define DISP_ALPHA_M2_ORIGIN(__mode) ((__mode) & 0x0f000000)#define DISP_ALPHA_TEST 0x10000000 /* Alpha test instead of blend */#define DISP_ALPHA_MERGE 0x20000000 /* Merge two semi-transparent images with per-pixel alpha (experimental) *//* Alpha Blending Source Factor */#define DISP_BLEND_SRC_0 0x0000 /* (0,0,0,0) */#define DISP_BLEND_SRC_M1 0x0100 /* (M1,M1,M1,M1) */#define DISP_BLEND_SRC_1mM1 0x0200 /* (1-M1,1-M1,1-M1,1-M1) */#define DISP_BLEND_SRC_1mD 0x0300 /* (1-M2,1-Rd,1-Gd,1-Bd) */#define DISP_BLEND_SRC_M2 0x0400 /* (M2,M2,M2,M2) */#define DISP_BLEND_SRC_D 0x0500 /* (M2,Rd,Gd,Bd) */#define DISP_BLEND_SRC_1 0x0600 /* (1,1,1,1) */#define DISP_BLEND_SRC_A1M1 0x0700 /* (1,M1,M1,M1) */#define DISP_BLEND_SRC_1mM2 0x0800 /* (1-M2,1-M2,1-M2,1-M2) */#define DISP_BLEND_SRC_1mA1M1 0x0900 /* (1-1,1-M1,1-M1,1-M1) */#define DISP_BLEND_SRC_A1M2 0x0A00 /* (1,M2,M2,M2) */#define DISP_BLEND_SRC_1mA1M2 0x0B00 /* (1-1,1-M2,1-M2,1-M2) */#define DISP_BLEND_SRC_A0M1 0x0C00 /* (0,M1,M1,M1) */#define DISP_BLEND_SRC_1mA0M1 0x0D00 /* (1-0,1-M1,1-M1,1-M1) */#define DISP_BLEND_SRC_A0M2 0x0E00 /* (0,M2,M2,M2) */#define DISP_BLEND_SRC_1mA0M2 0x0F00 /* (1-0,1-M2,1-M2,1-M2) */#define DISP_BLEND_SRC_M1_ALPHA DISP_BLEND_SRC_M1 #define DISP_BLEND_SRC_ONE_MINUS_M1_ALPHA DISP_BLEND_SRC_1mM1 #define DISP_BLEND_SRC_M2_ALPHA DISP_BLEND_SRC_M2#define DISP_BLEND_SRC_ONE_MINUS_M2_ALPHA DISP_BLEND_SRC_1mM2#define DISP_BLEND_SRC_GET(__mode) ((__mode) & 0xff00)/* Alpha Blending Destination Factor */#define DISP_BLEND_DST_0 0x00 /* (0,0,0,0) */#define DISP_BLEND_DST_M1 0x01 /* (M1,M1,M1,M1) */#define DISP_BLEND_DST_1mM1 0x02 /* (1-M1,1-M1,1-M1,1-M1) */#define DISP_BLEND_DST_1mS 0x03 /* (1-M1,1-Rs,1-Gs,1-Bs) */#define DISP_BLEND_DST_M2 0x04 /* (M2,M2,M2,M2) */#define DISP_BLEND_DST_S 0x05 /* (M1,Rs,Gs,Bs) */#define DISP_BLEND_DST_1 0x06 /* (1,1,1,1) */#define DISP_BLEND_DST_A1M1 0x07 /* (1,M1,M1,M1) */#define DISP_BLEND_DST_1mM2 0x08 /* (1-M2,1-M2,1-M2,1-M2) */#define DISP_BLEND_DST_1mA1M1 0x09 /* (1-1,1-M1,1-M1,1-M1) */#define DISP_BLEND_DST_A1M2 0x0A /* (1,M2,M2,M2) */#define DISP_BLEND_DST_1mA1M2 0x0B /* (1-1,1-M2,1-M2,1-M2) */#define DISP_BLEND_DST_A0M1 0x0C /* (0,M1,M1,M1) */#define DISP_BLEND_DST_1mA0M1 0x0D /* (1-0,1-M1,1-M1,1-M1) */#define DISP_BLEND_DST_A0M2 0x0E /* (0,M2,M2,M2) */#define DISP_BLEND_DST_1mA0M2 0x0F /* (1-0,1-M2,1-M2,1-M2) */#define DISP_BLEND_DST_M1_ALPHA DISP_BLEND_DST_M1 #define DISP_BLEND_DST_ONE_MINUS_M1_ALPHA DISP_BLEND_DST_1mM1 #define DISP_BLEND_DST_M2_ALPHA DISP_BLEND_DST_M2#define DISP_BLEND_DST_ONE_MINUS_M2_ALPHA DISP_BLEND_DST_1mM2#define DISP_BLEND_DST_GET(__mode) ((__mode) & 0x00ff)/* Alpha Tests Pixels are written in destination */#define DISP_TEST_NEVER 0x00 /* Never */#define DISP_TEST_ALWAYS 0x01 /* Always */#define DISP_TEST_LESS_THAN 0x02 /* if M1 < M2 */#define DISP_TEST_LESS_THAN_OR_EQUAL 0x03 /* if M1 <= M2 */#define DISP_TEST_EQUAL 0x04 /* if M1 == M2 */#define DISP_TEST_GREATER_THAN_OR_EQUAL 0x05 /* if M1 >= M2 */#define DISP_TEST_GREATER_THAN 0x06 /* if M1 > M2*/#define DISP_TEST_NOT_EQUAL 0x07 /* if M1 != M2 */#define DISP_TEST_GET(__mode) ((__mode) & 0x00ff)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -