90 lines
2.3 KiB
C
90 lines
2.3 KiB
C
/*
|
|
* Copyright (c) 1993-1996 Argonaut Technologies Limited. All rights reserved.
|
|
*
|
|
* $Id: dbquery.c 1.1 1997/07/14 18:08:06 jon Exp $
|
|
* $Locker: $
|
|
*
|
|
* Routines for querying devices
|
|
*/
|
|
#include "brender.h"
|
|
#include "brddi.h"
|
|
#include "brassert.h"
|
|
|
|
BR_RCS_ID("$Id: dbquery.c 1.1 1997/07/14 18:08:06 jon Exp $")
|
|
|
|
|
|
STATIC br_boolean rendfctyEnum(br_object *rendfcty, br_rendfcty_enum_cbfn *cbfn,
|
|
void *args)
|
|
{
|
|
char *identifier = NULL;
|
|
br_rendfcty_desc desc;
|
|
|
|
identifier = ObjectIdentifier(rendfcty);
|
|
|
|
desc.renderer_facility = (struct br_renderer_facility *)rendfcty;
|
|
|
|
desc.uses_primitive_library = BR_TRUE;
|
|
ObjectQuery(rendfcty, (br_uint_32 *)&desc.uses_primitive_library, BRT_USES_PRIMITIVE_LIBRARY_B);
|
|
|
|
return cbfn(identifier, &desc, args);
|
|
}
|
|
|
|
br_error BR_PUBLIC_ENTRY BrRendererFacilityEnum(br_pixelmap *destination,
|
|
br_rendfcty_enum_cbfn *cbfn,
|
|
void *args)
|
|
{
|
|
br_object *objects[64];
|
|
br_int_32 num_objects, i;
|
|
br_error r;
|
|
|
|
r = BrRendererFacilityListFind((br_renderer_facility **)objects,
|
|
&num_objects, BR_ASIZE(objects), (br_device_pixelmap *)destination, BR_SCALAR_TOKEN);
|
|
|
|
if (r != BRE_OK)
|
|
return r;
|
|
|
|
for(i = 0; i < num_objects; i++)
|
|
if (rendfctyEnum(objects[i], cbfn, args))
|
|
break;
|
|
|
|
return BRE_OK;
|
|
}
|
|
|
|
|
|
STATIC br_boolean primlibEnum(br_object *primlib, br_primlib_enum_cbfn *cbfn,
|
|
void *args)
|
|
{
|
|
char *identifier = NULL;
|
|
br_primlib_desc desc;
|
|
|
|
identifier = ObjectIdentifier(primlib);
|
|
|
|
desc.primitive_library = (struct br_primitive_library *)primlib;
|
|
|
|
return cbfn(identifier, &desc, args);
|
|
}
|
|
|
|
br_error BR_PUBLIC_ENTRY BrPrimitiveLibraryEnum(br_pixelmap *destination,
|
|
br_primlib_enum_cbfn *cbfn,
|
|
void *args)
|
|
{
|
|
br_object *objects[64];
|
|
br_int_32 num_objects, i;
|
|
br_error r;
|
|
|
|
r = BrPrimitiveLibraryListFind((br_primitive_library **)objects,
|
|
&num_objects, BR_ASIZE(objects), (br_device_pixelmap *)destination, BR_SCALAR_TOKEN);
|
|
|
|
if (r != BRE_OK)
|
|
return r;
|
|
|
|
for(i = 0; i < num_objects; i++)
|
|
if (primlibEnum(objects[i], cbfn, args))
|
|
break;
|
|
|
|
return BRE_OK;
|
|
}
|
|
|
|
|
|
|
|
|