- style cleanup

- use "new style" casts
- got rid of a goto 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24077 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Alexandre Deckner
2008-02-23 13:41:57 +00:00
parent 9553296aee
commit e6190664a1
3 changed files with 241 additions and 246 deletions
+134 -136
View File
@@ -22,17 +22,17 @@ float displayScale = 1.0;
float depthOfView = 30.0;
float zRatio = 10.0;
float white[3] = {1.0,1.0,1.0};
float dimWhite[3] = {0.25,0.25,0.25};
float black[3] = {0.0,0.0,0.0};
float foggy[3] = {0.4,0.4,0.4};
float blue[3] = {0.0,0.0,1.0};
float dimBlue[3] = {0.0,0.0,0.5};
float yellow[3] = {1.0,1.0,0.0};
float dimYellow[3] = {0.5,0.5,0.0};
float green[3] = {0.0,1.0,0.0};
float dimGreen[3] = {0.0,0.5,0.0};
float red[3] = {1.0,0.0,0.0};
float white[3] = {1.0, 1.0, 1.0};
float dimWhite[3] = {0.25, 0.25, 0.25};
float black[3] = {0.0, 0.0, 0.0};
float foggy[3] = {0.4, 0.4, 0.4};
float blue[3] = {0.0, 0.0, 1.0};
float dimBlue[3] = {0.0, 0.0, 0.5};
float yellow[3] = {1.0, 1.0, 0.0};
float dimYellow[3] = {0.5, 0.5, 0.0};
float green[3] = {0.0, 1.0, 0.0};
float dimGreen[3] = {0.0, 0.5, 0.0};
float red[3] = {1.0, 0.0, 0.0};
float* bgColor = black;
@@ -96,26 +96,26 @@ waitEvent(sem_id event)
static int32
simonThread(void* cookie)
{
ObjectView* ov = (ObjectView*)cookie;
ObjectView* objectView = reinterpret_cast<ObjectView*>(cookie);
int noPause = 0;
while (acquire_sem_etc(ov->quittingSem, 1, B_TIMEOUT, 0) == B_NO_ERROR) {
if (ov->SpinIt()) {
ov->DrawFrame(noPause);
release_sem(ov->quittingSem);
while (acquire_sem_etc(objectView->quittingSem, 1, B_TIMEOUT, 0) == B_NO_ERROR) {
if (objectView->SpinIt()) {
objectView->DrawFrame(noPause);
release_sem(objectView->quittingSem);
noPause = 1;
} else {
release_sem(ov->quittingSem);
release_sem(objectView->quittingSem);
noPause = 0;
waitEvent(ov->drawEvent);
waitEvent(objectView->drawEvent);
}
}
return 0;
}
ObjectView::ObjectView(BRect r, char *name, ulong resizingMode, ulong options)
: BGLView(r,name,resizingMode,0,options),
ObjectView::ObjectView(BRect rect, char *name, ulong resizingMode, ulong options)
: BGLView(rect, name, resizingMode, 0, options),
fHistEntries(0),
fOldestEntry(0),
fFps(true),
@@ -147,9 +147,9 @@ ObjectView::ObjectView(BRect r, char *name, ulong resizingMode, ulong options)
fTrackingInfo.lastDx = 0.0f;
fTrackingInfo.lastDy = 0.0f;
fLastObjectDistance = fObjectDistance = depthOfView/8;
quittingSem = create_sem(1,"quitting sem");
drawEvent = create_sem(0,"draw event");
fLastObjectDistance = fObjectDistance = depthOfView / 8;
quittingSem = create_sem(1, "quitting sem");
drawEvent = create_sem(0, "draw event");
char findDir[PATH_MAX];
find_directory(B_BEOS_ETC_DIRECTORY, -1, true, findDir, PATH_MAX);
@@ -173,12 +173,12 @@ ObjectView::AttachedToWindow()
float position[] = {0.0, 3.0, 3.0, 0.0};
float position1[] = {-3.0, -3.0, 3.0, 0.0};
float position2[] = {3.0, 0.0, 0.0, 0.0};
float local_view[] = {0.0,0.0};
float local_view[] = {0.0, 0.0};
// float ambient[] = {0.1745, 0.03175, 0.03175};
// float diffuse[] = {0.61424, 0.10136, 0.10136};
// float specular[] = {0.727811, 0.626959, 0.626959};
// rgb_color black = {0,0,0,255};
BRect r = Bounds();
// rgb_color black = {0, 0, 0, 255};
BRect bounds = Bounds();
BGLView::AttachedToWindow();
Window()->SetPulseRate(100000);
@@ -193,8 +193,8 @@ ObjectView::AttachedToWindow()
glShadeModel(GL_SMOOTH);
glLightfv(GL_LIGHT0, GL_POSITION, position);
glLightfv(GL_LIGHT0+1, GL_POSITION, position1);
glLightfv(GL_LIGHT0+2, GL_POSITION, position2);
glLightfv(GL_LIGHT0 + 1, GL_POSITION, position1);
glLightfv(GL_LIGHT0 + 2, GL_POSITION, position2);
glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view);
glEnable(GL_LIGHT0);
@@ -211,26 +211,25 @@ ObjectView::AttachedToWindow()
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);
glMaterialf(GL_FRONT, GL_SHININESS, 0.6*128.0);
glMaterialf(GL_FRONT, GL_SHININESS, 0.6 * 128.0);
glClearColor(bgColor[0],bgColor[1],bgColor[2], 1.0);
glClearColor(bgColor[0], bgColor[1], bgColor[2], 1.0);
glColor3f(1.0, 1.0, 1.0);
glViewport(0, 0, (GLint)r.IntegerWidth()+1, (GLint)r.IntegerHeight()+1);
glViewport(0, 0, (GLint)bounds.IntegerWidth() + 1,
(GLint)bounds.IntegerHeight() + 1);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
float scale=displayScale;
// glOrtho (0.0, 16.0, 0, 16.0*(GLfloat)300/(GLfloat)300,
// -10.0, 10.0);
glOrtho(-scale, scale, -scale, scale, -scale*depthOfView,
scale*depthOfView);
float scale = displayScale;
glOrtho(-scale, scale, -scale, scale, -scale * depthOfView,
scale * depthOfView);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
UnlockGL();
fDrawThread = spawn_thread(simonThread,
"Simon", B_NORMAL_PRIORITY, this);
fDrawThread = spawn_thread(simonThread, "Simon", B_NORMAL_PRIORITY, this);
resume_thread(fDrawThread);
fForceRedraw = true;
setEvent(drawEvent);
@@ -264,12 +263,13 @@ void
ObjectView::Pulse()
{
Window()->Lock();
BRect p = Parent()->Bounds();
BRect b = Bounds();
p.OffsetTo(0,0);
b.OffsetTo(0,0);
if (b != p) {
ResizeTo(p.right - p.left, p.bottom - p.top);
BRect parentBounds = Parent()->Bounds();
BRect bounds = Bounds();
parentBounds.OffsetTo(0, 0);
bounds.OffsetTo(0, 0);
if (bounds != parentBounds) {
ResizeTo(parentBounds.right - parentBounds.left,
parentBounds.bottom - parentBounds.top);
}
Window()->Unlock();
}
@@ -278,98 +278,94 @@ ObjectView::Pulse()
void
ObjectView::MessageReceived(BMessage* msg)
{
// msg->PrintToStream();
BMenuItem* i;
bool* b;
BMenuItem* item = NULL;
bool toggleItem = false;
switch (msg->what) {
case bmsgFPS:
case kMsgFPS:
fFps = (fFps) ? false : true;
msg->FindPointer("source", (void**)&i);
i->SetMarked(fFps);
msg->FindPointer("source", reinterpret_cast<void**>(&item));
item->SetMarked(fFps);
fForceRedraw = true;
setEvent(drawEvent);
break;
case bmsgAddModel:
case kMsgAddModel:
fObjListLock.Lock();
fObjects.AddItem(new TriangleObject(this, teapotPath));
fObjListLock.Unlock();
setEvent(drawEvent);
break;
case bmsgLights:
case kMsgLights:
{
msg->FindPointer("source", (void**)&i);
msg->FindPointer("source", reinterpret_cast<void**>(&item));
long lightNum = msg->FindInt32("num");
long color = msg->FindInt32("color");
BMenu *m = i->Menu();
long index = m->IndexOf(i);
m->ItemAt(index)->SetMarked(true);
for (int i = 0; i < m->CountItems(); i++) {
BMenu *menu = item->Menu();
long index = menu->IndexOf(item);
menu->ItemAt(index)->SetMarked(true);
for (int i = 0; i < menu->CountItems(); i++) {
if (i != index)
m->ItemAt(i)->SetMarked(false);
menu->ItemAt(i)->SetMarked(false);
}
LockGL();
if (color != lightNone) {
glEnable(GL_LIGHT0+lightNum - 1);
glLightfv(GL_LIGHT0+lightNum - 1, GL_SPECULAR,
glEnable(GL_LIGHT0 + lightNum - 1);
glLightfv(GL_LIGHT0 + lightNum - 1, GL_SPECULAR,
lights[color].specular);
glLightfv(GL_LIGHT0+lightNum - 1, GL_DIFFUSE,
glLightfv(GL_LIGHT0 + lightNum - 1, GL_DIFFUSE,
lights[color].diffuse);
glLightfv(GL_LIGHT0+lightNum - 1, GL_AMBIENT,
glLightfv(GL_LIGHT0 + lightNum - 1, GL_AMBIENT,
lights[color].ambient);
} else {
glDisable(GL_LIGHT0+lightNum - 1);
glDisable(GL_LIGHT0 + lightNum - 1);
}
UnlockGL();
fForceRedraw = true;
setEvent(drawEvent);
break;
}
case bmsgGouraud:
b = &fGouraud;
goto stateChange;
case bmsgZBuffer:
b = &fZbuf;
goto stateChange;
case bmsgCulling:
b = &fCulling;
goto stateChange;
case bmsgLighting:
b = &fLighting;
goto stateChange;
case bmsgFilled:
b = &fFilled;
goto stateChange;
case bmsgPerspective:
b = &fPersp;
goto stateChange;
case bmsgFog:
b = &fFog;
goto stateChange;
stateChange:
if (msg->FindPointer("source", (void**)&i) < B_OK)
i = NULL;
if (!i)
return;
if (*b) {
i->SetMarked(*b = false);
} else {
i->SetMarked(*b = true);
}
setEvent(drawEvent);
case kMsgGouraud:
fGouraud = !fGouraud;
toggleItem = true;
break;
default:
BGLView::MessageReceived(msg);
case kMsgZBuffer:
fZbuf = !fZbuf;
toggleItem = true;
break;
case kMsgCulling:
fCulling = !fCulling;
toggleItem = true;
break;
case kMsgLighting:
fLighting = !fLighting;
toggleItem = true;
break;
case kMsgFilled:
fFilled = !fFilled;
toggleItem = true;
break;
case kMsgPerspective:
fPersp = !fPersp;
toggleItem = true;
break;
case kMsgFog:
fFog = !fFog;
toggleItem = true;
break;
}
if (toggleItem && msg->FindPointer("source", reinterpret_cast<void**>(&item)) == B_OK){
item->SetMarked(!item->IsMarked());
setEvent(drawEvent);
}
BGLView::MessageReceived(msg);
}
int
ObjectView::ObjectAtPoint(BPoint p)
ObjectView::ObjectAtPoint(const BPoint &point)
{
LockGL();
glShadeModel(GL_FLAT);
@@ -378,16 +374,17 @@ ObjectView::ObjectAtPoint(BPoint p)
glClearColor(black[0], black[1], black[2], 1.0);
glClear(GL_COLOR_BUFFER_BIT | (fZbuf ? GL_DEPTH_BUFFER_BIT : 0));
float f[3];
f[1] = f[2] = 0;
float idColor[3];
idColor[1] = idColor[2] = 0;
for (int i = 0; i < fObjects.CountItems(); i++) {
// to take into account 16 bits colorspaces, only use the 5 highest bits of the red channel
f[0] = (255 - (i << 3)) / 255.0;
((GLObject*)fObjects.ItemAt(i))->Draw(true, f);
// to take into account 16 bits colorspaces,
// only use the 5 highest bits of the red channel
idColor[0] = (255 - (i << 3)) / 255.0;
reinterpret_cast<GLObject*>(fObjects.ItemAt(i))->Draw(true, idColor);
}
glReadBuffer(GL_BACK);
uchar pixel[256];
glReadPixels((GLint)p.x, (GLint)(Bounds().bottom - p.y), 1, 1,
glReadPixels((GLint)point.x, (GLint)(Bounds().bottom - point.y), 1, 1,
GL_RGB, GL_UNSIGNED_BYTE, pixel);
int objNum = pixel[0];
objNum = (255 - objNum) >> 3;
@@ -406,7 +403,7 @@ ObjectView::MouseDown(BPoint point)
BMessage *msg = Window()->CurrentMessage();
uint32 buttons = msg->FindInt32("buttons");
object = ((GLObject*)fObjects.ItemAt(ObjectAtPoint(point)));
object = reinterpret_cast<GLObject*>(fObjects.ItemAt(ObjectAtPoint(point)));
if (object != NULL){
if (buttons == B_PRIMARY_MOUSE_BUTTON || buttons == B_SECONDARY_MOUSE_BUTTON) {
@@ -506,17 +503,16 @@ ObjectView::MouseMoved(BPoint point, uint32 transit, const BMessage *msg)
void
ObjectView::FrameResized(float w, float h)
ObjectView::FrameResized(float width, float height)
{
LockGL();
BGLView::FrameResized(w, h);
BRect b = Bounds();
w = b.Width();
h = b.Height();
fYxRatio = h / w;
glViewport(0, 0, (GLint)w + 1, (GLint)h + 1);
BGLView::FrameResized(width, height);
width = Bounds().Width();
height = Bounds().Height();
fYxRatio = height / width;
glViewport(0, 0, (GLint)width + 1, (GLint)height + 1);
// To prevent weird buffer contents
glClear(GL_COLOR_BUFFER_BIT);
@@ -590,6 +586,7 @@ void
ObjectView::EnforceState()
{
glShadeModel(fGouraud ? GL_SMOOTH : GL_FLAT);
if (fZbuf)
glEnable(GL_DEPTH_TEST);
else
@@ -605,11 +602,10 @@ ObjectView::EnforceState()
else
glDisable(GL_LIGHTING);
if (fFilled) {
if (fFilled)
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
} else {
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
else
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
if (fFog) {
glFogf(GL_FOG_START, 10.0);
@@ -708,7 +704,7 @@ ObjectView::SpinIt()
fForceRedraw = false;
for (int i = 0; i < fObjects.CountItems(); i++) {
bool hack = ((GLObject*)fObjects.ItemAt(i))->SpinIt();
bool hack = reinterpret_cast<GLObject*>(fObjects.ItemAt(i))->SpinIt();
changed = changed || hack;
}
@@ -724,15 +720,15 @@ ObjectView::DrawFrame(bool noPause)
fObjListLock.Lock();
for (int i = 0; i < fObjects.CountItems(); i++) {
GLObject *o = ((GLObject*)fObjects.ItemAt(i));
if (o->solidity == 0)
o->Draw(false, NULL);
GLObject *object = reinterpret_cast<GLObject*>(fObjects.ItemAt(i));
if (object->solidity == 0)
object->Draw(false, NULL);
}
EnforceState();
for (int i = 0; i < fObjects.CountItems(); i++) {
GLObject *o = ((GLObject*)fObjects.ItemAt(i));
if (o->solidity != 0)
o->Draw(false, NULL);
GLObject *object = reinterpret_cast<GLObject*>(fObjects.ItemAt(i));
if (object->solidity != 0)
object->Draw(false, NULL);
}
fObjListLock.Unlock();
@@ -741,24 +737,26 @@ ObjectView::DrawFrame(bool noPause)
if (noPause) {
uint64 now = system_time();
float f = 1.0 / ((now - fLastFrame) / 1000000.0);
float fps = 1.0 / ((now - fLastFrame) / 1000000.0);
fLastFrame = now;
int e;
int entry;
if (fHistEntries < HISTSIZE) {
e = (fOldestEntry + fHistEntries) % HISTSIZE;
entry = (fOldestEntry + fHistEntries) % HISTSIZE;
fHistEntries++;
} else {
e = fOldestEntry;
entry = fOldestEntry;
fOldestEntry = (fOldestEntry + 1) % HISTSIZE;
}
fFpsHistory[e] = f;
fFpsHistory[entry] = fps;
if (fHistEntries > 5) {
f = 0;
fps = 0;
for (int i = 0; i < fHistEntries; i++)
f += fFpsHistory[(fOldestEntry + i) % HISTSIZE];
f = f/fHistEntries;
fps += fFpsHistory[(fOldestEntry + i) % HISTSIZE];
fps /= fHistEntries;
if (fFps) {
glPushAttrib(GL_ENABLE_BIT | GL_LIGHTING_BIT);
glPushMatrix();
@@ -774,7 +772,7 @@ ObjectView::DrawFrame(bool noPause)
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
FPS::drawCounter(f);
FPS::drawCounter(fps);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
+23 -23
View File
@@ -9,17 +9,17 @@
#include <GL/glu.h>
#include <GLView.h>
#define bmsgFPS 'fps '
#define bmsgAddModel 'addm'
#define bmsgGouraud 'gour'
#define bmsgZBuffer 'zbuf'
#define bmsgCulling 'cull'
#define bmsgTextured 'txtr'
#define bmsgFog 'fog '
#define bmsgLighting 'lite'
#define bmsgLights 'lits'
#define bmsgFilled 'fill'
#define bmsgPerspective 'prsp'
#define kMsgFPS 'fps '
#define kMsgAddModel 'addm'
#define kMsgGouraud 'gour'
#define kMsgZBuffer 'zbuf'
#define kMsgCulling 'cull'
#define kMsgTextured 'txtr'
#define kMsgFog 'fog '
#define kMsgLighting 'lite'
#define kMsgLights 'lits'
#define kMsgFilled 'fill'
#define kMsgPerspective 'prsp'
enum lights {
lightNone = 0,
@@ -36,23 +36,23 @@ class ResScroll;
class GLObject;
struct TrackingInfo {
float lastX;
float lastY;
float lastDx;
float lastDy;
bool isTracking;
GLObject *pickedObject;
uint32 buttons;
float lastX;
float lastY;
float lastDx;
float lastDy;
bool isTracking;
GLObject *pickedObject;
uint32 buttons;
};
class ObjectView : public BGLView {
public:
ObjectView(BRect r, char* name, ulong resizingMode,
ObjectView(BRect rect, char* name, ulong resizingMode,
ulong options);
~ObjectView();
virtual void MouseDown(BPoint p);
virtual void MouseUp(BPoint p);
virtual void MouseDown(BPoint point);
virtual void MouseUp(BPoint point);
virtual void MouseMoved(BPoint point, uint32 transit, const BMessage *msg);
virtual void MessageReceived(BMessage* msg);
@@ -60,7 +60,7 @@ class ObjectView : public BGLView {
virtual void DetachedFromWindow();
virtual void FrameResized(float width, float height);
bool SpinIt();
int ObjectAtPoint(BPoint p);
int ObjectAtPoint(const BPoint &point);
virtual void DrawFrame(bool noPause);
virtual void Pulse();
void EnforceState();
@@ -82,7 +82,7 @@ class ObjectView : public BGLView {
bool fLastPersp, fPersp, fLastTextured, fTextured;
bool fLastFog, fFog, fForceRedraw;
float fLastYXRatio, fYxRatio, fFpsHistory[HISTSIZE];
float fObjectDistance,fLastObjectDistance;
float fObjectDistance, fLastObjectDistance;
TrackingInfo fTrackingInfo;
};
+84 -87
View File
@@ -11,154 +11,151 @@
#include "TeapotWindow.h"
TeapotWindow::TeapotWindow(BRect rect, char* name, window_type wt, ulong something)
: BDirectWindow(rect,name,wt,something)
: BDirectWindow(rect, name, wt, something)
{
GLenum type = BGL_RGB | BGL_DEPTH | BGL_DOUBLE;
BRect r = rect;
r.OffsetTo(BPoint(100,100));
Lock();
r = Bounds();
r.bottom = r.top + 14;
BMenuBar* mb = new BMenuBar(r,"main menu");
BRect bounds = Bounds();
bounds.bottom = bounds.top + 14;
BMenuBar* menuBar = new BMenuBar(bounds, "main menu");
BMenu* m;
BMessage msg (bmsgAddModel);
BMenu* menu;
BMessage msg(kMsgAddModel);
mb->AddItem(m = new BMenu("File"));
AddChild(mb);
menuBar->AddItem(menu = new BMenu("File"));
AddChild(menuBar);
mb->ResizeToPreferred();
menuBar->ResizeToPreferred();
r = Bounds();
r.top = mb->Bounds().bottom+1;
BView *sv = new BView(r,"subview",B_FOLLOW_ALL,0);
AddChild(sv);
bounds = Bounds();
bounds.top = menuBar->Bounds().bottom + 1;
BView *subView = new BView(bounds, "subview", B_FOLLOW_ALL, 0);
AddChild(subView);
r = sv->Bounds();
fObjectView = new ObjectView(r,"objectView", B_FOLLOW_ALL_SIDES,type);
sv->AddChild(fObjectView);
bounds = subView->Bounds();
fObjectView = new ObjectView(bounds, "objectView", B_FOLLOW_ALL_SIDES, type);
subView->AddChild(fObjectView);
fObjectView = fObjectView;
BMenuItem* item;
msg.AddInt32("num",256);
m->AddItem(item = new BMenuItem("Add a teapot",new BMessage(msg), 'N'));
msg.AddInt32("num", 256);
menu->AddItem(item = new BMenuItem("Add a teapot", new BMessage(msg), 'N'));
item->SetTarget(fObjectView);
m->AddSeparatorItem();
m->AddItem(item = new BMenuItem("Quit", new BMessage(B_QUIT_REQUESTED), 'Q'));
menu->AddSeparatorItem();
menu->AddItem(item = new BMenuItem("Quit", new BMessage(B_QUIT_REQUESTED), 'Q'));
item->SetTarget(be_app);
msg.RemoveName("num");
mb->AddItem(m = new BMenu("Options"));
m->AddItem(item = new BMenuItem("Perspective",new BMessage(bmsgPerspective)));
menuBar->AddItem(menu = new BMenu("Options"));
menu->AddItem(item = new BMenuItem("Perspective", new BMessage(kMsgPerspective)));
item->SetTarget(fObjectView);
item->SetMarked(false);
m->AddItem(item = new BMenuItem("FPS Display",new BMessage(bmsgFPS)));
menu->AddItem(item = new BMenuItem("FPS Display", new BMessage(kMsgFPS)));
item->SetTarget(fObjectView);
item->SetMarked(true);
m->AddItem(item = new BMenuItem("Filled polygons",new BMessage(bmsgFilled)));
menu->AddItem(item = new BMenuItem("Filled polygons", new BMessage(kMsgFilled)));
item->SetTarget(fObjectView);
item->SetMarked(true);
m->AddItem(item = new BMenuItem("Lighting",new BMessage(bmsgLighting)));
menu->AddItem(item = new BMenuItem("Lighting", new BMessage(kMsgLighting)));
item->SetTarget(fObjectView);
item->SetMarked(true);
m->AddItem(item = new BMenuItem("Backface culling",new BMessage(bmsgCulling)));
menu->AddItem(item = new BMenuItem("Backface culling", new BMessage(kMsgCulling)));
item->SetTarget(fObjectView);
item->SetMarked(true);
m->AddItem(item = new BMenuItem("Z-buffered",new BMessage(bmsgZBuffer)));
menu->AddItem(item = new BMenuItem("Z-buffered", new BMessage(kMsgZBuffer)));
item->SetTarget(fObjectView);
item->SetMarked(true);
m->AddItem(item = new BMenuItem("Gouraud shading",new BMessage(bmsgGouraud)));
menu->AddItem(item = new BMenuItem("Gouraud shading", new BMessage(kMsgGouraud)));
item->SetTarget(fObjectView);
item->SetMarked(true);
// m->AddItem(item = new BMenuItem("Texture mapped",new BMessage(bmsgTextured)));
// menu->AddItem(item = new BMenuItem("Texture mapped", new BMessage(kMsgTextured)));
// item->SetTarget(fObjectView);
m->AddItem(item = new BMenuItem("Fog",new BMessage(bmsgFog)));
menu->AddItem(item = new BMenuItem("Fog", new BMessage(kMsgFog)));
item->SetTarget(fObjectView);
BMenu *sm;
mb->AddItem(m = new BMenu("Lights"));
msg.what = bmsgLights;
BMenu *subMenu;
menuBar->AddItem(menu = new BMenu("Lights"));
msg.what = kMsgLights;
msg.AddInt32("num",1);
m->AddItem(item = new BMenuItem(sm = new BMenu("Upper center"),NULL));
msg.AddInt32("num", 1);
menu->AddItem(item = new BMenuItem(subMenu = new BMenu("Upper center"), NULL));
item->SetTarget(fObjectView);
msg.AddInt32("color",lightNone);
sm->AddItem(item = new BMenuItem("Off",new BMessage(msg)));
msg.AddInt32("color", lightNone);
subMenu->AddItem(item = new BMenuItem("Off", new BMessage(msg)));
item->SetTarget(fObjectView);
sm->AddSeparatorItem();
msg.ReplaceInt32("color",lightWhite);
sm->AddItem(item = new BMenuItem("White",new BMessage(msg)));
subMenu->AddSeparatorItem();
msg.ReplaceInt32("color", lightWhite);
subMenu->AddItem(item = new BMenuItem("White", new BMessage(msg)));
item->SetTarget(fObjectView);
item->SetMarked(true);
msg.ReplaceInt32("color",lightYellow);
sm->AddItem(item = new BMenuItem("Yellow",new BMessage(msg)));
msg.ReplaceInt32("color", lightYellow);
subMenu->AddItem(item = new BMenuItem("Yellow", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.ReplaceInt32("color",lightBlue);
sm->AddItem(item = new BMenuItem("Blue",new BMessage(msg)));
msg.ReplaceInt32("color", lightBlue);
subMenu->AddItem(item = new BMenuItem("Blue", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.ReplaceInt32("color",lightRed);
sm->AddItem(item = new BMenuItem("Red",new BMessage(msg)));
msg.ReplaceInt32("color", lightRed);
subMenu->AddItem(item = new BMenuItem("Red", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.ReplaceInt32("color",lightGreen);
sm->AddItem(item = new BMenuItem("Green",new BMessage(msg)));
msg.ReplaceInt32("color", lightGreen);
subMenu->AddItem(item = new BMenuItem("Green", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.RemoveName("color");
msg.ReplaceInt32("num",2);
m->AddItem(item = new BMenuItem(sm = new BMenu("Lower left"),NULL));
msg.ReplaceInt32("num", 2);
menu->AddItem(item = new BMenuItem(subMenu = new BMenu("Lower left"), NULL));
item->SetTarget(fObjectView);
msg.AddInt32("color",lightNone);
sm->AddItem(item = new BMenuItem("Off",new BMessage(msg)));
msg.AddInt32("color", lightNone);
subMenu->AddItem(item = new BMenuItem("Off", new BMessage(msg)));
item->SetTarget(fObjectView);
sm->AddSeparatorItem();
msg.ReplaceInt32("color",lightWhite);
sm->AddItem(item = new BMenuItem("White",new BMessage(msg)));
subMenu->AddSeparatorItem();
msg.ReplaceInt32("color", lightWhite);
subMenu->AddItem(item = new BMenuItem("White", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.ReplaceInt32("color",lightYellow);
sm->AddItem(item = new BMenuItem("Yellow",new BMessage(msg)));
msg.ReplaceInt32("color", lightYellow);
subMenu->AddItem(item = new BMenuItem("Yellow", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.ReplaceInt32("color",lightBlue);
sm->AddItem(item = new BMenuItem("Blue",new BMessage(msg)));
msg.ReplaceInt32("color", lightBlue);
subMenu->AddItem(item = new BMenuItem("Blue", new BMessage(msg)));
item->SetTarget(fObjectView);
item->SetMarked(true);
msg.ReplaceInt32("color",lightRed);
sm->AddItem(item = new BMenuItem("Red",new BMessage(msg)));
msg.ReplaceInt32("color", lightRed);
subMenu->AddItem(item = new BMenuItem("Red", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.ReplaceInt32("color",lightGreen);
sm->AddItem(item = new BMenuItem("Green",new BMessage(msg)));
msg.ReplaceInt32("color", lightGreen);
subMenu->AddItem(item = new BMenuItem("Green", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.RemoveName("color");
msg.ReplaceInt32("num",3);
m->AddItem(item = new BMenuItem(sm = new BMenu("Right"),NULL));
msg.ReplaceInt32("num", 3);
menu->AddItem(item = new BMenuItem(subMenu = new BMenu("Right"), NULL));
item->SetTarget(fObjectView);
msg.AddInt32("color",lightNone);
sm->AddItem(item = new BMenuItem("Off",new BMessage(msg)));
msg.AddInt32("color", lightNone);
subMenu->AddItem(item = new BMenuItem("Off", new BMessage(msg)));
item->SetTarget(fObjectView);
item->SetMarked(true);
sm->AddSeparatorItem();
msg.ReplaceInt32("color",lightWhite);
sm->AddItem(item = new BMenuItem("White",new BMessage(msg)));
subMenu->AddSeparatorItem();
msg.ReplaceInt32("color", lightWhite);
subMenu->AddItem(item = new BMenuItem("White", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.ReplaceInt32("color",lightYellow);
sm->AddItem(item = new BMenuItem("Yellow",new BMessage(msg)));
msg.ReplaceInt32("color", lightYellow);
subMenu->AddItem(item = new BMenuItem("Yellow", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.ReplaceInt32("color",lightBlue);
sm->AddItem(item = new BMenuItem("Blue",new BMessage(msg)));
msg.ReplaceInt32("color", lightBlue);
subMenu->AddItem(item = new BMenuItem("Blue", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.ReplaceInt32("color",lightRed);
sm->AddItem(item = new BMenuItem("Red",new BMessage(msg)));
msg.ReplaceInt32("color", lightRed);
subMenu->AddItem(item = new BMenuItem("Red", new BMessage(msg)));
item->SetTarget(fObjectView);
msg.ReplaceInt32("color",lightGreen);
sm->AddItem(item = new BMenuItem("Green",new BMessage(msg)));
msg.ReplaceInt32("color", lightGreen);
subMenu->AddItem(item = new BMenuItem("Green", new BMessage(msg)));
item->SetTarget(fObjectView);
float f = mb->Bounds().IntegerHeight()+1;
SetSizeLimits(32,1024,32+f,1024+f);
float f = menuBar->Bounds().IntegerHeight() + 1;
SetSizeLimits(32, 1024, 32 + f, 1024 + f);
//TODO: verify, adding an height to x seems strange
Unlock();
}
@@ -167,7 +164,7 @@ bool
TeapotWindow::QuitRequested()
{
// printf("closing \n");
fObjectView->EnableDirectMode( false );
fObjectView->EnableDirectMode(false);
be_app->PostMessage(B_QUIT_REQUESTED);
return true;
}
@@ -177,8 +174,8 @@ void
TeapotWindow::DirectConnected(direct_buffer_info* info)
{
if (fObjectView)
fObjectView->DirectConnected( info );
fObjectView->EnableDirectMode( true );
fObjectView->DirectConnected(info);
fObjectView->EnableDirectMode(true);
}