sane-project-backends/backend/plustek-pp_types.h

190 wiersze
4.7 KiB
C

/* @file plustek-pp_types.h
* @brief some typedefs and error codes
*
* Copyright (C) 2000-2013 Gerhard Jaeger <gerhard@gjaeger.de>
*
* History:
* 0.30 - initial version
* 0.31 - no changes
* 0.32 - added _VAR_NOT_USED()
* 0.33 - no changes
* 0.34 - no changes
* 0.35 - no changes
* 0.36 - added _E_ABORT and _E_VERSION
* 0.37 - moved _MAX_DEVICES to plustek_scan.h
* added pChar and TabDef
* 0.38 - comment change for _E_NOSUPP
* added RGBByteDef, RGBWordDef and RGBULongDef
* replaced AllPointer by DataPointer
* replaced AllType by DataType
* added _LOBYTE and _HIBYTE stuff
* added _E_NO_ASIC and _E_NORESOURCE
* 0.39 - no changes
* 0.40 - moved _VAR_NOT_USED and TabDef to plustek-share.h
* 0.41 - no changes
* 0.42 - moved errorcodes to plustek-share.h
* 0.43 - no changes
* 0.44 - define Long and ULong types to use int32_t, so
* the code should still work on 64 bit machines
* .
* <hr>
* This file is part of the SANE package.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* As a special exception, the authors of SANE give permission for
* additional uses of the libraries contained in this release of SANE.
*
* The exception is that, if you link a SANE library with other files
* to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public
* License. Your use of that executable is in no way restricted on
* account of linking the SANE library code into it.
*
* This exception does not, however, invalidate any other reasons why
* the executable file might be covered by the GNU General Public
* License.
*
* If you submit changes to SANE to the maintainers to be included in
* a subsequent release, you agree by submitting the changes that
* those changes may be distributed with this exception intact.
*
* If you write modifications of your own for SANE, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
* <hr>
*/
#ifndef __DRV_TYPES_H__
#define __DRV_TYPES_H__
/* define some useful types */
typedef int Bool;
typedef char Char;
typedef char *pChar;
typedef unsigned char UChar;
typedef UChar *pUChar;
typedef unsigned char Byte;
typedef Byte *pByte;
typedef short Short;
typedef unsigned short UShort;
typedef UShort *pUShort;
typedef unsigned int UInt;
typedef UInt *pUInt;
/* these definitions will fail for 64 bit machines! */
#if 0
typedef long Long;
typedef long *pLong;
typedef unsigned long ULong;
#endif
typedef int32_t Long;
typedef int32_t *pLong;
typedef uint32_t ULong;
typedef ULong *pULong;
typedef void *pVoid;
/*
* the boolean values
*/
#ifndef _TRUE
# define _TRUE 1
#endif
#ifndef _FALSE
# define _FALSE 0
#endif
#define _LOWORD(x) ((UShort)(x & 0xffff))
#define _HIWORD(x) ((UShort)(x >> 16))
#define _LOBYTE(x) ((Byte)((x) & 0xFF))
#define _HIBYTE(x) ((Byte)((x) >> 8))
/*
* some useful things...
*/
typedef struct
{
Byte b1st;
Byte b2nd;
} WordVal, *pWordVal;
typedef struct
{
WordVal w1st;
WordVal w2nd;
} DWordVal, *pDWordVal;
/* useful for RGB-values */
typedef struct {
Byte Red;
Byte Green;
Byte Blue;
} RGBByteDef, *pRGBByteDef;
typedef struct {
UShort Red;
UShort Green;
UShort Blue;
} RGBUShortDef, *pRGBUShortDef;
typedef struct {
union {
pUChar bp;
pUShort usp;
pULong ulp;
} red;
union {
pUChar bp;
pUShort usp;
pULong ulp;
} green;
union {
pUChar bp;
pUShort usp;
pULong ulp;
} blue;
} RBGPtrDef;
typedef struct {
ULong Red;
ULong Green;
ULong Blue;
} RGBULongDef, *pRGBULongDef;
typedef union {
pUChar pb;
pUShort pw;
pULong pdw;
pRGBByteDef pbrgb;
pRGBUShortDef pusrgb;
pRGBULongDef pulrgb;
} DataPointer, *pDataPointer;
typedef union {
WordVal wOverlap;
DWordVal dwOverlap;
ULong dwValue;
UShort wValue;
Byte bValue;
} DataType, *pDataType;
#endif /* guard __DRV_TYPES_H__ */
/* END PLUSTEK-PP_TYPES.H ...................................................*/