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