Rename lots of files to help prevent compile time name conflicts.

ugfx_release_2.6
inmarket 2014-08-20 17:42:53 +10:00
parent fcbb66a939
commit 0f3f8f68f8
94 changed files with 857 additions and 828 deletions

View File

@ -36,7 +36,7 @@
#include "gwinosc.h"
/* Include internal GWIN routines so we can build our own superset class */
#include "src/gwin/class_gwin.h"
#include "src/gwin/gwin_class.h"
/* How many flat-line sample before we trigger */
#define FLATLINE_SAMPLES 8

View File

@ -43,7 +43,7 @@
#include "gwinosc.h"
/* Include internal GWIN routines so we can build our own superset class */
#include "src/gwin/class_gwin.h"
#include "src/gwin/gwin_class.h"
/* How many flat-line sample before we trigger */
#define FLATLINE_SAMPLES 8

View File

@ -4,4 +4,4 @@ GFXSRC += $(GFXLIB)/drivers/gaudio/vs1053/gaudio_play_lld.c
# Required include directories
GFXINC += $(GFXLIB)/drivers/gaudio/vs1053
GFXDEFS += -DGFX_USE_GTIMER=GFX_USE_GAUDIO
#GFXDEFS += -DGFX_USE_GTIMER=GFX_USE_GAUDIO

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gadc/gadc.c
* @file src/gadc/gadc_gadc.c
* @brief GADC sub-system code.
*
* @addtogroup GADC
@ -17,7 +17,7 @@
#if GFX_USE_GADC
/* Include the driver defines */
#include "src/gadc/driver.h"
#include "driver.h"
#if GADC_MAX_HIGH_SPEED_SAMPLERATE > GADC_MAX_SAMPLE_FREQUENCY/2
#error "GADC: GADC_MAX_HIGH_SPEED_SAMPLERATE has been set too high. It must be less than half the maximum CPU rate"

View File

@ -1 +1 @@
GFXSRC += $(GFXLIB)/src/gadc/gadc.c
GFXSRC += $(GFXLIB)/src/gadc/gadc_gadc.c

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gaudio/gaudio.c
* @file src/gaudio/gaudio_gaudio.c
* @brief GAUDIO sub-system code.
*
* @addtogroup GAUDIO
@ -17,7 +17,7 @@
#if GFX_USE_GAUDIO
#if GAUDIO_NEED_PLAY
#include "src/gaudio/driver_play.h"
#include "driver_play.h"
static gfxQueueASync playList;
static gfxSem playComplete;
@ -32,7 +32,7 @@
#endif
#if GAUDIO_NEED_RECORD
#include "src/gaudio/driver_record.h"
#include "driver_record.h"
static gfxQueueGSync recordList;
static uint16_t recordFlags;

View File

@ -1 +1 @@
GFXSRC += $(GFXLIB)/src/gaudio/gaudio.c
GFXSRC += $(GFXLIB)/src/gaudio/gaudio_gaudio.c

View File

@ -72,7 +72,7 @@ for file in *.c; do
defname='GDISP_INCLUDE_FONT_'$upper
echo '#if defined('$defname') && '$defname >> fonts.h
echo '#define GDISP_FONT_FOUND' >> fonts.h
echo '#include "src/gdisp/fonts/'$file'"' >> fonts.h
echo '#include "'$file'"' >> fonts.h
echo '#endif' >> fonts.h
done

View File

