Initial import of the CDE 2.1.30 sources from the Open Group.

This commit is contained in:
Peter Howkins
2012-03-10 18:21:40 +00:00
commit 83b6996daa
18978 changed files with 3945623 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
/* $XConsortium: ilhplrotation.h /main/3 1995/10/23 15:48:46 rswiston $ */
/**---------------------------------------------------------------------
***
*** (c)Copyright 1991 Hewlett-Packard Co.
***
*** RESTRICTED RIGHTS LEGEND
*** Use, duplication, or disclosure by the U.S. Government is subject to
*** restrictions as set forth in sub-paragraph (c)(1)(ii) of the Rights in
*** Technical Data and Computer Software clause in DFARS 252.227-7013.
*** Hewlett-Packard Company
*** 3000 Hanover Street
*** Palo Alto, CA 94304 U.S.A.
*** Rights for non-DOD U.S. Government Departments and Agencies are as set
*** forth in FAR 52.227-19(c)(1,2).
***
***-------------------------------------------------------------------*/
/*
NOTE to ALL users:
1.See the last section of this file for an Example about how to use this
library.
NOTES to DOS/WINDOWS users only:
1.Define FAR_DATA_PTR, if you want to use 32bit data pointers instead of
the 16bit ones. This is not necessary in Compact, Large, or Huge
Memory Models.
*/
#ifndef NeedFunctionPrototypes
#if defined(FUNCPROTO) || defined(__STDC__) || defined(__cplusplus) || defined(c_plusplus)
#define NeedFunctionPrototypes 1
#else
#define NeedFunctionPrototypes 0
#endif /* __STDC__ */
#endif /* NeedFunctionPrototypes */
#ifdef FAR_DATA_PTR
typedef unsigned char huge * DATA_IN_PTR;
typedef unsigned char far * DATA_OUT_PTR;
typedef unsigned char DATA_IN;
typedef unsigned char DATA_OUT;
#else
typedef unsigned char * DATA_IN_PTR;
typedef unsigned char * DATA_OUT_PTR;
typedef unsigned char DATA_IN;
typedef unsigned char DATA_OUT;
#endif
extern DATA_IN_PTR _il_Rotate_Image_Begin(
#if NeedFunctionPrototypes
short input_w, /* Input image width */
short input_h, /* Input image height */
short input_bytes, /* Input image bytes per pixel (1 or 3).
1 : gray scale image (8 bits / pixel).
3 : color image (24 bits / pixel). */
short rotation_mode, /* 0 : subsampling (nearest pixel)
!0 : bi-linear interpolation */
float angle, /* Rotation Angle */
unsigned char bg_red, /* background color */
unsigned char bg_green, /* , if input_bytes == 1, */
unsigned char bg_blue, /* background gray level = bg_red */
short *output_w, /* Returned value for output image width*/
short *output_h /* Returned val. for output image height*/
#endif
);
/*
* Must be called before any rotation can take place.
*
* Returns a pointer to the location where the image data of the first row
* must be read into, or NULL if memory can not be allocated.
*/
extern short _il_Rotate_Send(
#if NeedFunctionPrototypes
DATA_IN_PTR *input_data /* returned location for next input data row */
#endif
);
/*
* After reading the image data of the first row into the location returned by
* IR_Rotate_Image_Begin, use this call to get the new location for the next
* row's image data.
*
* Returns the number of output data rows ready to be retrieve by
* IR_Rotate_Get_Row
*/
extern void _il_Rotate_Get_Row(
#if NeedFunctionPrototypes
DATA_OUT_PTR row /* output data row */
#endif
);
/*
* Read next output data row into the user provided buffer 'row'.
*/
extern void _il_Rotate_Image_End();
/*
* Must be called when done with rotation to free any memory created during
* the rotation process.
*/
/*
* EXAMPLE:
*
* In order to use this rotation library, your software structure should
* look similar to this:
*
* ...
* short in_w, in_h, out_w, out_h, nrows;
* DATA_IN_PTR data_in;
* DATA_OUT_PTR buf;
*
* ...
* data_in = IR_Rotate_Image_Begin(..., start rotation
* &out_w, &out_h);
* buf = (DATA_OUT_PTR) malloc(out_w*image_bytes); allocate output buffer
*
* for (i = 0; i < in_h; i++) { for each input image row
* read_input_data(data_in); read in next data row
* for (nrows = IR_Rotate_Send_Row(&data_in); get next location for
* nrows > 0; --nrows) { data_in, and for each
* output data row
* IR_Rotate_Get_Row(buf); get output data
* process_data(buf); process it
* }; end inner for loop
* }; end outer for loop
* IR_Rotate_Image_End(); finish rotation
* ...
*/