Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/* Copyright (C) 1997, 1998, 1999 Aladdin Enterprises.  All rights reserved.
2
 
3
  This software is provided AS-IS with no warranty, either express or
4
  implied.
5
 
6
  This software is distributed under license and may not be copied,
7
  modified or distributed except as expressly authorized under the terms
8
  of the license contained in the file LICENSE in this distribution.
9
 
10
  For more information about licensing, please refer to
11
  http://www.ghostscript.com/licensing/. For information on
12
  commercial licensing, go to http://www.artifex.com/licensing/ or
13
  contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14
  San Rafael, CA  94903, U.S.A., +1(415)492-9861.
15
*/
16
 
17
/* $Id: gxfunc.h,v 1.10 2005/04/19 14:35:12 igor Exp $ */
18
/* Internal definitions for Functions */
19
 
20
#ifndef gxfunc_INCLUDED
21
#  define gxfunc_INCLUDED
22
 
23
#include "gsfunc.h"
24
#include "gsstruct.h"
25
 
26
/* ---------------- Types and structures ---------------- */
27
 
28
/* Define the generic Function structure type.  This is never instantiated. */
29
extern_st(st_function);
30
#define public_st_function()	/* in gsfunc.c */\
31
  gs_public_st_ptrs2(st_function, gs_function_t, "gs_function_t",\
32
    function_enum_ptrs, function_reloc_ptrs, params.Domain, params.Range)
33
 
34
/* ---------------- Internal procedures ---------------- */
35
 
36
/* Generic free_params implementation. */
37
void fn_common_free_params(gs_function_params_t * params, gs_memory_t * mem);
38
 
39
/* Generic free implementation. */
40
void fn_common_free(gs_function_t * pfn, bool free_params, gs_memory_t * mem);
41
 
42
/* Check the values of m, n, Domain, and (if supplied) Range. */
43
int fn_check_mnDR(const gs_function_params_t * params, int m, int n);
44
 
45
/* Generic get_info implementation (no Functions or DataSource). */
46
FN_GET_INFO_PROC(gs_function_get_info_default);
47
 
48
/*
49
 * Write generic parameters (FunctionType, Domain, Range) on a parameter list.
50
 */
51
int fn_common_get_params(const gs_function_t *pfn, gs_param_list *plist);
52
 
53
/*
54
 * Copy an array of numeric values when scaling a function.
55
 */
56
void *fn_copy_values(const void *pvalues, int count, int size,
57
		     gs_memory_t *mem);
58
 
59
/*
60
 * If necessary, scale the Range or Decode array for fn_make_scaled.
61
 * Note that we must always allocate a new array.
62
 */
63
int fn_scale_pairs(const float **ppvalues, const float *pvalues, int npairs,
64
		   const gs_range_t *pranges, gs_memory_t *mem);
65
 
66
/*
67
 * Scale the generic part of a function (Domain and Range).
68
 * The client must have copied the parameters already.
69
 */
70
int fn_common_scale(gs_function_t *psfn, const gs_function_t *pfn,
71
		    const gs_range_t *pranges, gs_memory_t *mem);
72
 
73
/* Serialize. */
74
int fn_common_serialize(const gs_function_t * pfn, stream *s);
75
 
76
#endif /* gxfunc_INCLUDED */