Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
136
cde/lib/DtHelp/il/ilhplrotation.h
Normal file
136
cde/lib/DtHelp/il/ilhplrotation.h
Normal 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
|
||||
* ...
|
||||
*/
|
||||
Reference in New Issue
Block a user