The new output type `texturepp' was added, which implements pixel-perfect scaling using SDL's hardware-accelerated texture output. In pixel-pefect mode, each original pixel is displayed as a rectangle m by n pixels, so that m:n yields a reasonably good approximation of the pixel aspect ratio (PAR) of the emulated graphical mode while using as much screen space as possible. The balance between the precision of aspect ratio and the utilisation of screen space is specified as the `parweight' parameter to pp_getscale() and is currently hard-coded in sdlmain.cpp. This implementation emulatates pixel-perfect mode as a special case of nearest-neighbor interpolation when the horisontal and vertical scaling factors are integers.
79 lines
2.3 KiB
C
79 lines
2.3 KiB
C
/*
|
|
* Copyright (C) 2002-2020 The DOSBox Team
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program 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 for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
|
|
#ifndef DOSBOX_VIDEO_H
|
|
#define DOSBOX_VIDEO_H
|
|
|
|
#define REDUCE_JOYSTICK_POLLING
|
|
|
|
typedef enum {
|
|
GFX_CallBackReset,
|
|
GFX_CallBackStop,
|
|
GFX_CallBackRedraw
|
|
} GFX_CallBackFunctions_t;
|
|
|
|
typedef void (*GFX_CallBack_t)( GFX_CallBackFunctions_t function );
|
|
|
|
#define GFX_CAN_8 0x0001
|
|
#define GFX_CAN_15 0x0002
|
|
#define GFX_CAN_16 0x0004
|
|
#define GFX_CAN_32 0x0008
|
|
|
|
#define GFX_LOVE_8 0x0010
|
|
#define GFX_LOVE_15 0x0020
|
|
#define GFX_LOVE_16 0x0040
|
|
#define GFX_LOVE_32 0x0080
|
|
|
|
#define GFX_RGBONLY 0x0100
|
|
#define GFX_DBL_H 0x0200 /* double-width flag */
|
|
#define GFX_DBL_W 0x0400 /* double-height flag */
|
|
|
|
#define GFX_SCALING 0x1000
|
|
#define GFX_HARDWARE 0x2000
|
|
|
|
#define GFX_CAN_RANDOM 0x4000 //If the interface can also do random access surface
|
|
#define GFX_UNITY_SCALE 0x8000 /* turn of all scaling in render.cpp */
|
|
|
|
void GFX_Events(void);
|
|
Bitu GFX_GetBestMode(Bitu flags);
|
|
Bitu GFX_GetRGB(Bit8u red,Bit8u green,Bit8u blue);
|
|
void GFX_SetShader(const char* src);
|
|
Bitu GFX_SetSize(Bitu width, Bitu height, Bitu flags,
|
|
double scalex, double scaley,
|
|
GFX_CallBack_t callback,
|
|
double pixel_aspect);
|
|
|
|
void GFX_ResetScreen(void);
|
|
void GFX_Start(void);
|
|
void GFX_Stop(void);
|
|
void GFX_SwitchFullScreen(void);
|
|
bool GFX_StartUpdate(Bit8u * & pixels,Bitu & pitch);
|
|
void GFX_EndUpdate( const Bit16u *changedLines );
|
|
void GFX_GetSize(int &width, int &height, bool &fullscreen);
|
|
void GFX_LosingFocus(void);
|
|
|
|
#if defined (WIN32)
|
|
bool GFX_SDLUsingWinDIB(void);
|
|
#endif
|
|
|
|
#if defined (REDUCE_JOYSTICK_POLLING)
|
|
void MAPPER_UpdateJoysticks(void);
|
|
#endif
|
|
|
|
#endif
|