Files
Hoops_Exchange/exchange/exchangesource/Viewer/callback_opengl.h
2025-12-15 23:22:33 +08:00

123 lines
6.1 KiB
C++

/***********************************************************************************************************************
*
* Copyright (c) 2010 - 2025 by Tech Soft 3D, Inc.
* The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., and considered a trade secret
* as defined under civil and criminal statutes. Tech Soft 3D shall pursue its civil and criminal remedies in the event
* of unauthorized use or misappropriation of its trade secrets. Use of this information by anyone other than authorized
* employees of Tech Soft 3D, Inc. is granted only under a written non-disclosure agreement, expressly prescribing the
* scope and manner of such use.
*
***********************************************************************************************************************/
/**
\file callback_opengl.h
This file demonstrates how to programmatically visualize a PRC file from a basic OpenGL program using HOOPS Exchange.
***********************************************************************************************************************/
#ifndef _CALLBACK_OPENGL_H_
#define _CALLBACK_OPENGL_H_
#include <math.h>
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#include "TreeTraverse.h"
//######################################################################################################################
bool GetstbUseCallbacks();
void SetstbUseCallbacks(bool UseCallBack);
bool GetstbCallbacksInitialized();
A3DBoundingBoxData* GetstpsBoundingBox();
void SetstpsBoundingBox(A3DBoundingBoxData* sBoudingBoxData);
bool GetstbDrawMarkups();
void SetstbDrawMarkups(bool bDrawMarkups);
//######################################################################################################################
#define A3D_MIN(a,b) (((a)<(b)) ? (a) : (b))
#define A3D_MAX(a,b) (((a)>(b)) ? (a) : (b))
//######################################################################################################################
void stVectoriel(const A3DVector3dData* X, const A3DVector3dData* Y, A3DVector3dData* Z);
//######################################################################################################################
void stMatrixMatrixMult(double m[16], const double o[16]);
//######################################################################################################################
void stLoadIdentity();
//######################################################################################################################
void stMultMatrix(const double m[16]);
//######################################################################################################################
void stPushMatrix();
//######################################################################################################################
void stPopMatrix();
//######################################################################################################################
void stExtentInit(A3DBoundingBoxData* e);
//######################################################################################################################
void stBoundingBoxAddPoint(A3DBoundingBoxData* e, double x, double y, double z);
//######################################################################################################################
void OpenGL_PushMatrix();
//######################################################################################################################
void OpenGL_PopMatrix();
//######################################################################################################################
void OpenGL_MultMatrix(const A3DDouble adMatrix[16]);
//######################################################################################################################
void OpenGL_Begin(A3DEDrawBeginEndType eType, const A3DUTF8Char* pcName, A3DUns32 uiTrianglesCount);
//######################################################################################################################
void OpenGL_End(A3DEDrawBeginEndType eType);
//######################################################################################################################
void OpenGL_Triangle(const double* pasNormals, A3DUns32 uiNormalSize, const double* pasPoints, A3DUns32 uiPointSize,
std::vector<unsigned> auIndiceTrianglePerFace,
unsigned uTextureCount);
//######################################################################################################################
void OpenGL_Material(A3DEDrawMaterialType eType, const A3DDouble* pdValues, A3DUns32 uiSize);
//######################################################################################################################
void OpenGL_MarkupTriangle(A3DDouble* pdPoints, A3DUns32 uiPointSize);
//######################################################################################################################
void OpenGL_Point(const A3DDouble* pdPoints, A3DUns32 uiPointSize);
//######################################################################################################################
void OpenGL_Font(const A3DFontKeyData* psFontKeyData);
//######################################################################################################################
void OpenGL_Symbol(const A3DGraphVPicturePatternData* psPatternData, const A3DVector3dData* psPosition);
//######################################################################################################################
void OpenGL_PolyLine(A3DDouble* pdPoints, A3DUns32 uiPointSize);
//######################################################################################################################
void OpenGL_Color(const A3DDouble [3]);
//######################################################################################################################
int& DisplayTriangles();
//######################################################################################################################
int& DisplayTriangleNormals();
//######################################################################################################################
double& DisplayTriangleNormalLength();
#endif