@ -3,87 +3,87 @@
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS10) && GDISP_INCLUDE_FONT_DEJAVUSANS10
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSans10.c"
#include "DejaVuSans10.c"
#endif
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS12_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS12_AA
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSans12_aa.c"
#include "DejaVuSans12_aa.c"
#endif
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS12) && GDISP_INCLUDE_FONT_DEJAVUSANS12
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSans12.c"
#include "DejaVuSans12.c"
#endif
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS16_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS16_AA
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSans16_aa.c"
#include "DejaVuSans16_aa.c"
#endif
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS16) && GDISP_INCLUDE_FONT_DEJAVUSANS16
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSans16.c"
#include "DejaVuSans16.c"
#endif
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS24_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS24_AA
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSans24_aa.c"
#include "DejaVuSans24_aa.c"
#endif
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS24) && GDISP_INCLUDE_FONT_DEJAVUSANS24
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSans24.c"
#include "DejaVuSans24.c"
#endif
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS32_AA) && GDISP_INCLUDE_FONT_DEJAVUSANS32_AA
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSans32_aa.c"
#include "DejaVuSans32_aa.c"
#endif
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANS32) && GDISP_INCLUDE_FONT_DEJAVUSANS32
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSans32.c"
#include "DejaVuSans32.c"
#endif
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA) && GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSansBold12_aa.c"
#include "DejaVuSansBold12_aa.c"
#endif
#if defined(GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12) && GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/DejaVuSansBold12.c"
#include "DejaVuSansBold12.c"
#endif
#if defined(GDISP_INCLUDE_FONT_FIXED_10X20) && GDISP_INCLUDE_FONT_FIXED_10X20
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/fixed_10x20.c"
#include "fixed_10x20.c"
#endif
#if defined(GDISP_INCLUDE_FONT_FIXED_5X8) && GDISP_INCLUDE_FONT_FIXED_5X8
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/fixed_5x8.c"
#include "fixed_5x8.c"
#endif
#if defined(GDISP_INCLUDE_FONT_FIXED_7X14) && GDISP_INCLUDE_FONT_FIXED_7X14
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/fixed_7x14.c"
#include "fixed_7x14.c"
#endif
#if defined(GDISP_INCLUDE_FONT_LARGENUMBERS) && GDISP_INCLUDE_FONT_LARGENUMBERS
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/LargeNumbers.c"
#include "LargeNumbers.c"
#endif
#if defined(GDISP_INCLUDE_FONT_UI1) && GDISP_INCLUDE_FONT_UI1
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/UI1.c"
#include "UI1.c"
#endif
#if defined(GDISP_INCLUDE_FONT_UI2) && GDISP_INCLUDE_FONT_UI2
#define GDISP_FONT_FOUND
#include "src/gdisp/fonts/UI2.c"
#include "UI2.c"
#endif
#if defined(GDISP_INCLUDE_USER_FONTS) && GDISP_INCLUDE_USER_FONTS

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gdisp/colors.h
* @file src/gdisp/gdisp_colors.h
* @brief GDISP color definitions header file.
*
* @defgroup Colors Colors

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gdisp/fonts.c
* @file src/gdisp/gdisp_fonts.c
* @brief GDISP Font Handling.
*
* @addtogroup GDISP
@ -17,7 +17,7 @@
#if GFX_USE_GDISP && GDISP_NEED_TEXT
#include "mcufont.h"
#include "mcufont/mcufont.h"
/* Custom flag to indicate dynamically allocated font */
#define FONT_FLAG_DYNAMIC 0x80

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gdisp/gdisp.c
* @file src/gdisp/gdisp_gdisp.c
* @brief GDISP Driver code.
*
* @addtogroup GDISP
@ -17,7 +17,7 @@
#if GFX_USE_GDISP
/* Include the low level driver information */
#include "src/gdisp/driver.h"
#include "driver.h"
#if 1
#undef INLINE
@ -2768,7 +2768,7 @@ void gdispGDrawBox(GDisplay *g, coord_t x, coord_t y, coord_t cx, coord_t cy, co
#endif
#if GDISP_NEED_TEXT
#include "mcufont.h"
#include "mcufont/mcufont.h"
#if GDISP_NEED_ANTIALIAS && GDISP_HARDWARE_PIXELREAD
static void drawcharline(int16_t x, int16_t y, uint8_t count, uint8_t alpha, void *state) {

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gdisp/image.c
* @file src/gdisp/gdisp_image.c
* @brief GDISP generic image code.
*
* @defgroup Image Image

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gdisp/image.h
* @file src/gdisp/gdisp_image.h
* @brief GDISP image header file.
*
* @defgroup Image Image

View File

@ -185,7 +185,7 @@ extern GDisplay *GDISP;
/*===========================================================================*/
/* Load our color definitions and pixel formats */
#include "colors.h"
#include "gdisp_colors.h"
/**
* @brief The type of a pixel.
@ -995,7 +995,7 @@ void gdispGDrawBox(GDisplay *g, coord_t x, coord_t y, coord_t cx, coord_t cy, co
#endif
#if GDISP_NEED_IMAGE || defined(__DOXYGEN__)
#include "src/gdisp/image.h"
#include "gdisp_image.h"
#endif
#endif /* GFX_USE_GDISP */

View File

@ -1,11 +1,11 @@
GFXSRC += $(GFXLIB)/src/gdisp/gdisp.c \
$(GFXLIB)/src/gdisp/fonts.c \
$(GFXLIB)/src/gdisp/image.c \
$(GFXLIB)/src/gdisp/image_native.c \
$(GFXLIB)/src/gdisp/image_gif.c \
$(GFXLIB)/src/gdisp/image_bmp.c \
$(GFXLIB)/src/gdisp/image_jpg.c \
$(GFXLIB)/src/gdisp/image_png.c
GFXSRC += $(GFXLIB)/src/gdisp/gdisp_gdisp.c \
$(GFXLIB)/src/gdisp/gdisp_fonts.c \
$(GFXLIB)/src/gdisp/gdisp_image.c \
$(GFXLIB)/src/gdisp/gdisp_image_native.c \
$(GFXLIB)/src/gdisp/gdisp_image_gif.c \
$(GFXLIB)/src/gdisp/gdisp_image_bmp.c \
$(GFXLIB)/src/gdisp/gdisp_image_jpg.c \
$(GFXLIB)/src/gdisp/gdisp_image_png.c
MFDIR = $(GFXLIB)/src/gdisp/mcufont
include $(GFXLIB)/src/gdisp/mcufont/mcufont.mk

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gevent/gevent.c
* @file src/gevent/gevent_gevent.c
* @brief GEVENT Driver code.
*
* @addtogroup GEVENT

View File

@ -1 +1 @@
GFXSRC += $(GFXLIB)/src/gevent/gevent.c
GFXSRC += $(GFXLIB)/src/gevent/gevent_gevent.c

View File

@ -5,11 +5,17 @@
/* disk I/O modules and attach it to FatFs module with common interface. */
/*-----------------------------------------------------------------------*/
/**
* @file src/gfile/gfile_fatfs_diskio_chibios.c
* @brief GFILE FATFS wrapper.
*
*/
#include "gfx.h"
#if GFX_USE_GFILE && GFILE_NEED_FATFS && GFX_USE_OS_CHIBIOS
#include "fatfs_wrapper.h"
#include "gfile_fatfs_wrapper.h"
#if HAL_USE_MMC_SPI && HAL_USE_SDC
#error "cannot specify both MMC_SPI and SDC drivers"

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gfile/fatfs_wrapper.c
* @file src/gfile/gfile_fatfs_wrapper.c
* @brief GFILE FATFS wrapper.
*
*/
@ -15,7 +15,7 @@
#if GFX_USE_GFILE && GFILE_NEED_FATFS
#include "fatfs_wrapper.h"
#include "gfile_fatfs_wrapper.h"
// Include the source we want
#include "3rdparty/fatfs-0.10b/src/ff.c"

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gfile/fatfs_wrapper.h
* @file src/gfile/gfile_fatfs_wrapper.h
* @brief GFILE FATFS wrapper.
*
*/

View File

@ -18,7 +18,6 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
//#include <unistd.h>
static bool_t NativeDel(const char *fname);
static bool_t NativeExists(const char *fname);

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gfile/gfile.c
* @file src/gfile/gfile_gfile.c
* @brief GFILE code.
*
*/

View File

@ -5,11 +5,17 @@
/* disk I/O modules and attach it to FatFs module with common interface. */
/*-----------------------------------------------------------------------*/
/**
* @file src/gfile/gfile_petitfs_diskio_chibios.c
* @brief GFILE FATFS wrapper.
*
*/
#include "gfx.h"
#if GFX_USE_GFILE && GFILE_NEED_PETITFS && GFX_USE_OS_CHIBIOS
#include "petitfs_wrapper.h"
#include "gfile_petitfs_wrapper.h"
#include <string.h>

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gfile/petitfs_wrapper.c
* @file src/gfile/gfile_petitfs_wrapper.c
* @brief GFILE PETITFS wrapper.
*
*/
@ -15,7 +15,7 @@
#if GFX_USE_GFILE && GFILE_NEED_PETITFS
#include "petitfs_wrapper.h"
#include "gfile_petitfs_wrapper.h"
// Include the source we want
#include "3rdparty/petitfs-0.03/src/pff.c"

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gfile/petitfs_wrapper.h
* @file src/gfile/gfile_petitfs_wrapper.h
* @brief GFILE PETITFS wrapper.
*
*/

View File

@ -1,18 +1,18 @@
GFXSRC += $(GFXLIB)/src/gfile/gfile.c \
$(GFXLIB)/src/gfile/inc_nativefs.c \
$(GFXLIB)/src/gfile/inc_ramfs.c \
$(GFXLIB)/src/gfile/inc_romfs.c \
$(GFXLIB)/src/gfile/inc_fatfs.c \
$(GFXLIB)/src/gfile/inc_petitfs.c \
$(GFXLIB)/src/gfile/inc_memfs.c \
$(GFXLIB)/src/gfile/inc_chibiosfs.c \
$(GFXLIB)/src/gfile/inc_strings.c \
$(GFXLIB)/src/gfile/inc_printg.c \
$(GFXLIB)/src/gfile/inc_scang.c \
$(GFXLIB)/src/gfile/inc_stdio.c \
$(GFXLIB)/src/gfile/fatfs_wrapper.c \
$(GFXLIB)/src/gfile/fatfs_chibios_diskio.c \
$(GFXLIB)/src/gfile/petitfs_wrapper.c \
$(GFXLIB)/src/gfile/petitfs_chibios_diskio.c \
GFXSRC += $(GFXLIB)/src/gfile/gfile_gfile.c \
$(GFXLIB)/src/gfile/gfile_fs_native.c \
$(GFXLIB)/src/gfile/gfile_fs_ram.c \
$(GFXLIB)/src/gfile/gfile_fs_rom.c \
$(GFXLIB)/src/gfile/gfile_fs_fatfs.c \
$(GFXLIB)/src/gfile/gfile_fs_petitfs.c \
$(GFXLIB)/src/gfile/gfile_fs_mem.c \
$(GFXLIB)/src/gfile/gfile_fs_chibios.c \
$(GFXLIB)/src/gfile/gfile_fs_strings.c \
$(GFXLIB)/src/gfile/gfile_printg.c \
$(GFXLIB)/src/gfile/gfile_scang.c \
$(GFXLIB)/src/gfile/gfile_stdio.c \
$(GFXLIB)/src/gfile/gfile_fatfs_wrapper.c \
$(GFXLIB)/src/gfile/gfile_fatfs_diskio_chibios.c \
$(GFXLIB)/src/gfile/gfile_petitfs_wrapper.c \
$(GFXLIB)/src/gfile/gfile_petitfs_diskio_chibios.c \

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/ginput/dial.c
* @file src/ginput/ginput_dial.c
* @brief GINPUT dial code.
*
* @defgroup Dial Dial
@ -17,7 +17,7 @@
#if GFX_USE_GINPUT && GINPUT_NEED_DIAL
#include "src/ginput/driver_dial.h"
#include "driver_dial.h"
static GTIMER_DECL(DialTimer);
static struct DialStatus_t {

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/ginput/dial.h
* @file src/ginput/ginput_dial.h
* @brief GINPUT GFX User Input subsystem header file.
*
* @defgroup Dial Dial

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/ginput/ginput.c
* @file src/ginput/ginput_ginput.c
* @brief GINPUT subsystem common code.
*
* @addtogroup GINPUT

View File

@ -1,23 +1,23 @@
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
/**
* @file src/ginput/keyboard.c
* @brief GINPUT keyboard code.
*
* @defgroup Keyboard Keyboard
* @ingroup GINPUT
*
* @{
*/
#include "gfx.h"
#if (GFX_USE_GINPUT && GINPUT_NEED_KEYBOARD) || defined(__DOXYGEN__)
#error "GINPUT: GINPUT_NEED_KEYBOARD - Not Implemented Yet"
#endif /* GFX_USE_GINPUT && GINPUT_NEED_KEYBOARD */
/** @} */
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
/**
* @file src/ginput/ginput_keyboard.c
* @brief GINPUT keyboard code.
*
* @defgroup Keyboard Keyboard
* @ingroup GINPUT
*
* @{
*/
#include "gfx.h"
#if (GFX_USE_GINPUT && GINPUT_NEED_KEYBOARD) || defined(__DOXYGEN__)
#error "GINPUT: GINPUT_NEED_KEYBOARD - Not Implemented Yet"
#endif /* GFX_USE_GINPUT && GINPUT_NEED_KEYBOARD */
/** @} */

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/ginput/keyboard.h
* @file src/ginput/ginput_keyboard.h
* @brief GINPUT GFX User Input subsystem header file.
*
* @defgroup Keyboard Keyboard

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/ginput/mouse.c
* @file src/ginput/ginput_mouse.c
* @brief GINPUT mouse/touch code.
*
* @defgroup Mouse Mouse
@ -17,7 +17,7 @@
#if (GFX_USE_GINPUT && GINPUT_NEED_MOUSE) || defined(__DOXYGEN__)
#include "src/ginput/driver_mouse.h"
#include "driver_mouse.h"
#if GINPUT_MOUSE_NEED_CALIBRATION
#if !defined(GFX_USE_GDISP) || !GFX_USE_GDISP

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/ginput/mouse.h
* @file src/ginput/ginput_mouse.h
* @brief GINPUT GFX User Input subsystem header file for mouse and touch.
*
* @defgroup Mouse Mouse

View File

@ -1,156 +1,156 @@
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
/**
* @file src/ginput/toggle.c
* @brief GINPUT toggle code.
*
* @defgroup Toggle Toggle
* @ingroup GINPUT
* @{
*/
#include "gfx.h"
#if (GFX_USE_GINPUT && GINPUT_NEED_TOGGLE) || defined(__DOXYGEN__)
#include "src/ginput/driver_toggle.h"
#define GINPUT_TOGGLE_ISON 0x01
#define GINPUT_TOGGLE_INVERT 0x02
static GTIMER_DECL(ToggleTimer);
static struct GEventToggleStatus_t {
uint8_t status;
} ToggleStatus[GINPUT_TOGGLE_NUM_PORTS];
// Our polling function
static void TogglePoll(void *param) {
(void) param;
const GToggleConfig *ptc;
GSourceListener *psl;
GEventToggle *pe;
unsigned i, bits, mask;
uint8_t state;
// Loop while there are bits to get
for(ptc = GInputToggleConfigTable, i=0; i < GINPUT_TOGGLE_NUM_PORTS; ptc++) {
// Get the next block of bits
bits = ginput_lld_toggle_getbits(ptc) ^ ptc->invert;
// Extract the bits of use
for(mask = ptc->mask; i < GINPUT_TOGGLE_NUM_PORTS && mask; mask >>= 1, bits >>= 1) {
// Ignore bits not in our mask
if (!(mask & 1))
continue;
// Calculate our new state
state = ToggleStatus[i].status & ~GINPUT_TOGGLE_ISON;
if (state & GINPUT_TOGGLE_INVERT)
bits ^= 1;
if (bits & 1)
state |= GINPUT_TOGGLE_ISON;
// Has it changed?
if ((state ^ ToggleStatus[i].status) & GINPUT_TOGGLE_ISON) {
// Save the new state
ToggleStatus[i].status = state;
// Send the event to the listeners that are interested.
psl = 0;
while ((psl = geventGetSourceListener((GSourceHandle)(ToggleStatus+i), psl))) {
if (!(pe = (GEventToggle *)geventGetEventBuffer(psl)))
continue;
if ((state & GINPUT_TOGGLE_ISON)) {
if ((psl->listenflags & GLISTEN_TOGGLE_ON)) {
pe->type = GEVENT_TOGGLE;
pe->instance = i;
pe->on = TRUE;
geventSendEvent(psl);
}
} else {
if ((psl->listenflags & GLISTEN_TOGGLE_OFF)) {
pe->type = GEVENT_TOGGLE;
pe->instance = i;
pe->on = FALSE;
geventSendEvent(psl);
}
}
}
}
// Next toggle switch
i++;
}
}
}
/* Hardware Toggle/Switch/Button Functions */
GSourceHandle ginputGetToggle(uint16_t instance) {
const GToggleConfig *ptc;
if (instance >= GINPUT_TOGGLE_NUM_PORTS)
return 0;
// Do we need to initialise the toggle subsystem?
if (!gtimerIsActive(&ToggleTimer)) {
for(ptc = GInputToggleConfigTable; ptc < GInputToggleConfigTable+sizeof(GInputToggleConfigTable)/sizeof(GInputToggleConfigTable[0]); ptc++)
ginput_lld_toggle_init(ptc);
gtimerStart(&ToggleTimer, TogglePoll, 0, TRUE, GINPUT_TOGGLE_POLL_PERIOD);
}
// OK - return this input
return (GSourceHandle)(ToggleStatus+instance);
}
// If invert is true, invert the on/off sense for the toggle
void ginputInvertToggle(uint16_t instance, bool_t invert) {
if (instance >= GINPUT_TOGGLE_NUM_PORTS)
return;
if (invert) {
if (!(ToggleStatus[instance].status & GINPUT_TOGGLE_INVERT)) {
ToggleStatus[instance].status |= GINPUT_TOGGLE_INVERT;
ToggleStatus[instance].status ^= GINPUT_TOGGLE_ISON;
}
} else {
if ((ToggleStatus[instance].status & GINPUT_TOGGLE_INVERT)) {
ToggleStatus[instance].status &= ~GINPUT_TOGGLE_INVERT;
ToggleStatus[instance].status ^= GINPUT_TOGGLE_ISON;
}
}
}
/* Get the current toggle status.
* Returns FALSE on error (eg invalid instance)
*/
bool_t ginputGetToggleStatus(uint16_t instance, GEventToggle *ptoggle) {
// Win32 threads don't seem to recognise priority and/or pre-emption
// so we add a sleep here to prevent 100% polled applications from locking up.
gfxSleepMilliseconds(1);
if (instance >= GINPUT_TOGGLE_NUM_PORTS)
return FALSE;
ptoggle->type = GEVENT_TOGGLE;
ptoggle->instance = instance;
ptoggle->on = (ToggleStatus[instance].status & GINPUT_TOGGLE_ISON) ? TRUE : FALSE;
return TRUE;
}
/* Wake up the mouse driver from an interrupt service routine (there may be new readings available) */
void ginputToggleWakeup(void) {
gtimerJab(&ToggleTimer);
}
/* Wake up the mouse driver from an interrupt service routine (there may be new readings available) */
void ginputToggleWakeupI(void) {
gtimerJabI(&ToggleTimer);
}
#endif /* GFX_USE_GINPUT && GINPUT_NEED_TOGGLE */
/** @} */
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
/**
* @file src/ginput/ginput_toggle.c
* @brief GINPUT toggle code.
*
* @defgroup Toggle Toggle
* @ingroup GINPUT
* @{
*/
#include "gfx.h"
#if (GFX_USE_GINPUT && GINPUT_NEED_TOGGLE) || defined(__DOXYGEN__)
#include "driver_toggle.h"
#define GINPUT_TOGGLE_ISON 0x01
#define GINPUT_TOGGLE_INVERT 0x02
static GTIMER_DECL(ToggleTimer);
static struct GEventToggleStatus_t {
uint8_t status;
} ToggleStatus[GINPUT_TOGGLE_NUM_PORTS];
// Our polling function
static void TogglePoll(void *param) {
(void) param;
const GToggleConfig *ptc;
GSourceListener *psl;
GEventToggle *pe;
unsigned i, bits, mask;
uint8_t state;
// Loop while there are bits to get
for(ptc = GInputToggleConfigTable, i=0; i < GINPUT_TOGGLE_NUM_PORTS; ptc++) {
// Get the next block of bits
bits = ginput_lld_toggle_getbits(ptc) ^ ptc->invert;
// Extract the bits of use
for(mask = ptc->mask; i < GINPUT_TOGGLE_NUM_PORTS && mask; mask >>= 1, bits >>= 1) {
// Ignore bits not in our mask
if (!(mask & 1))
continue;
// Calculate our new state
state = ToggleStatus[i].status & ~GINPUT_TOGGLE_ISON;
if (state & GINPUT_TOGGLE_INVERT)
bits ^= 1;
if (bits & 1)
state |= GINPUT_TOGGLE_ISON;
// Has it changed?
if ((state ^ ToggleStatus[i].status) & GINPUT_TOGGLE_ISON) {
// Save the new state
ToggleStatus[i].status = state;
// Send the event to the listeners that are interested.
psl = 0;
while ((psl = geventGetSourceListener((GSourceHandle)(ToggleStatus+i), psl))) {
if (!(pe = (GEventToggle *)geventGetEventBuffer(psl)))
continue;
if ((state & GINPUT_TOGGLE_ISON)) {
if ((psl->listenflags & GLISTEN_TOGGLE_ON)) {
pe->type = GEVENT_TOGGLE;
pe->instance = i;
pe->on = TRUE;
geventSendEvent(psl);
}
} else {
if ((psl->listenflags & GLISTEN_TOGGLE_OFF)) {
pe->type = GEVENT_TOGGLE;
pe->instance = i;
pe->on = FALSE;
geventSendEvent(psl);
}
}
}
}
// Next toggle switch
i++;
}
}
}
/* Hardware Toggle/Switch/Button Functions */
GSourceHandle ginputGetToggle(uint16_t instance) {
const GToggleConfig *ptc;
if (instance >= GINPUT_TOGGLE_NUM_PORTS)
return 0;
// Do we need to initialise the toggle subsystem?
if (!gtimerIsActive(&ToggleTimer)) {
for(ptc = GInputToggleConfigTable; ptc < GInputToggleConfigTable+sizeof(GInputToggleConfigTable)/sizeof(GInputToggleConfigTable[0]); ptc++)
ginput_lld_toggle_init(ptc);
gtimerStart(&ToggleTimer, TogglePoll, 0, TRUE, GINPUT_TOGGLE_POLL_PERIOD);
}
// OK - return this input
return (GSourceHandle)(ToggleStatus+instance);
}
// If invert is true, invert the on/off sense for the toggle
void ginputInvertToggle(uint16_t instance, bool_t invert) {
if (instance >= GINPUT_TOGGLE_NUM_PORTS)
return;
if (invert) {
if (!(ToggleStatus[instance].status & GINPUT_TOGGLE_INVERT)) {
ToggleStatus[instance].status |= GINPUT_TOGGLE_INVERT;
ToggleStatus[instance].status ^= GINPUT_TOGGLE_ISON;
}
} else {
if ((ToggleStatus[instance].status & GINPUT_TOGGLE_INVERT)) {
ToggleStatus[instance].status &= ~GINPUT_TOGGLE_INVERT;
ToggleStatus[instance].status ^= GINPUT_TOGGLE_ISON;
}
}
}
/* Get the current toggle status.
* Returns FALSE on error (eg invalid instance)
*/
bool_t ginputGetToggleStatus(uint16_t instance, GEventToggle *ptoggle) {
// Win32 threads don't seem to recognise priority and/or pre-emption
// so we add a sleep here to prevent 100% polled applications from locking up.
gfxSleepMilliseconds(1);
if (instance >= GINPUT_TOGGLE_NUM_PORTS)
return FALSE;
ptoggle->type = GEVENT_TOGGLE;
ptoggle->instance = instance;
ptoggle->on = (ToggleStatus[instance].status & GINPUT_TOGGLE_ISON) ? TRUE : FALSE;
return TRUE;
}
/* Wake up the mouse driver from an interrupt service routine (there may be new readings available) */
void ginputToggleWakeup(void) {
gtimerJab(&ToggleTimer);
}
/* Wake up the mouse driver from an interrupt service routine (there may be new readings available) */
void ginputToggleWakeupI(void) {
gtimerJabI(&ToggleTimer);
}
#endif /* GFX_USE_GINPUT && GINPUT_NEED_TOGGLE */
/** @} */

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/ginput/toggle.h
* @file src/ginput/ginput_toggle.h
* @brief GINPUT GFX User Input subsystem header file.
*
* @defgroup Toggle Toggle

View File

@ -39,10 +39,10 @@
*/
// Include various ginput types
#include "src/ginput/mouse.h"
#include "src/ginput/keyboard.h"
#include "src/ginput/toggle.h"
#include "src/ginput/dial.h"
#include "ginput_mouse.h"
#include "ginput_keyboard.h"
#include "ginput_toggle.h"
#include "ginput_dial.h"
#endif /* GFX_USE_GINPUT */

View File

@ -1,5 +1,5 @@
GFXSRC += $(GFXLIB)/src/ginput/ginput.c \
$(GFXLIB)/src/ginput/mouse.c \
$(GFXLIB)/src/ginput/keyboard.c \
$(GFXLIB)/src/ginput/toggle.c \
$(GFXLIB)/src/ginput/dial.c
GFXSRC += $(GFXLIB)/src/ginput/ginput_ginput.c \
$(GFXLIB)/src/ginput/ginput_mouse.c \
$(GFXLIB)/src/ginput/ginput_keyboard.c \
$(GFXLIB)/src/ginput/ginput_toggle.c \
$(GFXLIB)/src/ginput/ginput_dial.c

View File

@ -1,226 +1,226 @@
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
/**
* @file src/gmisc/arrayops.c
* @brief GMISC Array Operations code.
*
* @addtogroup GMISC
* @{
*/
#include "gfx.h"
#if GFX_USE_GMISC && GMISC_NEED_ARRAYOPS
void gmiscArrayConvert(ArrayDataFormat srcfmt, void *src, ArrayDataFormat dstfmt, void *dst, size_t cnt) {
uint8_t *src8, *dst8;
uint16_t *src16, *dst16;
dst8 = dst;
dst16 = dst;
src8 = src;
src16 = src;
/* We do this as a big switch in order to optimise efficiency for each transfer type */
switch(dstfmt) {
case ARRAY_DATA_4BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: if (dst != src) while(cnt--) { *dst8++ = *src8++; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 8); } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst8++ = *src8++ >> 4; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 128) >> 4; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 6; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 512) >> 6; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 8; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 2048) >> 8; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 10; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 8192) >> 10; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 12; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 32768) >> 12; } break;
}
break;
case ARRAY_DATA_4BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 8); } break;
case ARRAY_DATA_4BITSIGNED: if (dst != src) while(cnt--) { *dst8++ = *src8++; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 128) >> 4; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst8++ = *src8++ >> 4; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 512) >> 6; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 6; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 2048) >> 8; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 8; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 8192) >> 10; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 10; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 32768) >> 12; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 12; } break;
}
break;
case ARRAY_DATA_8BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst8++ = *src8++ << 4; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 8) << 4; } break;
case ARRAY_DATA_8BITUNSIGNED: if (dst != src) while(cnt--) { *dst8++ = *src8++; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 128); } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 2; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 512) >> 2; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 4; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 2048) >> 4; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 6; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 8192) >> 6; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 8; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 32768) >> 8; } break;
}
break;
case ARRAY_DATA_8BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 8) << 4; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst8++ = *src8++ << 4; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 128); } break;
case ARRAY_DATA_8BITSIGNED: if (dst != src) while(cnt--) { *dst8++ = *src8++; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 512) >> 2; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 2; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 2048) >> 4; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 4; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 8192) >> 6; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 6; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 32768) >> 8; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 8; } break;
}
break;
case ARRAY_DATA_10BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 6; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 6; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 2; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 2; } break;
case ARRAY_DATA_10BITUNSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512); } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) >> 2; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 4; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) >> 4; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 6; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 6; } break;
}
break;
case ARRAY_DATA_10BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 6; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 6; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 2; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 2; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512); } break;
case ARRAY_DATA_10BITSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) >> 2; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) >> 4; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 4; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 6; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 6; } break;
}
break;
case ARRAY_DATA_12BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 8; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 8; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 4; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 4; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ << 2; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 2; } break;
case ARRAY_DATA_12BITUNSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048); } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) >> 2; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 4; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 4; } break;
}
break;
case ARRAY_DATA_12BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 8; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 8; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 4; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 4; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 2; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = *src16++ << 2; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048); } break;
case ARRAY_DATA_12BITSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) >> 2; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 4; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 4; } break;
}
break;
case ARRAY_DATA_14BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 10; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 10; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 6; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 6; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ << 4; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 4; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ << 2; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) >> 2; } break;
case ARRAY_DATA_14BITUNSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192); } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 2; } break;
}
break;
case ARRAY_DATA_14BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 10; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 10; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 6; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 6; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 4; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = *src16++ << 4; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) << 2; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = *src16++ << 2; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192); } break;
case ARRAY_DATA_14BITSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 2; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
}
break;
case ARRAY_DATA_16BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 12; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 12; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 8; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 8; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ << 6; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 6; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ << 4; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) >> 4; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) >> 2; } break;
case ARRAY_DATA_16BITUNSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768); } break;
}
break;
case ARRAY_DATA_16BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 12; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 12; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 8; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 8; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 6; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = *src16++ << 6; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) << 4; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = *src16++ << 4; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) << 2; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768); } break;
case ARRAY_DATA_16BITSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
}
break;
}
}
#endif /* GFX_USE_GMISC && GMISC_NEED_ARRAYOPS */
/** @} */
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
/**
* @file src/gmisc/gmisc_arrayops.c
* @brief GMISC Array Operations code.
*
* @addtogroup GMISC
* @{
*/
#include "gfx.h"
#if GFX_USE_GMISC && GMISC_NEED_ARRAYOPS
void gmiscArrayConvert(ArrayDataFormat srcfmt, void *src, ArrayDataFormat dstfmt, void *dst, size_t cnt) {
uint8_t *src8, *dst8;
uint16_t *src16, *dst16;
dst8 = dst;
dst16 = dst;
src8 = src;
src16 = src;
/* We do this as a big switch in order to optimise efficiency for each transfer type */
switch(dstfmt) {
case ARRAY_DATA_4BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: if (dst != src) while(cnt--) { *dst8++ = *src8++; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 8); } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst8++ = *src8++ >> 4; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 128) >> 4; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 6; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 512) >> 6; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 8; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 2048) >> 8; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 10; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 8192) >> 10; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 12; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 32768) >> 12; } break;
}
break;
case ARRAY_DATA_4BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 8); } break;
case ARRAY_DATA_4BITSIGNED: if (dst != src) while(cnt--) { *dst8++ = *src8++; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 128) >> 4; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst8++ = *src8++ >> 4; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 512) >> 6; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 6; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 2048) >> 8; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 8; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 8192) >> 10; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 10; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 32768) >> 12; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 12; } break;
}
break;
case ARRAY_DATA_8BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst8++ = *src8++ << 4; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 8) << 4; } break;
case ARRAY_DATA_8BITUNSIGNED: if (dst != src) while(cnt--) { *dst8++ = *src8++; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 128); } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 2; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 512) >> 2; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 4; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 2048) >> 4; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 6; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 8192) >> 6; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst8++ = *src16++ >> 8; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 32768) >> 8; } break;
}
break;
case ARRAY_DATA_8BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 8) << 4; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst8++ = *src8++ << 4; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst8++ = (*src8++ ^ 128); } break;
case ARRAY_DATA_8BITSIGNED: if (dst != src) while(cnt--) { *dst8++ = *src8++; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 512) >> 2; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 2; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 2048) >> 4; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 4; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 8192) >> 6; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 6; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst8++ = (*src16++ ^ 32768) >> 8; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst8++ = *src16++ >> 8; } break;
}
break;
case ARRAY_DATA_10BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 6; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 6; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 2; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 2; } break;
case ARRAY_DATA_10BITUNSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512); } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) >> 2; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 4; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) >> 4; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 6; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 6; } break;
}
break;
case ARRAY_DATA_10BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 6; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 6; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 2; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 2; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512); } break;
case ARRAY_DATA_10BITSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) >> 2; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) >> 4; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 4; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 6; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 6; } break;
}
break;
case ARRAY_DATA_12BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 8; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 8; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 4; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 4; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ << 2; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 2; } break;
case ARRAY_DATA_12BITUNSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048); } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) >> 2; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 4; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 4; } break;
}
break;
case ARRAY_DATA_12BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 8; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 8; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 4; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 4; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 2; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = *src16++ << 2; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048); } break;
case ARRAY_DATA_12BITSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) >> 2; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 4; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 4; } break;
}
break;
case ARRAY_DATA_14BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 10; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 10; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 6; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 6; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ << 4; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 4; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ << 2; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) >> 2; } break;
case ARRAY_DATA_14BITUNSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192); } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 2; } break;
}
break;
case ARRAY_DATA_14BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 10; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 10; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 6; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 6; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 4; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = *src16++ << 4; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) << 2; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = *src16++ << 2; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192); } break;
case ARRAY_DATA_14BITSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768) >> 2; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
}
break;
case ARRAY_DATA_16BITUNSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 12; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 12; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = *src8++ << 8; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 8; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ << 6; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 6; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ << 4; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) >> 4; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) >> 2; } break;
case ARRAY_DATA_16BITUNSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
case ARRAY_DATA_16BITSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768); } break;
}
break;
case ARRAY_DATA_16BITSIGNED:
switch(srcfmt) {
case ARRAY_DATA_4BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 8) << 12; } break;
case ARRAY_DATA_4BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 12; } break;
case ARRAY_DATA_8BITUNSIGNED: while(cnt--) { *dst16++ = (*src8++ ^ 128) << 8; } break;
case ARRAY_DATA_8BITSIGNED: while(cnt--) { *dst16++ = *src8++ << 8; } break;
case ARRAY_DATA_10BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 512) << 6; } break;
case ARRAY_DATA_10BITSIGNED: while(cnt--) { *dst16++ = *src16++ << 6; } break;
case ARRAY_DATA_12BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 2048) << 4; } break;
case ARRAY_DATA_12BITSIGNED: while(cnt--) { *dst16++ = *src16++ << 4; } break;
case ARRAY_DATA_14BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 8192) << 2; } break;
case ARRAY_DATA_14BITSIGNED: while(cnt--) { *dst16++ = *src16++ >> 2; } break;
case ARRAY_DATA_16BITUNSIGNED: while(cnt--) { *dst16++ = (*src16++ ^ 32768); } break;
case ARRAY_DATA_16BITSIGNED: if (dst != src) while(cnt--) { *dst16++ = *src16++; } break;
}
break;
}
}
#endif /* GFX_USE_GMISC && GMISC_NEED_ARRAYOPS */
/** @} */

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gmisc/gmisc.c
* @file src/gmisc/gmisc_gmisc.c
* @brief GMISC Functions.
*
*/

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gmisc/trig.c
* @file src/gmisc/gmisc_trig.c
* @brief GMISC Trig Functions.
*
* @addtogroup GMISC

