Rename lots of files to help prevent compile time name conflicts.
This commit is contained in:
parent
fcbb66a939
commit
0f3f8f68f8
94 changed files with 857 additions and 828 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
|
@ -1 +1 @@
|
|||
GFXSRC += $(GFXLIB)/src/gadc/gadc.c
|
||||
GFXSRC += $(GFXLIB)/src/gadc/gadc_gadc.c
|
||||
|
|
|
@ -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;
|
|
@ -1 +1 @@
|
|||
GFXSRC += $(GFXLIB)/src/gaudio/gaudio.c
|
||||
GFXSRC += $(GFXLIB)/src/gaudio/gaudio_gaudio.c
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/gdisp/colors.h
|
||||
* @file src/gdisp/gdisp_colors.h
|
||||
* @brief GDISP color definitions header file.
|
||||
*
|
||||
* @defgroup Colors Colors
|
|
@ -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
|
|
@ -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) {
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/gdisp/image.c
|
||||
* @file src/gdisp/gdisp_image.c
|
||||
* @brief GDISP generic image code.
|
||||
*
|
||||
* @defgroup Image Image
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/gdisp/image.h
|
||||
* @file src/gdisp/gdisp_image.h
|
||||
* @brief GDISP image header file.
|
||||
*
|
||||
* @defgroup Image Image
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/gevent/gevent.c
|
||||
* @file src/gevent/gevent_gevent.c
|
||||
* @brief GEVENT Driver code.
|
||||
*
|
||||
* @addtogroup GEVENT
|
|
@ -1 +1 @@
|
|||
GFXSRC += $(GFXLIB)/src/gevent/gevent.c
|
||||
GFXSRC += $(GFXLIB)/src/gevent/gevent_gevent.c
|
||||
|
|
|
@ -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"
|
|
@ -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"
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/gfile/fatfs_wrapper.h
|
||||
* @file src/gfile/gfile_fatfs_wrapper.h
|
||||
* @brief GFILE FATFS wrapper.
|
||||
*
|
||||
*/
|
|
@ -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);
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/gfile/gfile.c
|
||||
* @file src/gfile/gfile_gfile.c
|
||||
* @brief GFILE code.
|
||||
*
|
||||
*/
|
|
@ -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>
|
||||
|
|
@ -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"
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/gfile/petitfs_wrapper.h
|
||||
* @file src/gfile/gfile_petitfs_wrapper.h
|
||||
* @brief GFILE PETITFS wrapper.
|
||||
*
|
||||
*/
|
|
@ -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 \
|
||||
|
||||
|
|
@ -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 {
|
|
@ -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
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/ginput/ginput.c
|
||||
* @file src/ginput/ginput_ginput.c
|
||||
* @brief GINPUT subsystem common code.
|
||||
*
|
||||
* @addtogroup GINPUT
|
|
@ -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 */
|
||||
/** @} */
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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 */
|
||||
/** @} */
|
|
@ -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
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
/** @} */
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/gmisc/gmisc.c
|
||||
* @file src/gmisc/gmisc_gmisc.c
|
||||
* @brief GMISC Functions.
|
||||
*
|
||||
*/
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/gmisc/trig.c
|
||||
* @file src/gmisc/gmisc_trig.c
|
||||
* @brief GMISC Trig Functions.
|
||||
*
|
||||
* @addtogroup GMISC
|
|
@ -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
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file src/gqueue/gqueue.c
|
||||
* @file src/gqueue/gqueue_gqueue.c
|
||||
* @brief GQUEUE source file.
|
||||
*/
|
||||
|
|
@ -1 +1 @@
|
|||
GFXSRC += $(GFXLIB)/src/gqueue/gqueue.c
|
||||
GFXSRC += $(GFXLIB)/src/gqueue/gqueue_gqueue.c
|
||||
|
|
|
@ -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 */
|
||||
/** @} */
|
||||
|
|
@ -1 +1 @@
|
|||
GFXSRC += $(GFXLIB)/src/gtimer/gtimer.c
|
||||
GFXSRC += $(GFXLIB)/src/gtimer/gtimer_gtimer.c
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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)
|
|
@ -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. */
|
|
@ -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.
|
||||
*
|
||||
* @{
|
||||
*/
|
|
@ -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
|
|
@ -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 {
|
|
@ -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)
|
||||
{
|
|
@ -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 */
|
|
@ -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
|
|
@ -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()
|
||||
* @{
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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)
|
||||
|
|
@ -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 {
|
|
@ -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)
|
|
@ -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 {
|
|
@ -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>
|
||||
|
|
@ -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
|
|
@ -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) {
|
|
@ -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;
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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)
|
||||
|
|
@ -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;
|
|
@ -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 */
|
|
@ -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
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue