/* RetroArch - A frontend for libretro. * Copyright (C) 2010-2014 - Hans-Kristian Arntzen * Copyright (C) 2011-2015 - Daniel De Matteis * * RetroArch 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 Found- * ation, either version 3 of the License, or (at your option) any later version. * * RetroArch 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 RetroArch. * If not, see . */ #ifndef _VIDEO_VIEWPORT_H #define _VIDEO_VIEWPORT_H #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct video_viewport { int x; int y; unsigned width; unsigned height; unsigned full_width; unsigned full_height; } video_viewport_t; enum aspect_ratio { ASPECT_RATIO_4_3 = 0, ASPECT_RATIO_16_9, ASPECT_RATIO_16_10, ASPECT_RATIO_16_15, ASPECT_RATIO_1_1, ASPECT_RATIO_2_1, ASPECT_RATIO_3_2, ASPECT_RATIO_3_4, ASPECT_RATIO_4_1, ASPECT_RATIO_4_4, ASPECT_RATIO_5_4, ASPECT_RATIO_6_5, ASPECT_RATIO_7_9, ASPECT_RATIO_8_3, ASPECT_RATIO_8_7, ASPECT_RATIO_19_12, ASPECT_RATIO_19_14, ASPECT_RATIO_30_17, ASPECT_RATIO_32_9, ASPECT_RATIO_CONFIG, ASPECT_RATIO_SQUARE, ASPECT_RATIO_CORE, ASPECT_RATIO_CUSTOM, ASPECT_RATIO_END }; #define LAST_ASPECT_RATIO ASPECT_RATIO_CUSTOM enum rotation { ORIENTATION_NORMAL = 0, ORIENTATION_VERTICAL, ORIENTATION_FLIPPED, ORIENTATION_FLIPPED_ROTATED, ORIENTATION_END }; extern char rotation_lut[4][32]; /* ABGR color format defines */ #define WHITE 0xffffffffu #define RED 0xff0000ffu #define GREEN 0xff00ff00u #define BLUE 0xffff0000u #define YELLOW 0xff00ffffu #define PURPLE 0xffff00ffu #define CYAN 0xffffff00u #define ORANGE 0xff0063ffu #define SILVER 0xff8c848cu #define LIGHTBLUE 0xFFFFE0E0U #define LIGHTORANGE 0xFFE0EEFFu struct aspect_ratio_elem { char name[64]; float value; }; extern struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END]; /** * video_viewport_set_square_pixel: * @width : Width. * @height : Height. * * Sets viewport to square pixel aspect ratio based on @width and @height. **/ void video_viewport_set_square_pixel(unsigned width, unsigned height); /** * video_viewport_set_core: * * Sets viewport to aspect ratio set by core. **/ void video_viewport_set_core(void); /** * video_viewport_set_config: * * Sets viewport to config aspect ratio. **/ void video_viewport_set_config(void); /** * video_viewport_get_scaled_integer: * @vp : Viewport handle * @width : Width. * @height : Height. * @aspect_ratio : Aspect ratio (in float). * @keep_aspect : Preserve aspect ratio? * * Gets viewport scaling dimensions based on * scaled integer aspect ratio. **/ void video_viewport_get_scaled_integer(struct video_viewport *vp, unsigned width, unsigned height, float aspect_ratio, bool keep_aspect); #ifdef __cplusplus } #endif #endif