View File

@ -1,3 +1,3 @@
GFXSRC += $(GFXLIB)/src/gmisc/gmisc.c \
$(GFXLIB)/src/gmisc/arrayops.c \
$(GFXLIB)/src/gmisc/trig.c
GFXSRC += $(GFXLIB)/src/gmisc/gmisc_gmisc.c \
$(GFXLIB)/src/gmisc/gmisc_arrayops.c \
$(GFXLIB)/src/gmisc/gmisc_trig.c

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gqueue/gqueue.c
* @file src/gqueue/gqueue_gqueue.c
* @brief GQUEUE source file.
*/

View File

@ -1 +1 @@
GFXSRC += $(GFXLIB)/src/gqueue/gqueue.c
GFXSRC += $(GFXLIB)/src/gqueue/gqueue_gqueue.c

View File

@ -1,238 +1,238 @@
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
/**
* @file src/gtimer/gtimer.c
* @brief GTIMER sub-system code.
*
* @addtogroup GTIMER
* @{
*/
#include "gfx.h"
#if GFX_USE_GTIMER || defined(__DOXYGEN__)
#define GTIMER_FLG_PERIODIC 0x0001
#define GTIMER_FLG_INFINITE 0x0002
#define GTIMER_FLG_JABBED 0x0004
#define GTIMER_FLG_SCHEDULED 0x0008
/* Don't rework this macro to use a ternary operator - the gcc compiler stuffs it up */
#define TimeIsWithin(x, start, end) ((end >= start && x >= start && x <= end) || (end < start && (x >= start || x <= end)))
/* This mutex protects access to our tables */
static gfxMutex mutex;
static gfxThreadHandle hThread = 0;
static GTimer *pTimerHead = 0;
static gfxSem waitsem;
static DECLARE_THREAD_STACK(waTimerThread, GTIMER_THREAD_WORKAREA_SIZE);
/*===========================================================================*/
/* Driver local functions. */
/*===========================================================================*/
static DECLARE_THREAD_FUNCTION(GTimerThreadHandler, arg) {
(void)arg;
GTimer *pt;
systemticks_t tm;
systemticks_t nxtTimeout;
systemticks_t lastTime;
GTimerFunction fn;
void *param;
nxtTimeout = TIME_INFINITE;
lastTime = 0;
while(1) {
/* Wait for work to do. */
gfxYield(); // Give someone else a go no matter how busy we are
gfxSemWait(&waitsem, nxtTimeout);
restartTimerChecks:
// Our reference time
tm = gfxSystemTicks();
nxtTimeout = TIME_INFINITE;
/* We need to obtain the mutex */
gfxMutexEnter(&mutex);
if (pTimerHead) {
pt = pTimerHead;
do {
// Do we have something to do for this timer?
if ((pt->flags & GTIMER_FLG_JABBED) || (!(pt->flags & GTIMER_FLG_INFINITE) && TimeIsWithin(pt->when, lastTime, tm))) {
// Is this timer periodic?
if ((pt->flags & GTIMER_FLG_PERIODIC) && pt->period != TIME_IMMEDIATE) {
// Yes - Update ready for the next period
if (!(pt->flags & GTIMER_FLG_INFINITE)) {
// We may have skipped a period.
// We use this complicated formulae rather than a loop
// because the gcc compiler stuffs up the loop so that it
// either loops forever or doesn't get executed at all.
pt->when += ((tm + pt->period - pt->when) / pt->period) * pt->period;
}
// We are definitely no longer jabbed
pt->flags &= ~GTIMER_FLG_JABBED;
} else {
// No - get us off the timers list
if (pt->next == pt->prev)
pTimerHead = 0;
else {
pt->next->prev = pt->prev;
pt->prev->next = pt->next;
if (pTimerHead == pt)
pTimerHead = pt->next;
}
pt->flags = 0;
}
// Call the callback function
fn = pt->fn;
param = pt->param;
gfxMutexExit(&mutex);
fn(param);
// We no longer hold the mutex, the callback function may have taken a while
// and our list may have been altered so start again!
goto restartTimerChecks;
}
// Find when we next need to wake up
if (!(pt->flags & GTIMER_FLG_INFINITE) && pt->when - tm < nxtTimeout)
nxtTimeout = pt->when - tm;
pt = pt->next;
} while(pt != pTimerHead);
}
// Ready for the next loop
lastTime = tm;
gfxMutexExit(&mutex);
}
return 0;
}
void _gtimerInit(void)
{
gfxSemInit(&waitsem, 0, 1);
gfxMutexInit(&mutex);
}
void _gtimerDeinit(void)
{
gfxSemDestroy(&waitsem);
gfxMutexDestroy(&mutex);
// Need to destroy GTimer thread here
}
void gtimerInit(GTimer* pt)
{
pt->flags = 0;
}
void gtimerDeinit(GTimer* pt)
{
gtimerStop(pt);
}
void gtimerStart(GTimer *pt, GTimerFunction fn, void *param, bool_t periodic, delaytime_t millisec) {
gfxMutexEnter(&mutex);
// Start our thread if not already going
if (!hThread) {
hThread = gfxThreadCreate(waTimerThread, sizeof(waTimerThread), GTIMER_THREAD_PRIORITY, GTimerThreadHandler, 0);
if (hThread) {gfxThreadClose(hThread);} // We never really need the handle again
}
// Is this already scheduled?
if (pt->flags & GTIMER_FLG_SCHEDULED) {
// Cancel it!
if (pt->next == pt->prev)
pTimerHead = 0;
else {
pt->next->prev = pt->prev;
pt->prev->next = pt->next;
if (pTimerHead == pt)
pTimerHead = pt->next;
}
}
// Set up the timer structure
pt->fn = fn;
pt->param = param;
pt->flags = GTIMER_FLG_SCHEDULED;
if (periodic)
pt->flags |= GTIMER_FLG_PERIODIC;
if (millisec == TIME_INFINITE) {
pt->flags |= GTIMER_FLG_INFINITE;
pt->period = TIME_INFINITE;
} else {
pt->period = gfxMillisecondsToTicks(millisec);
pt->when = gfxSystemTicks() + pt->period;
}
// Just pop it on the end of the queue
if (pTimerHead) {
pt->next = pTimerHead;
pt->prev = pTimerHead->prev;
pt->prev->next = pt;
pt->next->prev = pt;
} else
pt->next = pt->prev = pTimerHead = pt;
// Bump the thread
if (!(pt->flags & GTIMER_FLG_INFINITE))
gfxSemSignal(&waitsem);
gfxMutexExit(&mutex);
}
void gtimerStop(GTimer *pt) {
gfxMutexEnter(&mutex);
if (pt->flags & GTIMER_FLG_SCHEDULED) {
// Cancel it!
if (pt->next == pt->prev)
pTimerHead = 0;
else {
pt->next->prev = pt->prev;
pt->prev->next = pt->next;
if (pTimerHead == pt)
pTimerHead = pt->next;
}
// Make sure we know the structure is dead!
pt->flags = 0;
}
gfxMutexExit(&mutex);
}
bool_t gtimerIsActive(GTimer *pt) {
return (pt->flags & GTIMER_FLG_SCHEDULED) ? TRUE : FALSE;
}
void gtimerJab(GTimer *pt) {
gfxMutexEnter(&mutex);
// Jab it!
pt->flags |= GTIMER_FLG_JABBED;
// Bump the thread
gfxSemSignal(&waitsem);
gfxMutexExit(&mutex);
}
void gtimerJabI(GTimer *pt) {
// Jab it!
pt->flags |= GTIMER_FLG_JABBED;
// Bump the thread
gfxSemSignalI(&waitsem);
}
#endif /* GFX_USE_GTIMER */
/** @} */
/*
* This file is subject to the terms of the GFX License. If a copy of
* the license was not distributed with this file, you can obtain one at:
*
* http://ugfx.org/license.html
*/
/**
* @file src/gtimer/gtimer_gtimer.c
* @brief GTIMER sub-system code.
*
* @addtogroup GTIMER
* @{
*/
#include "gfx.h"
#if GFX_USE_GTIMER || defined(__DOXYGEN__)
#define GTIMER_FLG_PERIODIC 0x0001
#define GTIMER_FLG_INFINITE 0x0002
#define GTIMER_FLG_JABBED 0x0004
#define GTIMER_FLG_SCHEDULED 0x0008
/* Don't rework this macro to use a ternary operator - the gcc compiler stuffs it up */
#define TimeIsWithin(x, start, end) ((end >= start && x >= start && x <= end) || (end < start && (x >= start || x <= end)))
/* This mutex protects access to our tables */
static gfxMutex mutex;
static gfxThreadHandle hThread = 0;
static GTimer *pTimerHead = 0;
static gfxSem waitsem;
static DECLARE_THREAD_STACK(waTimerThread, GTIMER_THREAD_WORKAREA_SIZE);
/*===========================================================================*/
/* Driver local functions. */
/*===========================================================================*/
static DECLARE_THREAD_FUNCTION(GTimerThreadHandler, arg) {
(void)arg;
GTimer *pt;
systemticks_t tm;
systemticks_t nxtTimeout;
systemticks_t lastTime;
GTimerFunction fn;
void *param;
nxtTimeout = TIME_INFINITE;
lastTime = 0;
while(1) {
/* Wait for work to do. */
gfxYield(); // Give someone else a go no matter how busy we are
gfxSemWait(&waitsem, nxtTimeout);
restartTimerChecks:
// Our reference time
tm = gfxSystemTicks();
nxtTimeout = TIME_INFINITE;
/* We need to obtain the mutex */
gfxMutexEnter(&mutex);
if (pTimerHead) {
pt = pTimerHead;
do {
// Do we have something to do for this timer?
if ((pt->flags & GTIMER_FLG_JABBED) || (!(pt->flags & GTIMER_FLG_INFINITE) && TimeIsWithin(pt->when, lastTime, tm))) {
// Is this timer periodic?
if ((pt->flags & GTIMER_FLG_PERIODIC) && pt->period != TIME_IMMEDIATE) {
// Yes - Update ready for the next period
if (!(pt->flags & GTIMER_FLG_INFINITE)) {
// We may have skipped a period.
// We use this complicated formulae rather than a loop
// because the gcc compiler stuffs up the loop so that it
// either loops forever or doesn't get executed at all.
pt->when += ((tm + pt->period - pt->when) / pt->period) * pt->period;
}
// We are definitely no longer jabbed
pt->flags &= ~GTIMER_FLG_JABBED;
} else {
// No - get us off the timers list
if (pt->next == pt->prev)
pTimerHead = 0;
else {
pt->next->prev = pt->prev;
pt->prev->next = pt->next;
if (pTimerHead == pt)
pTimerHead = pt->next;
}
pt->flags = 0;
}
// Call the callback function
fn = pt->fn;
param = pt->param;
gfxMutexExit(&mutex);
fn(param);
// We no longer hold the mutex, the callback function may have taken a while
// and our list may have been altered so start again!
goto restartTimerChecks;
}
// Find when we next need to wake up
if (!(pt->flags & GTIMER_FLG_INFINITE) && pt->when - tm < nxtTimeout)
nxtTimeout = pt->when - tm;
pt = pt->next;
} while(pt != pTimerHead);
}
// Ready for the next loop
lastTime = tm;
gfxMutexExit(&mutex);
}
return 0;
}
void _gtimerInit(void)
{
gfxSemInit(&waitsem, 0, 1);
gfxMutexInit(&mutex);
}
void _gtimerDeinit(void)
{
gfxSemDestroy(&waitsem);
gfxMutexDestroy(&mutex);
// Need to destroy GTimer thread here
}
void gtimerInit(GTimer* pt)
{
pt->flags = 0;
}
void gtimerDeinit(GTimer* pt)
{
gtimerStop(pt);
}
void gtimerStart(GTimer *pt, GTimerFunction fn, void *param, bool_t periodic, delaytime_t millisec) {
gfxMutexEnter(&mutex);
// Start our thread if not already going
if (!hThread) {
hThread = gfxThreadCreate(waTimerThread, sizeof(waTimerThread), GTIMER_THREAD_PRIORITY, GTimerThreadHandler, 0);
if (hThread) {gfxThreadClose(hThread);} // We never really need the handle again
}
// Is this already scheduled?
if (pt->flags & GTIMER_FLG_SCHEDULED) {
// Cancel it!
if (pt->next == pt->prev)
pTimerHead = 0;
else {
pt->next->prev = pt->prev;
pt->prev->next = pt->next;
if (pTimerHead == pt)
pTimerHead = pt->next;
}
}
// Set up the timer structure
pt->fn = fn;
pt->param = param;
pt->flags = GTIMER_FLG_SCHEDULED;
if (periodic)
pt->flags |= GTIMER_FLG_PERIODIC;
if (millisec == TIME_INFINITE) {
pt->flags |= GTIMER_FLG_INFINITE;
pt->period = TIME_INFINITE;
} else {
pt->period = gfxMillisecondsToTicks(millisec);
pt->when = gfxSystemTicks() + pt->period;
}
// Just pop it on the end of the queue
if (pTimerHead) {
pt->next = pTimerHead;
pt->prev = pTimerHead->prev;
pt->prev->next = pt;
pt->next->prev = pt;
} else
pt->next = pt->prev = pTimerHead = pt;
// Bump the thread
if (!(pt->flags & GTIMER_FLG_INFINITE))
gfxSemSignal(&waitsem);
gfxMutexExit(&mutex);
}
void gtimerStop(GTimer *pt) {
gfxMutexEnter(&mutex);
if (pt->flags & GTIMER_FLG_SCHEDULED) {
// Cancel it!
if (pt->next == pt->prev)
pTimerHead = 0;
else {
pt->next->prev = pt->prev;
pt->prev->next = pt->next;
if (pTimerHead == pt)
pTimerHead = pt->next;
}
// Make sure we know the structure is dead!
pt->flags = 0;
}
gfxMutexExit(&mutex);
}
bool_t gtimerIsActive(GTimer *pt) {
return (pt->flags & GTIMER_FLG_SCHEDULED) ? TRUE : FALSE;
}
void gtimerJab(GTimer *pt) {
gfxMutexEnter(&mutex);
// Jab it!
pt->flags |= GTIMER_FLG_JABBED;
// Bump the thread
gfxSemSignal(&waitsem);
gfxMutexExit(&mutex);
}
void gtimerJabI(GTimer *pt) {
// Jab it!
pt->flags |= GTIMER_FLG_JABBED;
// Bump the thread
gfxSemSignalI(&waitsem);
}
#endif /* GFX_USE_GTIMER */
/** @} */

