IRS_MetaHandler.c

/******************************************************************************\
                                                                        
        Module:     PF_MetaHandler.c                                            
                                                                            
        Purpose:    Performance QD3D metahandler functions                              
                                                                        
        Author:     Sun-Inn Shih                                        
                                                                        
        Copyright (C) 1993-96 Apple Computer, Inc.  All rights reserved.    
                                                                            
\*****************************************************************************/
 
#include <QD3D.h>
#include <QD3DGeometry.h>
#include <QD3DRenderer.h>
#include <QD3DExtension.h>
 
#include "IRS_Geometry.h" 
#include "IRS_MetaHandler.h"
#include "IRS_Methods.h"
#include "IRS_Update.h"
 
/*===========================================================================*\
 *
 *  Routine:    IRS_Geometry_MetaHandler()
 *
 *
 *  kQ3GeometryTypeTriangle
 *  kQ3GeometryTypeLine
 *  kQ3GeometryTypePoint
 *  kQ3GeometryTypeMarker
 *  kQ3GeometryTypePixmapMarker
        
\*===========================================================================*/
 
static TQ3XFunctionPointer IRS_Geometry_MetaHandler(
    TQ3XMethodType          pMethodType)
{
    switch (pMethodType)
    {
        /* triangle handler : required */
        case kQ3GeometryTypeTriangle:
            return (TQ3XFunctionPointer) IRS_Geometry_Triangle;
        
        /* lines : required */
        case kQ3GeometryTypeLine:
            return (TQ3XFunctionPointer) IRS_Geometry_Line;
            
        /* point handler : required */
        case kQ3GeometryTypePoint:
            return (TQ3XFunctionPointer) IRS_Geometry_Point;
            
        /* marker handler : required */
        case kQ3GeometryTypeMarker:
            return (TQ3XFunctionPointer) IRS_Geometry_Marker;
            
        /* pixmapMarker handler : required */
        case kQ3GeometryTypePixmapMarker:
            return (TQ3XFunctionPointer) IRS_Geometry_PixmapMarker;
            
        default:
            return NULL;
    }
}
 
/*===========================================================================*\
 *
 *  Routine:    IRS_Update_Matrix_MetaHandler()
 *
 *  update
 *
\*===========================================================================*/
 
static TQ3XFunctionPointer IRS_Update_Matrix_MetaHandler(
    TQ3XMethodType          pMethodType)
{
    switch (pMethodType)
    {
        /* update the local to frustum matrix */
        case kQ3XMethodTypeRendererUpdateMatrixLocalToFrustum:
            return (TQ3XFunctionPointer) IRS_Update_Matrix_localToFrustum;
            
        default:
            return NULL;
    }
}
 
 
/*===========================================================================*\
 *
 *  Routine:    IRSMetaHandler()
 *
 *  Comments:   top level meta handler
 *
\*===========================================================================*/
TQ3XFunctionPointer IRSMetaHandler(
    TQ3XMethodType  pMethodType)
{
    switch (pMethodType)
    {
        /* initialization */
        case kQ3XMethodTypeObjectNew:
            return (TQ3XFunctionPointer) IRSNew;
 
        /* clean up */
        case kQ3XMethodTypeObjectDelete:
            return (TQ3XFunctionPointer) IRSDelete;
 
        /* start frame : required */
        case kQ3XMethodTypeRendererStartFrame:
            return (TQ3XFunctionPointer) IRSStartFrame;
 
        /* end frame: optional */
        case kQ3XMethodTypeRendererEndFrame:
            return (TQ3XFunctionPointer) IRSEndFrame;
 
        /* start pass : required*/
        case kQ3XMethodTypeRendererStartPass:
            return (TQ3XFunctionPointer) IRSStartPass;
 
        /* end pass : required */
        case kQ3XMethodTypeRendererEndPass:
            return (TQ3XFunctionPointer) IRSEndPass;
 
        /* cancel rendering: required*/
        case kQ3XMethodTypeRendererCancel:
            return (TQ3XFunctionPointer) IRSCancel;
 
        /* to second level metahandlers */
        /*  geometry meta handler: required */
        case kQ3XMethodTypeRendererSubmitGeometryMetaHandler:
            return (TQ3XFunctionPointer) IRS_Geometry_MetaHandler;
 
        /*  matrix meta handler: optional */
        case kQ3XMethodTypeRendererUpdateMatrixMetaHandler:
            return (TQ3XFunctionPointer) IRS_Update_Matrix_MetaHandler;
 
        default:
            return NULL;
    }
}