12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /* Copyright (C) 2000 Aladdin Enterprises. All rights reserved.
-
- This file is part of AFPL Ghostscript.
-
- AFPL Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author or
- distributor accepts any responsibility for the consequences of using it, or
- for whether it serves any particular purpose or works at all, unless he or
- she says so in writing. Refer to the Aladdin Free Public License (the
- "License") for full details.
-
- Every copy of AFPL Ghostscript must include a copy of the License, normally
- in a plain ASCII text file named PUBLIC. The License grants you the right
- to copy, modify and redistribute AFPL Ghostscript, but only under certain
- conditions described in the License. Among other things, the License
- requires that the copyright notice and this notice be preserved on all
- copies.
- */
- /*$Id: gsfuncv.c,v 1.2 2000/09/19 19:00:28 lpd Exp $ */
- /* "Vanilla" Function support */
- #include "gx.h"
- #include "gserrors.h"
- #include "gsfuncv.h"
- #include "gsparam.h"
- #include "gxfunc.h"
- /* GC descriptor */
- private_st_function_Va();
- /*
- * Test whether a Vanilla function is monotonic. (This information is
- * provided at function definition time.)
- */
- private int
- fn_Va_is_monotonic(const gs_function_t * pfn_common,
- const float *lower, const float *upper,
- gs_function_effort_t effort)
- {
- const gs_function_Va_t *const pfn =
- (const gs_function_Va_t *)pfn_common;
- return pfn->params.is_monotonic;
- }
- /* Free the parameters of a Vanilla function. */
- void
- gs_function_Va_free_params(gs_function_Va_params_t * params,
- gs_memory_t * mem)
- {
- gs_free_object(mem, params->eval_data, "eval_data");
- fn_common_free_params((gs_function_params_t *) params, mem);
- }
- /* Allocate and initialize a Vanilla function. */
- int
- gs_function_Va_init(gs_function_t ** ppfn,
- const gs_function_Va_params_t * params,
- gs_memory_t * mem)
- {
- static const gs_function_head_t function_Va_head = {
- function_type_Vanilla,
- {
- NULL, /* filled in from params */
- (fn_is_monotonic_proc_t) fn_Va_is_monotonic,
- gs_function_get_info_default,
- fn_common_get_params, /****** WHAT TO DO ABOUT THIS? ******/
- (fn_free_params_proc_t) gs_function_Va_free_params,
- fn_common_free
- }
- };
- int code;
- *ppfn = 0; /* in case of error */
- code = fn_check_mnDR((const gs_function_params_t *)params, 1, params->n);
- if (code < 0)
- return code;
- {
- gs_function_Va_t *pfn =
- gs_alloc_struct(mem, gs_function_Va_t, &st_function_Va,
- "gs_function_Va_init");
- if (pfn == 0)
- return_error(gs_error_VMerror);
- pfn->params = *params;
- pfn->head = function_Va_head;
- pfn->head.procs.evaluate = params->eval_proc;
- pfn->head.is_monotonic = params->is_monotonic;
- *ppfn = (gs_function_t *) pfn;
- }
- return 0;
- }
|