View File

@ -1 +1 @@
GFXSRC += $(GFXLIB)/src/gtimer/gtimer.c
GFXSRC += $(GFXLIB)/src/gtimer/gtimer_gtimer.c

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/button.c
* @file src/gwin/gwin_button.c
* @brief GWIN sub-system button code
*/
@ -14,7 +14,7 @@
#if GFX_USE_GWIN && GWIN_NEED_BUTTON
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
// Parameters for various shapes
#define RND_CNR_SIZE 5 // Rounded corner size for rounded buttons

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/button.h
* @file src/gwin/gwin_button.h
* @brief GWIN Graphic window subsystem header file.
*
* @defgroup Button Button
@ -24,7 +24,7 @@
#ifndef _GWIN_BUTTON_H
#define _GWIN_BUTTON_H
/* This file is included within "gwin/gwidget.h" */
/* This file is included within "src/gwin/gwin_widget.h" */
/**
* @brief The Event Type for a Button Event

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/checkbox.c
* @file src/gwin/gwin_checkbox.c
* @brief GWIN sub-system button code
*/
@ -14,7 +14,7 @@
#if (GFX_USE_GWIN && GWIN_NEED_CHECKBOX) || defined(__DOXYGEN__)
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
// Our checked state
#define GCHECKBOX_FLG_CHECKED (GWIN_FIRST_CONTROL_FLAG<<0)

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/checkbox.h
* @file src/gwin/gwin_checkbox.h
* @brief GWIN Graphic window subsystem header file.
*
* @defgroup Checkbox Checkbox
@ -22,7 +22,7 @@
#ifndef _GWIN_CHECKBOX_H
#define _GWIN_CHECKBOX_H
/* This file is included within "gwin/gwidget.h" */
/* This file is included within "src/gwin/gwin_widget.h" */
/*===========================================================================*/
/* Driver constants. */

