New demo for multiple display support.
This commit is contained in:
parent
ea4af865f1
commit
3b8c572552
75
demos/modules/gdisp/gdisp_multiple_displays/gfxconf.h
Normal file
75
demos/modules/gdisp/gdisp_multiple_displays/gfxconf.h
Normal file
@ -0,0 +1,75 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu <joel@unormal.org>
|
||||
* Copyright (c) 2012, 2013, Andrew Hannam aka inmarket
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the <organization> nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef _GFXCONF_H
|
||||
#define _GFXCONF_H
|
||||
|
||||
/* The operating system to use - one of these must be defined */
|
||||
//#define GFX_USE_OS_CHIBIOS TRUE
|
||||
//#define GFX_USE_OS_WIN32 FALSE
|
||||
//#define GFX_USE_OS_POSIX FALSE
|
||||
|
||||
/* GFX sub-systems to turn on */
|
||||
#define GFX_USE_GDISP TRUE
|
||||
|
||||
/* Features for the GDISP sub-system. */
|
||||
#define GDISP_NEED_VALIDATION TRUE
|
||||
#define GDISP_NEED_CLIP TRUE
|
||||
#define GDISP_NEED_TEXT TRUE
|
||||
#define GDISP_NEED_CIRCLE FALSE
|
||||
#define GDISP_NEED_ELLIPSE FALSE
|
||||
#define GDISP_NEED_ARC FALSE
|
||||
#define GDISP_NEED_SCROLL FALSE
|
||||
#define GDISP_NEED_PIXELREAD FALSE
|
||||
#define GDISP_NEED_CONTROL FALSE
|
||||
#define GDISP_NEED_MULTITHREAD FALSE
|
||||
#define GDISP_NEED_ASYNC FALSE
|
||||
#define GDISP_NEED_MSGAPI FALSE
|
||||
|
||||
#define GDISP_INCLUDE_FONT_UI2 TRUE
|
||||
|
||||
#define GDISP_TOTAL_DISPLAYS 2
|
||||
|
||||
/* Uncomment the following lines and alter the definitions to match your
|
||||
* hardware if you want to try multiple displays on different controllers.
|
||||
* Remember that GDISP_TOTAL_DISPLAYS above must match the **Total**
|
||||
* number of displays in your system across all controllers.
|
||||
*/
|
||||
//#define GDISP_TOTAL_CONTROLLERS 2
|
||||
//#define GDISP_CONTROLLER_LIST GDISPVMT_Win32, GDISPVMT_Win32
|
||||
//#define GDISP_CONTROLLER_DISPLAYS 1, 1
|
||||
//#define GDISP_PIXELFORMAT GDISP_PIXELFORMAT_RGB888
|
||||
//#define GDISP_HARDWARE_DRAWPIXEL TRUE
|
||||
//#define GDISP_HARDWARE_FILLS TRUE
|
||||
//#define GDISP_HARDWARE_PIXELREAD TRUE
|
||||
//#define GDISP_HARDWARE_CONTROL TRUE
|
||||
//#define GDISP_HARDWARE_BITFILLS TRUE
|
||||
//#define GDISP_HARDWARE_SCROLL TRUE
|
||||
|
||||
#endif /* _GFXCONF_H */
|
122
demos/modules/gdisp/gdisp_multiple_displays/main.c
Normal file
122
demos/modules/gdisp/gdisp_multiple_displays/main.c
Normal file
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu <joel@unormal.org>
|
||||
* Copyright (c) 2012, 2013, Andrew Hannam aka inmarket
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the <organization> nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "gfx.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
* This demo demonstrates two ways to talk to multiple displays.
|
||||
*
|
||||
* Method 1 is the preferred way however Method 1 would be useful
|
||||
* when quickly converting existing single display applications.
|
||||
*
|
||||
* Note you can combine the methods using method 2 for the first display
|
||||
* and method 1 for any extra displays.
|
||||
*/
|
||||
|
||||
#define USE_METHOD_1 FALSE
|
||||
|
||||
#if USE_METHOD_1
|
||||
int main(void) {
|
||||
coord_t width, height;
|
||||
coord_t display, i, j;
|
||||
font_t f;
|
||||
GDisplay *g;
|
||||
char buf[16];
|
||||
|
||||
/* Initialize and clear the display */
|
||||
gfxInit();
|
||||
|
||||
/* Get a font to write with */
|
||||
f = gdispOpenFont("*");
|
||||
|
||||
/* Cycle through each display */
|
||||
for(display = 0; display < GDISP_TOTAL_DISPLAYS; display++) {
|
||||
|
||||
// Get the specified display
|
||||
g = gdispGetDisplay(display);
|
||||
|
||||
// Get the screen size
|
||||
width = gdispGGetWidth(g);
|
||||
height = gdispGGetHeight(g);
|
||||
|
||||
/* Draw draw draw */
|
||||
gdispGDrawBox(g, 10, 10, width/2, height/2, Yellow);
|
||||
sprintf(buf, "Display %u", display);
|
||||
gdispGFillStringBox(g, width/2, height/2, width/2-10, height/2-10, buf, f, White, Blue, justifyCenter);
|
||||
gdispGDrawLine(g, 5, 30, width-50, height-40, Red);
|
||||
|
||||
for(i = 5, j = 0; i < width && j < height; i += 7, j += i/20)
|
||||
gdispGDrawPixel(g, i, j, White);
|
||||
}
|
||||
|
||||
while(TRUE) {
|
||||
gfxSleepMilliseconds(500);
|
||||
}
|
||||
}
|
||||
#else
|
||||
int main(void) {
|
||||
coord_t width, height;
|
||||
coord_t display, i, j;
|
||||
font_t f;
|
||||
char buf[16];
|
||||
|
||||
/* Initialize and clear the display */
|
||||
gfxInit();
|
||||
|
||||
/* Get a font to write with */
|
||||
f = gdispOpenFont("*");
|
||||
|
||||
/* Cycle through each display */
|
||||
for(display = 0; display < GDISP_TOTAL_DISPLAYS; display++) {
|
||||
|
||||
// Set the default display to the specified display
|
||||
gdispSetDisplay(gdispGetDisplay(display));
|
||||
|
||||
// Get the screen size
|
||||
width = gdispGetWidth();
|
||||
height = gdispGetHeight();
|
||||
|
||||
/* Draw draw draw */
|
||||
gdispDrawBox(10, 10, width/2, height/2, Yellow);
|
||||
sprintf(buf, "Display %u", display);
|
||||
gdispFillStringBox(width/2, height/2, width/2-10, height/2-10, buf, f, White, Blue, justifyCenter);
|
||||
gdispDrawLine(5, 30, width-50, height-40, Red);
|
||||
|
||||
for(i = 5, j = 0; i < width && j < height; i += 7, j += i/20)
|
||||
gdispDrawPixel(i, j, White);
|
||||
}
|
||||
|
||||
while(TRUE) {
|
||||
gfxSleepMilliseconds(500);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user