505 lines
17 KiB
C++
505 lines
17 KiB
C++
// This code implementation is the intellectual property of
|
|
// the RD44 GEANT4 collaboration.
|
|
//
|
|
// By copying, distributing or modifying the Program (or any work
|
|
// based on the Program) you indicate your acceptance of this statement,
|
|
// and all its terms.
|
|
//
|
|
// $Id: G4GoSceneHandler.cc,v 1.3 1999/05/31 17:20:56 barrand Exp $
|
|
// GEANT4 tag $Name: geant4-00-01 $
|
|
//
|
|
//
|
|
// Guy Barrand 04 November 1996
|
|
// Wo stored scene - creates Wo display lists.
|
|
|
|
//#define DEBUG
|
|
|
|
#ifdef G4VIS_BUILD_OPACS_DRIVER
|
|
|
|
//Co
|
|
#include <CPrinter.h>
|
|
#include <CString.h>
|
|
//Go
|
|
#include <Go.h>
|
|
//G4
|
|
#include "G4Point3D.hh"
|
|
#include "G4Normal3D.hh"
|
|
#include "G4Polyline.hh"
|
|
#include "G4Polymarker.hh"
|
|
#include "G4Polyhedron.hh"
|
|
#include "G4Circle.hh"
|
|
#include "G4Square.hh"
|
|
#include "G4Text.hh"
|
|
#include "G4NURBS.hh"
|
|
#include "G4PhysicalVolumeModel.hh"
|
|
#include "G4VPhysicalVolume.hh"
|
|
//This
|
|
#include "G4GoSceneHandler.hh"
|
|
|
|
static G4Transform3D transformation;
|
|
|
|
G4int G4GoSceneHandler::fSceneIdCount = 0;
|
|
G4int G4GoSceneHandler::fSceneCount = 0;
|
|
ONode G4GoSceneHandler::fGoNode = NULL;
|
|
OColormap G4GoSceneHandler::fOColormap = NULL;
|
|
/***************************************************************************/
|
|
G4GoSceneHandler::G4GoSceneHandler (
|
|
G4VGraphicsSystem& system,
|
|
const G4String& name
|
|
)
|
|
/***************************************************************************/
|
|
// Creator.
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
:G4VSceneHandler (system, fSceneIdCount++, name)
|
|
,fSystem(system)
|
|
,fRootGoNode(NULL)
|
|
,fStaticRootGoNode(NULL)
|
|
,fTransientRootGoNode(NULL)
|
|
,nodeName(NULL)
|
|
/*.........................................................................*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::G4GoSceneHandler" << endl;
|
|
#endif
|
|
fSceneCount++;
|
|
}
|
|
/***************************************************************************/
|
|
G4GoSceneHandler::~G4GoSceneHandler (
|
|
)
|
|
/***************************************************************************/
|
|
// Destructor.
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
//fRootGoNode could be deleted by an XoCamera popup "Erase".
|
|
if(ONodeIsValid(fRootGoNode)==1)
|
|
ONodeDelete (fRootGoNode);
|
|
fRootGoNode = NULL;
|
|
fStaticRootGoNode = NULL;
|
|
fTransientRootGoNode = NULL;
|
|
fSceneCount--;
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddPrimitive (
|
|
const G4Polyline& line
|
|
)
|
|
/***************************************************************************/
|
|
// Method for handling G4Polyline objects.
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::AddPrimitive(G4Polyline&) " << line.entries () << endl;
|
|
#endif
|
|
SetColour (GetColour(line));
|
|
int nPoints = line.entries ();
|
|
OPointList points;
|
|
points = OPointListCreate(nPoints);
|
|
for (int iPoint = 0; iPoint < nPoints; iPoint++) {
|
|
OPointListSetIthEntry (points,iPoint,
|
|
line(iPoint).x(),
|
|
line(iPoint).y(),
|
|
line(iPoint).z());
|
|
}
|
|
GoAddLinesToNode (fGoNode,points);
|
|
OPointListDelete (points);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddPrimitive (
|
|
const G4Polymarker& line
|
|
)
|
|
/***************************************************************************/
|
|
// Method for handling G4Polymarker objects.
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::AddPrimitive(G4Polymarker&) " << line.entries () << endl;
|
|
#endif
|
|
SetColour (GetColour(line));
|
|
int nPoints = line.entries ();
|
|
OPointList points;
|
|
points = OPointListCreate(nPoints);
|
|
for (int iPoint = 0; iPoint < nPoints; iPoint++) {
|
|
OPointListSetIthEntry (points,iPoint,
|
|
line(iPoint).x(),
|
|
line(iPoint).y(),
|
|
line(iPoint).z());
|
|
}
|
|
GoAddMarkersToNode (fGoNode,points);
|
|
OPointListDelete (points);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddPrimitive (
|
|
const G4Circle& circle
|
|
)
|
|
/***************************************************************************/
|
|
// Method for handling G4Circle objects.
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
SetColour (GetColour(circle));
|
|
G4Point3D center = circle.GetPosition();
|
|
G4double radius = circle.GetWorldSize();
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::AddPrimitive(G4Circle&) : center : "
|
|
<< " x : " << center.x()
|
|
<< " y : " << center.y()
|
|
<< " z : " << center.z()
|
|
<< " ,radius : " << radius << endl;
|
|
#endif
|
|
// Direction of circle ?
|
|
//GoAddCircleToNode (fGoNode,radius,center.x(),center.y(),center.z(),0.,0.,1.);
|
|
GoAddMarkerToNode (fGoNode,center.x(),center.y(),center.z());
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddPrimitive (
|
|
const G4Polyhedron& polyhedron
|
|
)
|
|
/***************************************************************************/
|
|
// Method for handling G4Polyhedron objects for drawing solids.
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::AddPrimitive(G4Polyhedron&) " << endl;
|
|
#endif
|
|
SetColour (GetColour(polyhedron));
|
|
|
|
OModeling modeling = OModelingWireFrame;
|
|
switch (GetDrawingStyle (polyhedron)) {
|
|
case (G4ViewParameters::hlhsr):
|
|
case (G4ViewParameters::hsr):
|
|
//not ready yet modeling = OModelingSolid;
|
|
break;
|
|
case (G4ViewParameters::hlr):
|
|
case (G4ViewParameters::wireframe):
|
|
default:
|
|
modeling = OModelingWireFrame;
|
|
break;
|
|
}
|
|
|
|
G4bool notLastFace;
|
|
G4Normal3D SurfaceNormal;
|
|
double xs[5];
|
|
double ys[5];
|
|
double zs[5];
|
|
|
|
do
|
|
{
|
|
G4bool notLastEdge;
|
|
G4Point3D vertex;
|
|
G4int edgeFlag = 1;
|
|
int iPoint;
|
|
iPoint = 0;
|
|
notLastFace = polyhedron.GetNextNormal (SurfaceNormal);
|
|
do
|
|
{
|
|
notLastEdge = polyhedron.GetNextVertex (vertex, edgeFlag);
|
|
xs[iPoint] = vertex.x();
|
|
ys[iPoint] = vertex.y();
|
|
zs[iPoint] = vertex.z();
|
|
iPoint++;
|
|
} while (notLastEdge);
|
|
if( (iPoint!=3) && (iPoint!=4) )
|
|
{
|
|
CWarnF ("G4GoSceneHandler::AddPrimitive G4Polyhedron : not a quad or a triangle : %d\n",iPoint);
|
|
}
|
|
else
|
|
{
|
|
if (modeling==OModelingWireFrame)
|
|
{
|
|
xs[iPoint] = xs[0];
|
|
ys[iPoint] = ys[0];
|
|
zs[iPoint] = zs[0];
|
|
iPoint++;
|
|
ONodeAddLines (fGoNode,OContextGetStaticInstance(),iPoint,xs,ys,zs);
|
|
}
|
|
else if (modeling==OModelingSolid)
|
|
{
|
|
ONodeAddPolygon (fGoNode,OContextGetStaticInstance(),iPoint,xs,ys,zs);
|
|
}
|
|
}
|
|
} while (notLastFace);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddPrimitive (
|
|
const G4Text& text
|
|
)
|
|
/***************************************************************************/
|
|
// Method for handling G4Text objects.
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
SetColour (GetTextColour(text));
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::AddPrimitive(G4Text&) " << endl;
|
|
#endif
|
|
CWarnF ("G4GoSceneHandler::AddPrimitive G4Text : not yet implemented.\n");
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddPrimitive (
|
|
const G4Square& Square
|
|
)
|
|
/***************************************************************************/
|
|
// Method for handling G4Square objects.
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
SetColour (GetColour(Square));
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::AddPrimitive(G4Square&) " << endl;
|
|
#endif
|
|
CWarnF ("G4GoSceneHandler::AddPrimitive G4Square : not yet implemented.\n");
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddPrimitive (
|
|
const G4NURBS& nurb
|
|
)
|
|
/***************************************************************************/
|
|
//Method for handling G4NURBS objects for drawing solids.
|
|
//Knots and Ctrl Pnts MUST be arrays of GLfloats.
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
SetColour (GetColour(nurb));
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::AddPrimitive(G4NURBS&) " << endl;
|
|
#endif
|
|
CWarnF ("G4GoSceneHandler::AddPrimitive G4NURBS : not yet implemented.\n");
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddThis (
|
|
const G4Box& box
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
G4VSceneHandler::AddThis (box);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddThis (
|
|
const G4Cons& cons
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
G4VSceneHandler::AddThis (cons);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddThis (
|
|
const G4Tubs& tubs
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
G4VSceneHandler::AddThis (tubs);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddThis (
|
|
const G4Trd& trd
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
G4VSceneHandler::AddThis (trd);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddThis (
|
|
const G4Trap& trap
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
G4VSceneHandler::AddThis (trap);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddThis (
|
|
const G4Sphere& sphere
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
G4VSceneHandler::AddThis (sphere);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddThis (
|
|
const G4Para& para
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
G4VSceneHandler::AddThis (para);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddThis (
|
|
const G4Torus& torus
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
G4VSceneHandler::AddThis (torus);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::AddThis (
|
|
const G4VSolid& solid
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
G4VSceneHandler::AddThis (solid);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::PreAddThis (
|
|
const G4Transform3D& objectTransformation,
|
|
const G4VisAttributes& visAttribs
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
G4VSceneHandler::PreAddThis (objectTransformation, visAttribs);
|
|
|
|
CStringDelete (nodeName);
|
|
nodeName = NULL;
|
|
|
|
const G4VPhysicalVolume* currentPhysicalVolume = fpCurrentPV;
|
|
|
|
if(currentPhysicalVolume==NULL) return;
|
|
|
|
nodeName = CStringCreateF (15+64,"PhysicalVolume/%lu",currentPhysicalVolume );
|
|
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::PreAddThis : " << nodeName << endl;
|
|
#endif
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::PostAddThis (
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::PostAddThis" << endl;
|
|
#endif
|
|
CStringDelete (nodeName);
|
|
nodeName = NULL;
|
|
G4VSceneHandler::PostAddThis();
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::BeginPrimitives (
|
|
const G4Transform3D& objectTransformation
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::BeginPrimitives" << endl;
|
|
#endif
|
|
G4VSceneHandler::BeginPrimitives (objectTransformation);
|
|
transformation = objectTransformation;
|
|
fGoNode = nodeName!=NULL ? ONodeCreate (nodeName) : ONodeMake ();
|
|
if(ONodeIsValid(fRootGoNode)==0) {
|
|
fRootGoNode = ONodeMake ();
|
|
fStaticRootGoNode = ONodeMake ();
|
|
fTransientRootGoNode = ONodeMake ();
|
|
ONodeAddChild (fRootGoNode,fStaticRootGoNode);
|
|
ONodeAddChild (fRootGoNode,fTransientRootGoNode);
|
|
}
|
|
if (fReadyForTransients) {
|
|
ONodeAddChild (fTransientRootGoNode,fGoNode);
|
|
} else {
|
|
ONodeAddChild (fStaticRootGoNode,fGoNode);
|
|
}
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::EndPrimitives (
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::EndPrimitives" << endl;
|
|
#endif
|
|
G4double g4angle;
|
|
G4ThreeVector g4axis;
|
|
G4ThreeVector g4trans;
|
|
transformation.getRotation().getAngleAxis(g4angle,g4axis);
|
|
g4trans = transformation.getTranslation();
|
|
OMatrix orot = OMatrixCreate (OMatrixRotationAxis,g4angle,g4axis.x(),g4axis.y(),g4axis.z());
|
|
OMatrix otra = OMatrixCreate (OMatrixTranslation,g4trans.x(),g4trans.y(),g4trans.z());
|
|
OMatrix omatrix = OMatrixMultiply (otra,orot);
|
|
ONodeSetMatrix (fGoNode,omatrix);
|
|
OMatrixDelete (omatrix);
|
|
OMatrixDelete (orot);
|
|
OMatrixDelete (otra);
|
|
fGoNode = NULL;
|
|
G4VSceneHandler::EndPrimitives ();
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::ClearStore (
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::ClearStore" << endl;
|
|
#endif
|
|
if(ONodeIsValid(fTransientRootGoNode)==0) fTransientRootGoNode = NULL;
|
|
ONodeDestroyChildren (fTransientRootGoNode);
|
|
if(ONodeIsValid(fStaticRootGoNode)==0) fStaticRootGoNode = NULL;
|
|
ONodeDestroyChildren (fStaticRootGoNode);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::ClearTransientStore (
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::ClearTransientStore" << endl;
|
|
#endif
|
|
if(ONodeIsValid(fTransientRootGoNode)==0) fTransientRootGoNode = NULL;
|
|
ONodeDestroyChildren (fTransientRootGoNode);
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::RequestPrimitives (
|
|
const G4VSolid& solid
|
|
)
|
|
/***************************************************************************/
|
|
// Stop-gap solution for display List re-use.
|
|
// A proper implementation would use geometry hierarchy.
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::RequestPrimitives" << endl;
|
|
#endif
|
|
G4VSceneHandler::RequestPrimitives (solid);
|
|
}
|
|
/***************************************************************************/
|
|
ONode G4GoSceneHandler::GetRootNode (
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::RequestPrimitives" << endl;
|
|
#endif
|
|
if(ONodeIsValid(fRootGoNode)==0) {
|
|
fRootGoNode = NULL;
|
|
fStaticRootGoNode = NULL;
|
|
fTransientRootGoNode = NULL;
|
|
}
|
|
return fRootGoNode;
|
|
}
|
|
/***************************************************************************/
|
|
void G4GoSceneHandler::SetColour (
|
|
const G4Colour& a_colour
|
|
)
|
|
/***************************************************************************/
|
|
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
|
|
{
|
|
if(fOColormap==NULL) fOColormap = OColormapGetIdentifier("ocolormap_X");
|
|
int index = OColormapGetRGB_Index(fOColormap,a_colour.GetRed (), a_colour.GetGreen (), a_colour.GetBlue ());
|
|
#ifdef DEBUG
|
|
G4cout << "G4GoSceneHandler::SetColour : red : " << a_colour.GetRed () <<
|
|
" green : " << a_colour.GetGreen () <<
|
|
" blue : " << a_colour.GetBlue () <<
|
|
" index : " << index << endl;
|
|
#endif
|
|
OContextSetColorIndex (OContextGetStaticInstance(),index);
|
|
}
|
|
|
|
#endif
|