View File

@ -6,7 +6,7 @@
*/
/*
* @file src/gwin/class_gwin.h
* @file src/gwin/gwin_class.h
* @brief GWIN Graphic window subsystem header file.
*
* @defgroup Internal Internal
@ -14,7 +14,7 @@
*
* @note These definitions are normally not used by an application program. They are useful
* only if you want to create your own custom GWIN window or widget.
* @note To access these definitions you must include "gwin/class_gwin.h" in your source file.
* @note To access these definitions you must include "src/gwin/gwin_class.h" in your source file.
*
* @{
*/

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/console.c
* @file src/gwin/gwin_console.c
* @brief GWIN sub-system console code.
*/
@ -16,7 +16,7 @@
#include <string.h>
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
#define GWIN_CONSOLE_USE_CLEAR_LINES TRUE // Clear each line before using it
#define GWIN_CONSOLE_USE_FILLED_CHARS FALSE // Use filled characters instead of drawn characters

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/console.h
* @file src/gwin/gwin_console.h
* @brief GWIN Graphic window subsystem header file.
*
* @defgroup Console Console
@ -24,7 +24,7 @@
#ifndef _GWIN_CONSOLE_H
#define _GWIN_CONSOLE_H
/* This file is included within "gwin/gwin.h" */
/* This file is included within "src/gwin/sys_defs.h" */
// A console window. Supports wrapped text writing and a cursor.
typedef struct GConsoleObject {

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/gcontainer.c
* @file src/gwin/gwin_container.c
* @brief GWIN sub-system container code
*/
@ -14,7 +14,7 @@
#if GFX_USE_GWIN && GWIN_NEED_CONTAINERS
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
void _gcontainerInit(void)
{

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/gcontainer.h
* @file src/gwin/gwin_container.h
*
* @defgroup Container Container
* @ingroup Containers
@ -21,7 +21,7 @@
#ifndef _GCONTAINER_H
#define _GCONTAINER_H
/* This file is included within "gwin/gwin.h" */
/* This file is included within "src/gwin/sys_defs.h" */
// Forward definition
struct GContainerObject;
@ -154,7 +154,7 @@ extern "C" {
/* Include extra container types */
#if GWIN_NEED_FRAME || defined(__DOXYGEN__)
#include "src/gwin/frame.h"
#include "gwin_frame.h"
#endif
#endif /* _GCONTAINER_H */

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/frame.c
* @file src/gwin/gwin_frame.c
* @brief GWIN sub-system frame code.
*/
@ -14,7 +14,7 @@
#if GFX_USE_GWIN && GWIN_NEED_FRAME
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
/* Some position values */
#define BUTTON_X 18 // Button Width

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/frame.h
* @file src/gwin/gwin_frame.h
* @brief GWIN Graphic window subsystem header file.
*
* @defgroup Frame Frame
@ -23,6 +23,8 @@
#ifndef _GWIN_FRAME_H
#define _GWIN_FRAME_H
/* This file is included from src/gwin/gwin_container.h */
/**
* @brief Flags for gwinFrameCreate()
* @{

View File

@ -18,7 +18,7 @@
#error "GWIN: GL3D only support GDISP_PIXELFORMAT_RGB565 color format (TinyGL limitation)"
#endif
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
#include "3rdparty/tinygl-0.4-ugfx/src/zgl.h"

View File

@ -22,7 +22,7 @@
#ifndef _GWIN_GL3D_H
#define _GWIN_GL3D_H
/* This file is included within "gwin/gwin.h" */
/* This file is included within "src/gwin/sys_defs.h" */
// A gl3d window

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/graph.c
* @file src/gwin/gwin_graph.c
* @brief GWIN sub-system button code
*/
@ -14,7 +14,7 @@
#if GFX_USE_GWIN && GWIN_NEED_GRAPH
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
#define GGRAPH_FLG_CONNECTPOINTS (GWIN_FIRST_CONTROL_FLAG<<0)
#define GGRAPH_ARROW_SIZE 5

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/graph.h
* @file src/gwin/gwin_graph.h
* @brief GWIN GRAPH module header file
*
* @defgroup Graph Graph
@ -22,7 +22,7 @@
#ifndef _GWIN_GRAPH_H
#define _GWIN_GRAPH_H
/* This file is included within "gwin/gwin.h" */
/* This file is included within "src/gwin/sys_defs.h" */
typedef enum GGraphPointType_e {
GGRAPH_POINT_NONE, GGRAPH_POINT_DOT, GGRAPH_POINT_SQUARE, GGRAPH_POINT_CIRCLE

View File

@ -5,11 +5,16 @@
* http://ugfx.org/license.html
*/
/**
* @file src/gwin/gwin_gwin.c
* @brief GWIN sub-system code
*/
#include "gfx.h"
#if GFX_USE_GWIN
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
/*-----------------------------------------------
* Data

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/gimage.c
* @file src/gwin/gwin_image.c
* @brief GWIN sub-system image code
*/
@ -14,7 +14,7 @@
#if GFX_USE_GWIN && GWIN_NEED_IMAGE
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
#define widget(gh) ((GImageObject *)gh)

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/gimage.h
* @file src/gwin/gwin_image.h
* @brief GWIN image widget header file.
*
* @defgroup ImageBox ImageBox
@ -27,7 +27,7 @@
#ifndef _GWIN_IMAGE_H
#define _GWIN_IMAGE_H
// This file is included within "gwin/gwin.h"
// This file is included within "src/gwin/sys_defs.h"
// An image window
typedef struct GImageObject {

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/label.c
* @file src/gwin/gwin_label.c
* @brief GWIN label widget header file
*/
@ -14,7 +14,7 @@
#if GFX_USE_GWIN && GWIN_NEED_LABEL
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
// macros to assist in data type conversions
#define gh2obj ((GLabelObject *)gh)

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/label.h
* @file src/gwin/gwin_label.h
* @brief GWIN label widget header file
*
* @defgroup Label Label
@ -27,7 +27,7 @@
#ifndef _GWIN_LABEL_H
#define _GWIN_LABEL_H
// This file is included within "gwin/gwin.h"
// This file is included within "src/gwin/gwin_widget.h"
// An label window
typedef struct GLabelObject {

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/list.c
* @file src/gwin/gwin_list.c
* @brief GWIN list widget header file
*/
@ -14,7 +14,7 @@
#if GFX_USE_GWIN && GWIN_NEED_LIST
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
#include <string.h>
#include <stdlib.h>

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/list.h
* @file src/gwin/gwin_list.h
* @brief GWIN list widget header file
*
* @defgroup List List
@ -26,7 +26,7 @@
#ifndef _GWIN_LIST_H
#define _GWIN_LIST_H
// This file is included within "gwin/gwin.h"
// This file is included within "src/gwin/gwin_widget.h"
/**
* @brief The event type for a list event

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/progressbar.c
* @file src/gwin/gwin_progressbar.c
* @brief GWIN sub-system progressbar code
*/
@ -14,7 +14,7 @@
#if (GFX_USE_GWIN && GWIN_NEED_PROGRESSBAR) || defined(__DOXYGEN__)
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
// Reset the display position back to the value predicted by the saved progressbar position
static void ResetDisplayPos(GProgressbarObject *gsw) {

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/progressbar.h
* @file src/gwin/gwin_progressbar.h
* @brief GWIN Graphic window subsystem header file.
*
* @defgroup Progressbar Progressbar
@ -22,6 +22,7 @@
#ifndef _GWIN_PROGRESSBAR_H
#define _GWIN_PROGRESSBAR_H
/* This file is included within src/gwin/gwin_widget.h */
// A progressbar window
typedef struct GProgressbarObject {
GWidgetObject w;

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/radio.c
* @file src/gwin/gwin_radio.c
* @brief GWIN sub-system radio button code
*/
@ -14,7 +14,7 @@
#if GFX_USE_GWIN && GWIN_NEED_RADIO
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
#define GRADIO_TAB_CNR 8 // Diagonal corner on active tab
#define GRADIO_TOP_FADE 50 // (GRADIO_TOP_FADE/255)% fade to white for top of tab/button

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/radio.h
* @file src/gwin/gwin_radio.h
* @brief GWIN Graphic window subsystem header file.
*
* @defgroup RadioButton RadioButton
@ -22,7 +22,7 @@
#ifndef _GWIN_RADIO_H
#define _GWIN_RADIO_H
/* This file is included within "gwin/gwidget.h" */
/* This file is included within "src/gwin/gwin_widget.h" */
/**
* @brief The Event Type for a Radio Event

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/slider.c
* @file src/gwin/gwin_slider.c
* @brief GWIN sub-system slider code
*/
@ -14,7 +14,7 @@
#if (GFX_USE_GWIN && GWIN_NEED_SLIDER) || defined(__DOXYGEN__)
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
#ifndef GWIN_SLIDER_DEAD_BAND
#define GWIN_SLIDER_DEAD_BAND 5

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/slider.h
* @file src/gwin/gwin_slider.h
* @brief GWIN Graphic window subsystem header file.
*
* @defgroup Slider Slider
@ -22,7 +22,7 @@
#ifndef _GWIN_SLIDER_H
#define _GWIN_SLIDER_H
/* This file is included within "gwin/gwidget.h" */
/* This file is included within "src/gwin/gwin_widget.h" */
#define GEVENT_GWIN_SLIDER (GEVENT_GWIN_CTRL_FIRST+1)

View File

@ -5,13 +5,18 @@
* http://ugfx.org/license.html
*/
/**
* @file src/gwin/gwin_widget.c
* @brief GWIN sub-system widget code
*/
#include "gfx.h"
#if GFX_USE_GWIN && GWIN_NEED_WIDGET
#include <string.h>
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
/* Our listener for events for widgets */
static GListener gl;

View File

@ -6,7 +6,7 @@
*/
/**
* @file src/gwin/gwidget.h
* @file src/gwin/gwin_widget.h
* @brief GWIN Widgets header file.
*
* @defgroup Widget Widget
@ -23,7 +23,7 @@
#ifndef _GWIDGET_H
#define _GWIDGET_H
/* This file is included within "gwin/gwin.h" */
/* This file is included within "src/gwin/sys_defs.h" */
// Forward definition
struct GWidgetObject;
@ -360,31 +360,31 @@ bool_t gwinAttachListener(GListener *pl);
/* Include extra widget types */
#if GWIN_NEED_BUTTON || defined(__DOXYGEN__)
#include "src/gwin/button.h"
#include "gwin_button.h"
#endif
#if GWIN_NEED_SLIDER || defined(__DOXYGEN__)
#include "src/gwin/slider.h"
#include "gwin_slider.h"
#endif
#if GWIN_NEED_CHECKBOX || defined(__DOXYGEN__)
#include "src/gwin/checkbox.h"
#include "gwin_checkbox.h"
#endif
#if GWIN_NEED_RADIO || defined(__DOXYGEN__)
#include "src/gwin/radio.h"
#include "gwin_radio.h"
#endif
#if GWIN_NEED_LABEL || defined(__DOXYGEN__)
#include "src/gwin/label.h"
#include "gwin_label.h"
#endif
#if GWIN_NEED_LIST || defined(__DOXYGEN__)
#include "src/gwin/list.h"
#include "gwin_list.h"
#endif
#if GWIN_NEED_PROGRESSBAR || defined(__DOXYGEN__)
#include "src/gwin/progressbar.h"
#include "gwin_progressbar.h"
#endif
#endif /* _GWIDGET_H */

View File

@ -5,6 +5,11 @@
* http://ugfx.org/license.html
*/
/**
* @file src/gwin/gwin_wm.c
* @brief GWIN sub-system window manager code
*/
#include "gfx.h"
#if GFX_USE_GWIN && !GWIN_NEED_WINDOWMANAGER
@ -13,7 +18,7 @@
*/
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
// Needed if there is no window manager
#define MIN_WIN_WIDTH 1
@ -147,7 +152,7 @@
#if GFX_USE_GWIN && GWIN_NEED_WINDOWMANAGER
#include "src/gwin/class_gwin.h"
#include "gwin_class.h"
/*-----------------------------------------------
* Data

View File

@ -950,26 +950,26 @@ extern "C" {
/* Include widgets */
#if GWIN_NEED_WIDGET || defined(__DOXYGEN__)
#include "src/gwin/gwidget.h"
#include "gwin_widget.h"
#endif
/* Include containers */
#if GWIN_NEED_CONTAINERS || defined(__DOXYGEN__)
#include "src/gwin/gcontainer.h"
#include "gwin_container.h"
#endif
/* Include vanilla window objects */
#if GWIN_NEED_CONSOLE || defined(__DOXYGEN__)
#include "src/gwin/console.h"
#include "gwin_console.h"
#endif
#if GWIN_NEED_GRAPH || defined(__DOXYGEN__)
#include "src/gwin/graph.h"
#include "gwin_graph.h"
#endif
#if GWIN_NEED_IMAGE || defined(__DOXYGEN__)
#include "src/gwin/gimage.h"
#include "gwin_image.h"
#endif
#if GWIN_NEED_GL3D || defined(__DOXYGEN__)
#include "src/gwin/gwin_gl3d.h"
#include "gwin_gl3d.h"
#endif
#endif /* GFX_USE_GWIN */

View File

@ -1,18 +1,18 @@
GFXSRC += $(GFXLIB)/src/gwin/gwin.c \
$(GFXLIB)/src/gwin/gwidget.c \
$(GFXLIB)/src/gwin/gwm.c \
$(GFXLIB)/src/gwin/console.c \
$(GFXLIB)/src/gwin/graph.c \
$(GFXLIB)/src/gwin/button.c \
$(GFXLIB)/src/gwin/slider.c \
$(GFXLIB)/src/gwin/checkbox.c \
$(GFXLIB)/src/gwin/gimage.c \
$(GFXLIB)/src/gwin/label.c \
$(GFXLIB)/src/gwin/radio.c \
$(GFXLIB)/src/gwin/list.c \
$(GFXLIB)/src/gwin/progressbar.c \
$(GFXLIB)/src/gwin/gcontainer.c \
$(GFXLIB)/src/gwin/frame.c \
GFXSRC += $(GFXLIB)/src/gwin/gwin_gwin.c \
$(GFXLIB)/src/gwin/gwin_widget.c \
$(GFXLIB)/src/gwin/gwin_wm.c \
$(GFXLIB)/src/gwin/gwin_console.c \
$(GFXLIB)/src/gwin/gwin_graph.c \
$(GFXLIB)/src/gwin/gwin_button.c \
$(GFXLIB)/src/gwin/gwin_slider.c \
$(GFXLIB)/src/gwin/gwin_checkbox.c \
$(GFXLIB)/src/gwin/gwin_image.c \
$(GFXLIB)/src/gwin/gwin_label.c \
$(GFXLIB)/src/gwin/gwin_radio.c \
$(GFXLIB)/src/gwin/gwin_list.c \
$(GFXLIB)/src/gwin/gwin_progressbar.c \
$(GFXLIB)/src/gwin/gwin_container.c \
$(GFXLIB)/src/gwin/gwin_frame.c \
$(GFXLIB)/src/gwin/gwin_gl3d.c \
GFXINC += $(GFXLIB)/3rdparty/tinygl-0.4-ugfx/include