diff --git a/1159552974.jpg b/1159552974.jpg new file mode 100755 index 0000000..19687c6 Binary files /dev/null and b/1159552974.jpg differ diff --git a/AboutDialog.cpp b/AboutDialog.cpp new file mode 100755 index 0000000..47880eb --- /dev/null +++ b/AboutDialog.cpp @@ -0,0 +1,70 @@ + + +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP +#include +#endif //WX_PRECOMP +#include "wx/utils.h" +#include "AboutDialog.h" +/////////////////////////////////////////////////////////////////////////// + +BEGIN_EVENT_TABLE(AboutDialog, wxDialog) + EVT_BUTTON(linkButtonPress, AboutDialog::onLinkButton) + EVT_BUTTON(closeButtonPress,AboutDialog::onClose) +END_EVENT_TABLE() + +AboutDialog::AboutDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ) +{ + wxBoxSizer* mainSizer; + mainSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* aboutSizer; + aboutSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("About:") ), wxHORIZONTAL ); + + logoBitmap = new wxStaticBitmap( this, ID_DEFAULT, wxBitmap( wxT("about.dat"), wxBITMAP_TYPE_ANY ), wxDefaultPosition, wxDefaultSize, 0 ); + aboutSizer->Add( logoBitmap, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + wxBoxSizer* infoSizer; + infoSizer = new wxBoxSizer( wxVERTICAL ); + + infoStaticText = new wxStaticText( this, ID_DEFAULT, wxT("Pillow 0.1a \n Billconan Studio 2006 \n Blog:http://billconan.blogspot.com"), wxDefaultPosition, wxDefaultSize, 0 ); + infoSizer->Add( infoStaticText, 1, wxALL, 5 ); + + linkButton = new wxButton( this, linkButtonPress, wxT("Go to the site!"), wxDefaultPosition, wxDefaultSize, 0 ); + infoSizer->Add( linkButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + aboutSizer->Add( infoSizer, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainSizer->Add( aboutSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + wxBoxSizer* buttonSizer; + buttonSizer = new wxBoxSizer( wxVERTICAL ); + + closeButton = new wxButton( this, closeButtonPress, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( closeButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainSizer->Add( buttonSizer, 0, wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + this->SetSizer( mainSizer ); + this->Layout(); + this->Fit(); +} + +void AboutDialog::onLinkButton(wxCommandEvent& event) +{ + wxLaunchDefaultBrowser(_T("http://billconan.blogspot.com")); + event; +}; + +void AboutDialog::onClose(wxCommandEvent& event) +{ + Close(); + event; +}; + +//AboutDialog::~AboutDialog(void){} diff --git a/AboutDialog.h b/AboutDialog.h new file mode 100755 index 0000000..d932280 --- /dev/null +++ b/AboutDialog.h @@ -0,0 +1,43 @@ +#pragma once + +#ifdef WX_GCH +#include +#else +#include +#endif + +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + +/** + * Class AboutDialog + */ +class AboutDialog : public wxDialog +{ + private: + + protected: + wxStaticBitmap* logoBitmap; + wxStaticText* infoStaticText; + wxButton* linkButton; + wxButton* closeButton; + + public: + AboutDialog( wxWindow* parent, int id = -1, wxString title = wxT(""), wxPoint pos = wxDefaultPosition, wxSize size = wxDefaultSize, int style = wxDEFAULT_DIALOG_STYLE ); + void onLinkButton(wxCommandEvent& event); + void onClose(wxCommandEvent& event); + DECLARE_EVENT_TABLE() +}; + +enum +{ + linkButtonPress=2423, + closeButtonPress +}; \ No newline at end of file diff --git a/AxisCursor.cpp b/AxisCursor.cpp new file mode 100755 index 0000000..6ec3892 --- /dev/null +++ b/AxisCursor.cpp @@ -0,0 +1,16 @@ +#include "AxisCursor.h" + +AxisCursor::~AxisCursor(void) +{ + glDeleteLists(moveX,1); + glDeleteLists(rotateX,1); + glDeleteLists(scaleX,1); + + glDeleteLists(moveY,1); + glDeleteLists(rotateY,1); + glDeleteLists(scaleY,1); + + glDeleteLists(moveZ,1); + glDeleteLists(rotateZ,1); + glDeleteLists(scaleZ,1); +} diff --git a/AxisCursor.h b/AxisCursor.h new file mode 100755 index 0000000..e321686 --- /dev/null +++ b/AxisCursor.h @@ -0,0 +1,504 @@ +#pragma once +#include "Enum.h" +#include +#include +#include +#include "vector.h" +#include "Camera.h" + +DECLARE_ENUM(AxisCursorMode) + MoveAxis=982, + RotateAxis, + ScaleAxis, + NoAxis +END_ENUM() + +class AxisCursor +{ +GLuint moveX; +GLuint moveY; +GLuint moveZ; +GLuint rotateX; +GLuint rotateY; +GLuint rotateZ; +GLuint scaleX; +GLuint scaleY; +GLuint scaleZ; +GLuint scaleC; +public: +Vector position; +Vector rotation; +AxisCursorMode mode; + + +public: + AxisCursor(void):mode(AxisCursorMode::NoAxis),position(),rotation() + { + }; + + void initialize() + { + moveX=glGenLists(1); + moveY=glGenLists(1); + moveZ=glGenLists(1); + + rotateX=glGenLists(1); + rotateY=glGenLists(1); + rotateZ=glGenLists(1); + + scaleX=glGenLists(1); + scaleY=glGenLists(1); + scaleZ=glGenLists(1); + scaleC=glGenLists(1); + + glNewList(moveX,GL_COMPILE); + glColor3ub(255,0,0); + glBegin(GL_TRIANGLES); + glVertex3i(20,0,0); + glVertex3i(10,1,1); + glVertex3i(10,1,-1); + glVertex3i(20,0,0); + glVertex3i(10,-1,1); + glVertex3i(10,1,1); + glVertex3i(20,0,0); + glVertex3i(10,-1,-1); + glVertex3i(10,-1,1); + glVertex3i(20,0,0); + glVertex3i(10,-1,-1); + glVertex3i(10,-1,1); + glVertex3i(20,0,0); + glVertex3i(10,1,-1); + glVertex3i(10,-1,-1); + glEnd(); + glBegin(GL_QUADS); + glVertex3i(10,-1,-1); + glVertex3i(10,1,-1); + glVertex3i(10,1,1); + glVertex3i(10,-1,1); + glEnd(); + glBegin(GL_LINES); + glVertex3i(0,0,0); + glVertex3i(10,0,0); + glEnd(); + glEndList(); + + glNewList(moveY,GL_COMPILE); + glColor3ub(0,0,255); + glBegin(GL_TRIANGLES); + glVertex3i(0,20,0); + glVertex3i(1,10,-1); + glVertex3i(1,10,1); + + glVertex3i(0,20,0); + glVertex3i(1,10,1); + glVertex3i(-1,10,1); + + glVertex3i(0,20,0); + glVertex3i(-1,10,1); + glVertex3i(-1,10,-1); + + glVertex3i(0,20,0); + glVertex3i(-1,10,-1); + glVertex3i(1,10,-1); + glEnd(); + glBegin(GL_QUADS); + glVertex3i(-1,10,1); + glVertex3i(1,10,1); + glVertex3i(1,10,-1); + glVertex3i(-1,10,-1); + + glEnd(); + glBegin(GL_LINES); + glVertex3i(0,0,0); + glVertex3i(0,10,0); + glEnd(); + glEndList(); + + glNewList(moveZ,GL_COMPILE); + glColor3ub(255,252,0); + glBegin(GL_QUADS); + glVertex3i(0,0,20); + glVertex3i(1,1,10); + glVertex3i(1,-1,10); + glVertex3i(0,0,20); + glVertex3i(-1,1,10); + glVertex3i(1,1,10); + glVertex3i(0,0,20); + glVertex3i(-1,-1,10); + glVertex3i(-1,1,10); + glVertex3i(0,0,20); + glVertex3i(1,-1,10); + glVertex3i(-1,-1,10); + glVertex3i(1,1,10); + glVertex3i(-1,1,10); + glVertex3i(-1,-1,10); + glVertex3i(1,-1,10); + glEnd(); + glBegin(GL_LINES); + glVertex3i(0,0,0); + glVertex3i(0,0,10); + glEnd(); + glEndList(); + + glNewList(rotateX,GL_COMPILE); + glColor3ub(255,0,0); + glBegin(GL_TRIANGLES); + glVertex3i(10,0,0); + glVertex3i(12,1,1); + glVertex3i(12,-1,1); + glVertex3i(10,0,0); + glVertex3i(12,1,1); + glVertex3i(12,1,-1); + glVertex3i(10,0,0); + glVertex3i(12,1,-1); + glVertex3i(12,-1,-1); + glVertex3i(14,0,0); + glVertex3i(12,-1,1); + glVertex3i(12,1,1); + glVertex3i(14,0,0); + glVertex3i(12,1,1); + glVertex3i(12,1,-1); + glVertex3i(14,0,0); + glVertex3i(12,1,-1); + glVertex3i(12,-1,-1); + glVertex3i(14,0,0); + glVertex3i(12,-1,-1); + glVertex3i(12,-1,1); + glEnd(); + glBegin(GL_LINES); + glVertex3i(0,0,0); + glVertex3i(10,0,0); + glEnd(); + glEndList(); + + glNewList(rotateY,GL_COMPILE); + glColor3ub(0,0,255); + glBegin(GL_TRIANGLES); + glVertex3i(0,10,0); + glVertex3i(1,12,1); + glVertex3i(-1,12,1); + glVertex3i(0,10,0); + glVertex3i(1,12,1); + glVertex3i(1,12,-1); + glVertex3i(0,10,0); + glVertex3i(1,12,-1); + glVertex3i(-1,12,-1); + glVertex3i(0,14,0); + glVertex3i(-1,12,1); + glVertex3i(1,12,1); + glVertex3i(0,14,0); + glVertex3i(1,12,1); + glVertex3i(1,12,-1); + glVertex3i(0,14,0); + glVertex3i(1,12,-1); + glVertex3i(-1,12,-1); + glVertex3i(0,14,0); + glVertex3i(-1,12,-1); + glVertex3i(-1,12,1); + glEnd(); + glBegin(GL_LINES); + glVertex3i(0,0,0); + glVertex3i(0,10,0); + glEnd(); + glEndList(); + + glNewList(rotateZ,GL_COMPILE); + glColor3ub(255,252,0); + glBegin(GL_TRIANGLES); + glVertex3i(0,0,10); + glVertex3i(1,1,12); + glVertex3i(-1,1,12); + glVertex3i(0,0,10); + glVertex3i(1,1,12); + glVertex3i(1,-1,12); + glVertex3i(0,0,10); + glVertex3i(1,-1,12); + glVertex3i(-1,-1,12); + glVertex3i(0,0,14); + glVertex3i(-1,1,12); + glVertex3i(1,1,12); + glVertex3i(0,0,14); + glVertex3i(1,1,12); + glVertex3i(1,-1,12); + glVertex3i(0,0,14); + glVertex3i(1,-1,12); + glVertex3i(-1,-1,12); + glVertex3i(0,0,14); + glVertex3i(-1,-1,12); + glVertex3i(-1,1,12); + glEnd(); + glBegin(GL_LINES); + glVertex3i(0,0,0); + glVertex3i(0,0,10); + glEnd(); + glEndList(); + + glNewList(scaleX,GL_COMPILE); + glColor3ub(255,0,0); + glBegin(GL_QUADS); + glVertex3i(10,-1,-1); + glVertex3i(10,-1,1); + glVertex3i(10,1,1); + glVertex3i(10,1,-1); + glVertex3i(10,-1,1); + glVertex3i(10,1,1); + glVertex3i(12,1,1); + glVertex3i(12,-1,1); + glVertex3i(12,1,1); + glVertex3i(10,1,1); + glVertex3i(10,1,-1); + glVertex3i(12,1,-1); + glVertex3i(12,1,-1); + glVertex3i(10,1,-1); + glVertex3i(10,-1,-1); + glVertex3i(12,-1,-1); + glVertex3i(12,-1,-1); + glVertex3i(10,-1,-1); + glVertex3i(10,-1,1); + glVertex3i(12,-1,1); + glVertex3i(12,-1,1); + glVertex3i(12,1,1); + glVertex3i(12,1,-1); + glVertex3i(12,-1,-1); + glEnd(); + glBegin(GL_LINES); + glVertex3i(0,0,0); + glVertex3i(10,0,0); + glEnd(); + glEndList(); + + glNewList(scaleY,GL_COMPILE); + glColor3ub(0,0,255); + glBegin(GL_QUADS); + glVertex3i(-1,10,-1); + glVertex3i(-1,10,1); + glVertex3i(1,10,1); + glVertex3i(1,10,-1); + glVertex3i(-1,10,1); + glVertex3i(1,10,1); + glVertex3i(1,12,1); + glVertex3i(-1,12,1); + glVertex3i(1,12,1); + glVertex3i(1,10,1); + glVertex3i(1,10,-1); + glVertex3i(1,12,-1); + glVertex3i(1,12,-1); + glVertex3i(1,10,-1); + glVertex3i(-1,10,-1); + glVertex3i(-1,12,-1); + glVertex3i(-1,12,-1); + glVertex3i(-1,10,-1); + glVertex3i(-1,10,1); + glVertex3i(-1,12,1); + glVertex3i(-1,12,1); + glVertex3i(1,12,1); + glVertex3i(1,12,-1); + glVertex3i(-1,12,-1); + glEnd(); + glBegin(GL_LINES); + glVertex3i(0,0,0); + glVertex3i(0,10,0); + glEnd(); + glEndList(); + + glNewList(scaleZ,GL_COMPILE); + glColor3ub(255,252,0); + glBegin(GL_QUADS); + glVertex3i(-1,-1,10); + glVertex3i(-1,1,10); + glVertex3i(1,1,10); + glVertex3i(1,-1,10); + glVertex3i(-1,1,10); + glVertex3i(1,1,10); + glVertex3i(1,1,12); + glVertex3i(-1,1,12); + glVertex3i(1,1,12); + glVertex3i(1,1,10); + glVertex3i(1,-1,10); + glVertex3i(1,-1,12); + glVertex3i(1,-1,12); + glVertex3i(1,-1,10); + glVertex3i(-1,-1,10); + glVertex3i(-1,-1,12); + glVertex3i(-1,-1,12); + glVertex3i(-1,-1,10); + glVertex3i(-1,1,10); + glVertex3i(-1,1,12); + glVertex3i(-1,1,12); + glVertex3i(1,1,12); + glVertex3i(1,-1,12); + glVertex3i(-1,-1,12); + glEnd(); + glBegin(GL_LINES); + glVertex3i(0,0,0); + glVertex3i(0,0,10); + glEnd(); + glEndList(); + + glNewList(scaleC,GL_COMPILE); + glColor3ub(0,252,0); + glBegin(GL_QUADS); + glVertex3i(1,-1,1); + glVertex3i(1,1,1); + glVertex3i(1,1,-1); + glVertex3i(1,-1,-1); + glVertex3i(-1,-1,-1); + glVertex3i(-1,1,-1); + glVertex3i(-1,1,1); + glVertex3i(-1,-1,1); + glVertex3i(-1,1,1); + glVertex3i(1,1,1); + glVertex3i(1,1,-1); + glVertex3i(-1,1,-1); + glVertex3i(-1,-1,-1); + glVertex3i(1,-1,-1); + glVertex3i(1,-1,1); + glVertex3i(-1,-1,1); + glVertex3i(-1,1,1); + glVertex3i(1,1,1); + glVertex3i(1,-1,1); + glVertex3i(-1,-1,1); + glVertex3i(-1,-1,-1); + glVertex3i(1,-1,-1); + glVertex3i(1,1,-1); + glVertex3i(-1,1,-1); + glEnd(); + glEndList(); + }; + + void onPaint(const Vector &eye,CameraMode::__Enum cameraMode) + { + glDisable(GL_DEPTH_TEST); + glDisable(GL_LIGHTING); + float scaleFactor=position.distto(eye)*0.004f; + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(position.x,position.y,position.z); + glRotatef(rotation.w,rotation.x,rotation.y,rotation.z); + glScalef(scaleFactor,scaleFactor,scaleFactor); + if(mode==AxisCursorMode::MoveAxis) + { + if(cameraMode==CameraMode::Perspective) + { + glCallList(moveX); + glCallList(moveY); + glCallList(moveZ); + } + else if(cameraMode==CameraMode::Front) + { + glCallList(moveX); + glCallList(moveZ); + } + else if(cameraMode==CameraMode::Back) + { + glCallList(moveX); + glCallList(moveZ); + } + else if(cameraMode==CameraMode::Top) + { + glCallList(moveX); + glCallList(moveY); + } + else if(cameraMode==CameraMode::Bottom) + { + glCallList(moveX); + glCallList(moveY); + } + else if(cameraMode==CameraMode::Left) + { + glCallList(moveY); + glCallList(moveZ); + } + else if(cameraMode==CameraMode::Right) + { + glCallList(moveY); + glCallList(moveZ); + } + + } + else if(mode==AxisCursorMode::RotateAxis) + { + if(cameraMode==CameraMode::Perspective) + { + glCallList(rotateX); + glCallList(rotateY); + glCallList(rotateZ); + } + else if(cameraMode==CameraMode::Front) + { + glCallList(rotateX); + glCallList(rotateZ); + } + else if(cameraMode==CameraMode::Back) + { + glCallList(rotateX); + glCallList(rotateZ); + } + else if(cameraMode==CameraMode::Top) + { + glCallList(rotateX); + glCallList(rotateY); + } + else if(cameraMode==CameraMode::Bottom) + { + glCallList(rotateX); + glCallList(rotateY); + } + else if(cameraMode==CameraMode::Left) + { + glCallList(rotateY); + glCallList(rotateZ); + } + else if(cameraMode==CameraMode::Right) + { + glCallList(rotateY); + glCallList(rotateZ); + } + } + else if(mode==AxisCursorMode::ScaleAxis) + { + if(cameraMode==CameraMode::Perspective) + { + glCallList(scaleX); + glCallList(scaleY); + glCallList(scaleZ); + } + else if(cameraMode==CameraMode::Front) + { + glCallList(scaleX); + glCallList(scaleZ); + } + else if(cameraMode==CameraMode::Back) + { + glCallList(scaleX); + glCallList(scaleZ); + } + else if(cameraMode==CameraMode::Top) + { + glCallList(scaleX); + glCallList(scaleY); + } + else if(cameraMode==CameraMode::Bottom) + { + glCallList(scaleX); + glCallList(scaleY); + } + else if(cameraMode==CameraMode::Left) + { + glCallList(scaleY); + glCallList(scaleZ); + } + else if(cameraMode==CameraMode::Right) + { + glCallList(scaleY); + glCallList(scaleZ); + } + } + glPopMatrix(); + glEnable(GL_LIGHTING); + glEnable(GL_DEPTH_TEST); + }; + +public: + ~AxisCursor(void); +}; diff --git a/BackCamera.cpp b/BackCamera.cpp new file mode 100755 index 0000000..aa8376c --- /dev/null +++ b/BackCamera.cpp @@ -0,0 +1,31 @@ +#include "BackCamera.h" + +ViewportImage *backReference=NULL; + +BackCamera::BackCamera(float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up): +Camera(CameraMode::Back,width,height,nearPlane,farPlane,startX,startY,target,eye,up) +{ + light_ambient[0]=0.4f; + light_ambient[1]=0.4f; + light_ambient[2]=0.4f; + light_ambient[3]=1; + + light_diffuse[0]=0.6f; + light_diffuse[1]=0.6f; + light_diffuse[2]=0.6f; + light_diffuse[3]=1; + + light_specular[0]=0.7f; + light_specular[1]=0.7f; + light_specular[2]=0.7f; + light_specular[3]=1; + + light_position[0]=0; + light_position[1]=-500; + light_position[2]=0; + light_position[3]=1; +} + +BackCamera::~BackCamera(void) +{ +} diff --git a/BackCamera.h b/BackCamera.h new file mode 100755 index 0000000..87f9374 --- /dev/null +++ b/BackCamera.h @@ -0,0 +1,155 @@ +#pragma once +#include "camera.h" +#include + +class BackCamera : + public Camera +{ +public: + BackCamera(float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up); + + void setCamera() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,-990,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + //gluPerspective(this->angle,this->width/this->height,this->nearPlane,this->farPlane); + glOrtho(-width*(eye.y)*0.005f,width*(eye.y)*0.005f,-height*(eye.y)*0.005f,height*(eye.y)*0.005f,nearPlane,farPlane); + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + drawGird(); + if(backReference && backReference->isShow) + { + backReference->onPaint(); + } + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + }; + + void setCameraForSelectionS() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,-990,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-width*(eye.y)*0.005f,width*(eye.y)*0.005f,-height*(eye.y)*0.005f,height*(eye.y)*0.005f,nearPlane,farPlane); + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + }; + + void setCameraForSelectionD(size_t x1,size_t y1,size_t x2,size_t y2,size_t h) + { + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + GLint viewport[4]; + glGetIntegerv (GL_VIEWPORT, viewport); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + gluPickMatrix((GLdouble) (x1+x2)/2,(GLdouble) (h - (y1+y2)/2), (GLdouble)sw,(GLdouble)sh, viewport); + glOrtho(-width*(eye.y)*0.005f,width*(eye.y)*0.005f,-height*(eye.y)*0.005f,height*(eye.y)*0.005f,nearPlane,farPlane+100); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,-990,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + }; + + void setReferenceImage(const char *path,GLuint imageID,Vector &position,size_t width,size_t height) + { + if(backReference) + { + delete backReference; + } + + backReference=new ViewportImage(path,imageID,width,height,type._value,position); + backReference->initialize(); + backReference->isShow=true; + }; + + void getViewportImage(GLuint &texID,std::string &path,Vector &position,size_t &width,size_t &height) + { + if(backReference) + { + texID=backReference->imageID; + path=backReference->path; + position=backReference->position; + width=backReference->width; + height=backReference->height; + } + else + { + texID=0; + path=""; + position.vec(0); + width=0; + height=0; + } + }; + + void disableReference() + { + backReference->isShow=false; + } + + Vector getHorizontalDir() + { + return Vector(-1,0,0); + }; + Vector getEye() + { + return eye*10.0f; + } + + + void zoom(float step) + { + Vector cameraDirection(0,-1,0); + + //cameraDirection.normalize(); + //this->target+=cameraDirection*step; + eye+=cameraDirection*(float)(step*0.1f); + if(eye.y<2) eye.y=2; + }; + + void drawGird() + { + if(showGird) + { + theGird->drawXZ(); + } + }; + + void onPanPress(int x,int y) + { + this->isDraging=true; + this->old.x=(float)x; + this->old.y=(float)y; + }; + + void onPanRelease(int x,int y) + { + x; + y; + isDraging=false; + old.null(); + }; + + void pan(int x,int y) + { + float dx=(float)(old.x-x)*eye.y*0.01f; + float dz=(float)(y-old.y)*eye.y*0.01f; + old.x=(float)x; + old.y=(float)y; + //dx=10; + eye.x+=dx; + eye.z+=dz; + target.x+=dx; + target.z+=dz; + }; + +public: + ~BackCamera(void); +}; diff --git a/BottomCamera.cpp b/BottomCamera.cpp new file mode 100755 index 0000000..006b611 --- /dev/null +++ b/BottomCamera.cpp @@ -0,0 +1,32 @@ +#include "BottomCamera.h" + + +ViewportImage *bottomReference=NULL; + +BottomCamera::BottomCamera(float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up): +Camera(CameraMode::Bottom,width,height,nearPlane,farPlane,startX,startY,target,eye,up) +{ + light_ambient[0]=0.4f; + light_ambient[1]=0.4f; + light_ambient[2]=0.4f; + light_ambient[3]=1; + + light_diffuse[0]=0.6f; + light_diffuse[1]=0.6f; + light_diffuse[2]=0.6f; + light_diffuse[3]=1; + + light_specular[0]=0.7f; + light_specular[1]=0.7f; + light_specular[2]=0.7f; + light_specular[3]=1; + + light_position[0]=0; + light_position[1]=0; + light_position[2]=-500; + light_position[3]=1; +} + +BottomCamera::~BottomCamera(void) +{ +} diff --git a/BottomCamera.h b/BottomCamera.h new file mode 100755 index 0000000..0c7db2c --- /dev/null +++ b/BottomCamera.h @@ -0,0 +1,153 @@ +#pragma once +#include "camera.h" + +class BottomCamera : + public Camera +{ +public: + BottomCamera(float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up); + void setCamera() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,eye.y,-990,target.x,target.y,target.z,up.x,up.y,up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + //gluPerspective(this->angle,this->width/this->height,this->nearPlane,this->farPlane); + glOrtho(-width*(eye.z)*0.005f,width*(eye.z)*0.005f,-height*(eye.z)*0.005f,height*(eye.z)*0.005f,nearPlane,farPlane); + //glOrtho(-100,100,-100,100,nearPlane,farPlane); + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + drawGird(); + if(bottomReference && bottomReference->isShow) + { + bottomReference->onPaint(); + } + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + }; + + void setCameraForSelectionS() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,eye.y,-990,target.x,target.y,target.z,up.x,up.y,up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + //gluPerspective(this->angle,this->width/this->height,this->nearPlane,this->farPlane); + glOrtho(-width*(eye.z)*0.005f,width*(eye.z)*0.005f,-height*(eye.z)*0.005f,height*(eye.z)*0.005f,nearPlane,farPlane); + //glOrtho(-100,100,-100,100,nearPlane,farPlane); + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + }; + + void setCameraForSelectionD(size_t x1,size_t y1,size_t x2,size_t y2,size_t h) + { + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + GLint viewport[4]; + glGetIntegerv (GL_VIEWPORT, viewport); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + gluPickMatrix((GLdouble) (x1+x2)/2,(GLdouble) (h - (y1+y2)/2), (GLdouble)sw,(GLdouble)sh, viewport); + glOrtho(-width*(eye.z)*0.005f,width*(eye.z)*0.005f,-height*(eye.z)*0.005f,height*(eye.z)*0.005f,nearPlane,farPlane+100); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,eye.y,-990,target.x,target.y,target.z,up.x,up.y,up.z); + }; + + void setReferenceImage(const char *path,GLuint imageID,Vector &position,size_t width,size_t height) + { + if(bottomReference) + { + delete bottomReference; + } + + bottomReference=new ViewportImage(path,imageID,width,height,type._value,position); + bottomReference->initialize(); + bottomReference->isShow=true; + }; + + void getViewportImage(GLuint &texID,std::string &path,Vector &position,size_t &width,size_t &height) + { + if(bottomReference) + { + texID=bottomReference->imageID; + path=bottomReference->path; + position=bottomReference->position; + width=bottomReference->width; + height=bottomReference->height; + } + else + { + texID=0; + path=""; + position.vec(0); + width=0; + height=0; + } + }; + + void disableReference() + { + bottomReference->isShow=false; + } + + Vector getEye() + { + return eye*10.0f; + } + Vector getHorizontalDir() + { + return Vector(1,0,0); + }; + + void drawGird() + { + if(showGird) + { + theGird->drawXY(); + } + }; + void zoom(float step) + { + Vector cameraDirection(0,0,-1); + eye+=cameraDirection*(float)(step*0.1f); + if(eye.z<2) eye.z=2; + }; + + + void onPanPress(int x,int y) + { + isDraging=true; + old.x=(float)x; + old.y=(float)y; + }; + + void onPanRelease(int x,int y) + { + x; + y; + isDraging=false; + old.null(); + }; + + void pan(int x,int y) + { + float dx=(float)(x-old.x)*eye.z*0.01f; + float dy=(float)(y-old.y)*eye.z*0.01f; + old.x=(float)x; + old.y=(float)y; + //dx=10; + eye.x+=dx; + eye.y+=dy; + target.x+=dx; + target.y+=dy; + }; + +public: + ~BottomCamera(void); +}; diff --git a/Button.cpp b/Button.cpp new file mode 100755 index 0000000..1c12b8f --- /dev/null +++ b/Button.cpp @@ -0,0 +1,2 @@ +#include "Button.h" + diff --git a/Button.h b/Button.h new file mode 100755 index 0000000..55f664a --- /dev/null +++ b/Button.h @@ -0,0 +1,167 @@ +#pragma once +#include +#include +#include +#include "Enum.h" + +DECLARE_ENUM(ButtonEventType) + Nothing=823, + Wireframe, + Faced, + WireframeFaced, + Smooth, + Wire, + SingleView, + TwoView, + ThreeView, + FourView, + ObjectSelectionMode, + FaceSelectionMode, + EdgeSelectionMode, + VertexSelectionMode, + Help, + CreateCube, + CreateCylinder, + CreateSphere, + CreatePlane, + CameraPerspective, + CameraFront, + CameraBack, + CameraLeft, + CameraRight, + CameraTop, + CameraBottom, + Screenshot, + About, + Open, + Save, + SaveAs, + New, + DeleteVertex, + Split, + Extrude, + Collapse +END_ENUM() + +class Button +{ + ButtonEventType type; + size_t callID; + bool isIn; + int x; + int y; + size_t sx; + size_t sy; + float texCx1; + float texCx2; + float texCy1; + float texCy2; + bool isPressed; +public: + Button(ButtonEventType::__Enum theType,float theTexCx1,float theTexCy1,float theTexCx2,float theTexCy2,size_t theSX,size_t theSY):type(theType),texCx1(theTexCx1),texCy1(theTexCy1),texCx2(theTexCx2),texCy2(theTexCy2),isIn(false),x(0),y(0),sx(theSX),sy(theSY),isPressed(false) + { + callID=glGenLists(1); + }; + void updatePosition(int theX,int theY) + { + x=theX; + y=theY; + }; + void updateSize(size_t theSx,size_t theSy) + { + sx=theSx; + sy=theSy; + }; + void initialize() + { + glNewList(callID,GL_COMPILE); + glBegin(GL_QUADS); + glTexCoord2f(texCx1,texCy1); + glVertex2i(x,y); + glTexCoord2f(texCx2,texCy1); + glVertex2i(x+sx,y); + glTexCoord2f(texCx2,texCy2); + glVertex2i(x+sx,y+sy); + glTexCoord2f(texCx1,texCy2); + glVertex2i(x,y+sy); + glEnd(); + glEndList(); + }; + bool onIn(int mx,int my) + { + if(mx>x && my>y && mxx && my>y && mxx+(int)sx || my>y+(int)sy) + { + isIn=false; + return true; + } + else + { + return false; + } + } + + void onPaint() + { + if(isPressed) + { + glCallList(callID); + } + else + { + if(isIn) + { + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(-2,-2,0); + glCallList(callID); + glPopMatrix(); + } + else + { + glCallList(callID); + } + } + }; +public: + ~Button(void) + { + glDeleteLists(callID,1); + }; +}; \ No newline at end of file diff --git a/Camera.cpp b/Camera.cpp new file mode 100755 index 0000000..798b877 --- /dev/null +++ b/Camera.cpp @@ -0,0 +1,11 @@ +#include "Camera.h" + +Camera::Camera(CameraMode::__Enum type,float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up): +type(type),showGird(true),width(width),height(height),nearPlane(nearPlane),farPlane(farPlane),startX(startX),startY(startY),target(target),eye(eye),up(up),old(0),isDraging(false)//,isShowViewportImage(false)//,referenceImage(NULL) +{ +} + +Camera::~Camera(void) +{ +// delete referenceImage; +} diff --git a/Camera.h b/Camera.h new file mode 100755 index 0000000..7876501 --- /dev/null +++ b/Camera.h @@ -0,0 +1,132 @@ +#pragma once +#include "Enum.h" +#include "Gird.h" +#include "Matrix.h" +#include "Vector.cpp" +#include "Quaternion.h" +#include "ViewportImage.h" +#define Epsilon 1.0e-5 + + +class Camera +{ +protected: + Vector old; + bool isDraging; + +public: + //ViewportImage *referenceImage; + CameraMode type; + float width; + float height; + float nearPlane; + float farPlane; + float startX; + float startY; + Vector target; + Vector eye; + Vector up; + bool showGird; + //bool isShowViewportImage; + + GLfloat light_ambient[4]; + GLfloat light_diffuse[4]; + GLfloat light_specular[4]; + GLfloat light_position[4]; + + virtual void zoom(float step) + { + step; + }; + + virtual void onPanPress(int x,int y) + { + x; + y; + }; + + virtual void disableReference(){}; + + virtual void getViewportImage(GLuint &texID,std::string &path,Vector &position,size_t &width,size_t &height) + { + texID; + path; + position; + width; + height; + }; + + virtual void setReferenceImage(const char *path,GLuint imageID,Vector &position,size_t width,size_t height) + { + path; + imageID; + position; + width; + height; + }; + + virtual void onRotatePress(int x,int y) + { + x; + y; + }; + virtual Vector getEye() + { + return Vector(0); + }; + virtual void rotate(int x,int y) + { + x; + y; + }; + virtual void onRotateRelease() + { + }; + + virtual void onPanRelease(int x,int y) + { + x; + y; + }; + + virtual void setCamera() + { + }; + + virtual void setCameraForSelectionD(size_t x1,size_t y1,size_t x2,size_t y2,size_t h) + { + x1;y1;x2;y2;h; + }; + + virtual void setCameraForSelectionS() + { + + }; + + virtual void drawGird() + { + }; + + virtual Vector getHorizontalDir() + { + return Vector(0,0,0); + }; + virtual void pan(int x,int y) + { + x; + y; + }; + + void updateSize(float theStartX,float theStartY,float theWidth,float theHeight) + { + startX=theStartX; + startY=theStartY; + width=theWidth; + height=theHeight; + }; + +public: + Camera(CameraMode::__Enum type,float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up); +public: + virtual ~Camera(void); +}; \ No newline at end of file diff --git a/Console.cpp b/Console.cpp new file mode 100755 index 0000000..c4dd416 --- /dev/null +++ b/Console.cpp @@ -0,0 +1,66 @@ +#include "Console.h" +#include + +Console::Console(void) +{ + this->capability=40; +} + +Console::Console(unsigned int capability) +{ + this->capability=capability; +} + +void Console::cprintf(const char *fmt, ...) +{ + static char temp[16384]; + va_list va; + va_start( va, fmt ); + vsprintf( temp, fmt, va ); + va_end( va ); + std::string result(temp); + if(this->theContext.size()>=this->capability) + { + this->theContext.pop_front(); + } + this->theContext.push_back(result); +} + +void Console::dprintf(const char *fmt, ...) +{ + static char temp[16384]; + va_list va; + va_start( va, fmt ); + vsprintf( temp, fmt, va ); + va_end( va ); + std::string result(temp); + if(this->theContext.size()>=this->capability) + { + this->theContext.pop_front(); + } + this->theContext.push_back(result); + if(this->dialogInstance) + { + this->dialogInstance->refresh(); + } +} + +void Console::clear() +{ + for(size_t i=0;itheContext.size();i++) + { +// delete theContext[i]; + } + theContext.clear(); +} + +void executeCommand(char *) +{ +} + +Console::~Console(void) +{ + for(size_t i=0;itheContext.size();i++) + { + } +} \ No newline at end of file diff --git a/Console.h b/Console.h new file mode 100755 index 0000000..e776495 --- /dev/null +++ b/Console.h @@ -0,0 +1,40 @@ +#pragma once +#include +#include +#include +#include "ConsoleDialog.h" + +class Console +{ +private: + std::deque theContext; + unsigned int capability; + +public: + ConsoleDialog *dialogInstance; + Console(void); + Console(unsigned int capability); + void cprintf(const char *fmt, ...); + void dprintf(const char *fmt, ...); + void clear(); + void executeCommand(char *); + void out() + { + for(size_t i=0;itheContext.size();i++) + printf("%s\n",this->theContext[i].c_str()); + } + + wxString outString() + { + wxString msg; + for(size_t i=0;itheContext.size();i++) + { + msg+=_T(this->theContext[i].c_str()); + } + //msg< + +extern Console *theConsole; + +BEGIN_EVENT_TABLE(ConsoleDialog, wxDialog) + EVT_BUTTON(ConsoleDialogSubmitButton, ConsoleDialog::onButton) + EVT_CLOSE(ConsoleDialog::onClose) +END_EVENT_TABLE() + +void ConsoleDialog::refresh() +{ + if(IsShown()) + { + consoleView->Clear(); + *consoleView<outString(); + } +} + +ConsoleDialog::ConsoleDialog(wxWindow *parent):wxDialog(parent, wxID_ANY, wxString(_T("Modeless dialog")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX, "ConsoleDialog") +{ + this->consoleView = new wxTextCtrl( this, wxID_ANY, _T(""),wxDefaultPosition, wxDefaultSize,wxTE_MULTILINE|wxTE_READONLY); + wxButton *submitButton = new wxButton(this, ConsoleDialogSubmitButton, _T("Press me")); + wxBoxSizer *sizerCommandLine = new wxBoxSizer(wxHORIZONTAL); + commandLine=new wxTextCtrl( this, wxID_ANY, _T("Single line."),wxDefaultPosition, wxDefaultSize,wxTE_PROCESS_ENTER); + wxBoxSizer *sizerTop = new wxBoxSizer(wxVERTICAL); + sizerTop->Add(consoleView,5, wxEXPAND | wxALL, 5); + sizerCommandLine->Add(commandLine, 8, wxEXPAND | wxALL, 5); + sizerCommandLine->Add(submitButton, 1, wxEXPAND | wxALL, 5); + sizerTop->Add(sizerCommandLine,1, wxEXPAND | wxALL, 5); + SetSizer(sizerTop); + sizerTop->SetSizeHints(this); + sizerTop->Fit(this); + theConsole->cprintf("fuck your ass hole"); + theConsole->cprintf("%d",1232); + *consoleView<<"fuck"; + *consoleView<outString(); +} + +ConsoleDialog::~ConsoleDialog(void) +{ + delete this->consoleView; + if(theConsole->dialogInstance) + { + theConsole->dialogInstance=0; + } +} + +void ConsoleDialog::onButton(wxCommandEvent& WXUNUSED(event)) +{ + theConsole->dprintf("%s\n",this->commandLine->GetLineText(0).c_str()); +} + +void ConsoleDialog::onClose(wxCloseEvent& event) +{ + Hide(); + event; +} \ No newline at end of file diff --git a/ConsoleDialog.h b/ConsoleDialog.h new file mode 100755 index 0000000..97d18e3 --- /dev/null +++ b/ConsoleDialog.h @@ -0,0 +1,27 @@ +#pragma once +#include "wx/wx.h" +#include "wx/wxprec.h" + +class ConsoleDialog :public wxDialog +{ +private: + wxTextCtrl *consoleView; + wxTextCtrl *commandLine; +public: + ConsoleDialog(wxWindow *parent); +public: + + ~ConsoleDialog(void); + void onButton(wxCommandEvent& event); + void onClose(wxCloseEvent& event); + + void refresh(); + + + DECLARE_EVENT_TABLE() +}; + +enum +{ + ConsoleDialogSubmitButton=300 +}; diff --git a/Edge.cpp b/Edge.cpp new file mode 100755 index 0000000..4aed877 --- /dev/null +++ b/Edge.cpp @@ -0,0 +1,24 @@ +#include "Edge.h" + +Edge::Edge(void):SubdivideEdge(),clone(0) +{ +} + +Edge::Edge(int theStart,int theEnd):SubdivideEdge(theStart,theEnd),clone(0) +{ +} + +struct EdgeInfo Edge::getEdgeInfo() +{ + struct EdgeInfo result; + result.index=index; + result.start=start; + result.end=end; + result.left=left; + result.right=right; + return result; +} + +Edge::~Edge(void) +{ +} \ No newline at end of file diff --git a/Edge.h b/Edge.h new file mode 100755 index 0000000..bb113e5 --- /dev/null +++ b/Edge.h @@ -0,0 +1,31 @@ +#pragma once +#include "SubdivideEdge.h" + +//¶¨Òå±ßµÄÊôÐÔ£¬ÓÃÓÚ´æ´¢³ÉÎļþ +struct EdgeInfo +{ + size_t index; + size_t start; + size_t end; + size_t left; + size_t right; +}; + +//±ßÀà +class Edge : public SubdivideEdge +{ +public: + //±ßµÄ¿Ë¡±ß±àºÅ£¬ÓÃÓÚÉú³ÉÕâ¸ö±ßµÄ¿Ë¡ + int clone; + +public: + Edge(void); + //theStart±ßµÄÆðʼµã theEnd±ßµÄÖÕµã + //±ßµÄ·½ÏòÊǴӱߵÄÆðʼµãÖ¸ÏòÖÕµã + Edge(int theStart,int theEnd); + //µÃµ½±ßµÄËùÓÐÊôÐÔ£¬ÓÃÓÚ´æ´¢³ÉÎļþ + struct EdgeInfo getEdgeInfo(); + +public: + ~Edge(void); +}; \ No newline at end of file diff --git a/ElementBase.cpp b/ElementBase.cpp new file mode 100755 index 0000000..e51bc0a --- /dev/null +++ b/ElementBase.cpp @@ -0,0 +1,10 @@ +#include "ElementBase.h" + +//³õʼ»¯Îª²»Ñ¡Ôñ£¬²»Ï¸·Ö£¬²»ÔÙÁÙʱÊý×éÖУ¬Ï±êΪ0 +ElementBase::ElementBase(void):isSelected(false),isSub(false),isIn(false),index(0) +{ +} + +ElementBase::~ElementBase(void) +{ +} diff --git a/ElementBase.h b/ElementBase.h new file mode 100755 index 0000000..f4e0856 --- /dev/null +++ b/ElementBase.h @@ -0,0 +1,21 @@ +#pragma once + +//ËùÓпÉÒÔ±»Ñ¡ÔñÒÔ¼°Ï¸·ÖºÍÌí¼Óµ½IndexArrayµÄÔªËØ»ùÀà +class ElementBase +{ +public: + //±ê¼Çµ±Ç°ÔªËØÊÇ·ñ±»Ñ¡Ôñ + bool isSelected; + //±ê¼Çµ±Ç°ÔªËØÊÇ·ñÔÚÒ»¸öÁÙʱµÄÊý×éÄÚ + bool isIn; + //±ê¼Çµ±Ç°µÄÔªËØÊÇ·ñÔÚ¾Ö²¿Ï¸·ÖÖб»´¦Àí + bool isSub; + //±ê¼Çµ±Ç°ÔªËØÔÚIndexArrayÖеÄϱê + size_t index; + +public: + ElementBase(void); + +public: + virtual ~ElementBase(void); +}; \ No newline at end of file diff --git a/Enum.h b/Enum.h new file mode 100755 index 0000000..375a15a --- /dev/null +++ b/Enum.h @@ -0,0 +1,23 @@ +//¶¨ÒåÒ»¸öÉùÃ÷ö¾ÙÀàÐ͵ĺê +#define DECLARE_ENUM(E) \ +struct E \ +{ \ +public: \ + E(int value = 0) : _value((__Enum)value) { \ + } \ + E& operator=(int value) { \ + this->_value = (__Enum)value; \ + return *this; \ + } \ + operator int() const { \ + return this->_value; \ + } \ +\ + enum __Enum { + +#define END_ENUM() \ + }; \ +\ +public: \ + __Enum _value; \ +}; \ No newline at end of file diff --git a/ExtrudeDialog.cpp b/ExtrudeDialog.cpp new file mode 100755 index 0000000..8d286bf --- /dev/null +++ b/ExtrudeDialog.cpp @@ -0,0 +1,108 @@ + + +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP +#include +#endif //WX_PRECOMP + +#include "ExtrudeDialog.h" +#include "Scene.h" + +BEGIN_EVENT_TABLE(ExtrudeDialog, wxDialog) + EVT_BUTTON(onOKButtonPressExtrude, ExtrudeDialog::onOKButton) + EVT_BUTTON(onCancelButtonPressExtrude,ExtrudeDialog::onCancelButton) +END_EVENT_TABLE() + +ExtrudeDialog::ExtrudeDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ) +{ + wxBoxSizer* mainSizer; + mainSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* mainStaticSizer; + mainStaticSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("Extrude:") ), wxVERTICAL ); + + wxGridSizer* settingGirdSizer; + settingGirdSizer = new wxGridSizer( 2, 2, 0, 0 ); + + amountStaticText = new wxStaticText( this, ID_DEFAULT, wxT("amount:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( amountStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + amountTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingGirdSizer->Add( amountTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + xStaticText = new wxStaticText( this, ID_DEFAULT, wxT("x:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( xStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + xTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingGirdSizer->Add( xTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + yStaticText = new wxStaticText( this, ID_DEFAULT, wxT("y:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( yStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + yTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingGirdSizer->Add( yTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + zStaticText = new wxStaticText( this, ID_DEFAULT, wxT("z:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( zStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + zTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingGirdSizer->Add( zTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainStaticSizer->Add( settingGirdSizer, 1, wxEXPAND, 5 ); + + mainSizer->Add( mainStaticSizer, 0, wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + wxBoxSizer* buttonSizer; + buttonSizer = new wxBoxSizer( wxHORIZONTAL ); + + OKButton = new wxButton( this, onOKButtonPressExtrude, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( OKButton, 0, wxALL, 5 ); + + cancelButton = new wxButton( this, onCancelButtonPressExtrude, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( cancelButton, 0, wxALL, 5 ); + + mainSizer->Add( buttonSizer, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + this->SetSizer( mainSizer ); + this->Layout(); + Fit(); + initializeData(); +} + +void ExtrudeDialog::onOKButton(wxCommandEvent& event) +{ + double x; + double y; + double z; + double amount; + wxString xString=xTextCtrl->GetValue(); + wxString yString=yTextCtrl->GetValue(); + wxString zString=zTextCtrl->GetValue(); + wxString amountString=amountTextCtrl->GetValue(); + + if(xString.ToDouble(&x) && yString.ToDouble(&y) && zString.ToDouble(&z) && amountString.ToDouble(&amount)) + { + Vector extrude(x,y,z); + extrude.normalize(); + extrude*=amount; + theScene->extrudeFaceGroup(extrude.x,extrude.y,extrude.z); + Close(); + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + event; +} + +void ExtrudeDialog::onCancelButton(wxCommandEvent& event) +{ + Close(); + event; +} \ No newline at end of file diff --git a/ExtrudeDialog.h b/ExtrudeDialog.h new file mode 100755 index 0000000..f990669 --- /dev/null +++ b/ExtrudeDialog.h @@ -0,0 +1,51 @@ +#pragma once +#ifdef WX_GCH +#include +#else +#include +#endif + +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + +/** + * Class ExtrudeDialog + */ +class ExtrudeDialog : public wxDialog +{ + private: + + protected: + wxStaticText* amountStaticText; + wxTextCtrl* amountTextCtrl; + wxStaticText* xStaticText; + wxTextCtrl* xTextCtrl; + wxStaticText* yStaticText; + wxTextCtrl* yTextCtrl; + wxStaticText* zStaticText; + wxTextCtrl* zTextCtrl; + wxButton* OKButton; + wxButton* cancelButton; + + public: + ExtrudeDialog( wxWindow* parent, int id = -1, wxString title = wxT(""), wxPoint pos = wxDefaultPosition, wxSize size = wxDefaultSize, int style = wxDEFAULT_DIALOG_STYLE ); + void initializeData() + { + (*xTextCtrl)<<1.0f; + (*yTextCtrl)<<1.0f; + (*zTextCtrl)<<1.0f; + (*amountTextCtrl)<<10.0f; + }; + void onOKButton(wxCommandEvent& event); + void onCancelButton(wxCommandEvent& event); + DECLARE_EVENT_TABLE() +}; + +enum +{ + onOKButtonPressExtrude=234, + onCancelButtonPressExtrude +}; \ No newline at end of file diff --git a/Face.cpp b/Face.cpp new file mode 100755 index 0000000..9134d4f --- /dev/null +++ b/Face.cpp @@ -0,0 +1,30 @@ +#include "Face.h" + +//³õʼ»¯ÎÞ·¨Ïß +Face::Face(void):ElementBase(),center(0),normal(0) +{ + //¼Ù¶¨ÃæµÄͨ³£±ßÊýĿСÓÚ5 + edge.reserve(5); +} + +//·µ»ØÖ¸¶¨µÄ±ßÁбíÔªËØ +const int& Face::operator [](size_t i) +{ + return edge[i]; +} + +//µÃµ½ÃæµÄÐÅÏ¢,ÓÃÓÚ´æ´¢³ÉÎļþ +struct FaceInfo Face::getFaceInfo() +{ + struct FaceInfo result; + result.index=index; + result.edgeCount=edge.size(); + result.nx=normal.x; + result.ny=normal.y; + result.nz=normal.z; + return result; +} + +Face::~Face(void) +{ +} \ No newline at end of file diff --git a/Face.h b/Face.h new file mode 100755 index 0000000..3ad1fe2 --- /dev/null +++ b/Face.h @@ -0,0 +1,43 @@ +#pragma once +#include +#include "Edge.h" +#include "SubdivideFace.h" + +//ÃæÀàµÄÊôÐÔ£¬ÓÃÓÚ´æ´¢³ÉÎļþ +struct FaceInfo +{ + size_t index; + size_t edgeCount; + float nx; + float ny; + float nz; +}; + +//ÃæÀà +class Face : public ElementBase +{ + //ÔÊÐíObjectÀà¶ÔÆäÖ±½Ó²Ù×÷ + friend class Object; +public: + //¶¨ÒåÁËÃæµÄ±ßÁÐ±í£¬×óÊÖϵ˳ʱÕë˳ÐòÅÅÁС£Èç¹û±ßµÄ³¯ÏòºÍÃæµÄ˳ʱÕë˳ÐòÒ»ÖÂÔòΪÕý£¬·ñÔòΪ¸º + //Ò²¾ÍÊDZßÔÚÆä×ó²àµÄÃæÖÐÊǸº£¬ÔÚÓұߵÄÃæÖÐÊÇÕý + std::vector edge; + //¶¨ÒåÁËÃæµÄ·¨Ïß·½Ïò + Vector normal; + +private: + //ÔÚÏÂÒ»²ãϸ·ÖÖдËÃæµÄÖеã±àºÅ + size_t center; + //Õâ¸öÃæÔÚÏÂÒ»²ãϸ·ÖÖÐÉú³ÉµÄËùÓÐ×ÓÃæ + std::vector subdivideFace; + +public: + Face(void); + //µÃµ½Ö¸¶¨µÄ±ßÁбíÖеÄÔªËØ + const int& operator [](size_t i); + //·µ»ØÕâ¸öÃæµÄËùÓÐÊôÐÔ£¬ÓÃÓÚ´æ´¢³ÉÎļþ + struct FaceInfo getFaceInfo(); + +public: + ~Face(void); +}; \ No newline at end of file diff --git a/FourView.cpp b/FourView.cpp new file mode 100755 index 0000000..ca5221c --- /dev/null +++ b/FourView.cpp @@ -0,0 +1,165 @@ +#include "FourView.h" +#include "Global.h" +#include +#include +#include + +FourView::FourView(size_t splitX,size_t splitY,size_t width,size_t height):SplitedView(splitX,splitY,width,height) +{ + this->viewCount=4; + this->selected=3; + camera[0]=new TopCamera((float)width,(float)height,1.0f,8000.0f,0.0f,0.0f,Vector(0.0f,0.0f,0.0f),Vector(0.0f,0.0f,200.0f),Vector(0.0f,1.0f,0.0f)); + camera[1]=new FrontCamera((float)width,(float)height,1.0f,8000.0f,0.0f,0.0f,Vector(0.0f,0.0f,0.0f),Vector(0.0f,200.0f,0.0f),Vector(0.0f,0.0f,1.0f)); + camera[2]=new LeftCamera((float)width,(float)height,1.0f,8000.0f,0.0f,0.0f,Vector(0.0f,0.0f,0.0f),Vector(200.0f,0.0f,0.0f),Vector(0.0f,0.0f,1.0f)); + camera[3]=new PerspectiveCamera(25.0f,(float)width,(float)height,1.0f,8000.0f,0.0f,0.0f,Vector(0.0f,0.0f,0.0f),Vector(200.0f,200.0f,0.0f),Vector(0.0f,0.0f,1.0f)); +} + +bool FourView::onLeftDown(size_t x,size_t y) +{ +// int tempView; + if(xsplitX&&ysplitY) + { + if(selected==0) + { + return false; + } + else + { + this->selected=0; + return true; + } + } + else + if(x>this->splitX&&ysplitY) + { + if(selected==1) + { + return false; + } + else + { + this->selected=1; + return true; + } + } + else + if(xsplitX&&y>this->splitY) + { + if(selected==2) + { + return false; + } + else + { + this->selected=2; + return true; + } + } + else + if(x>this->splitX&&y>this->splitY) + { + if(selected==3) + { + return false; + } + else + { + this->selected=3; + return true; + } + } + else + { + return false; + } +} + +void FourView::onPaint(void) +{ + glColor3ub(255,255,255); + glBegin(GL_QUADS); + glVertex2i(this->splitX-1,0); + glVertex2i(this->splitX+1,0); + glVertex2i(this->splitX+1,this->height); + glVertex2i(this->splitX-1,this->height); + glVertex2i(0,this->splitY-1); + glVertex2i(this->width,this->splitY-1); + glVertex2i(this->width,this->splitY+1); + glVertex2i(0,this->splitY+1); + glEnd(); + glColor3ub(255,255,0); + if(this->selected==2) + { + glBegin(GL_LINES); + glVertex2i(2,this->splitY+2); + glVertex2i(this->splitX-2,this->splitY+2); + glVertex2i(this->splitX-2,this->splitY+2); + glVertex2i(this->splitX-2,this->height-2); + glVertex2i(this->splitX-2,this->height-2); + glVertex2i(2,this->height-2); + glVertex2i(2,this->height-2); + glVertex2i(2,this->splitY+2); + glEnd(); + } + else + if(this->selected==3) + { + glBegin(GL_LINES); + glVertex2i(this->splitX+2,this->splitY+2); + glVertex2i(this->width-2,this->splitY+2); + glVertex2i(this->width-2,this->splitY+2); + glVertex2i(this->width-2,this->height-2); + glVertex2i(this->width-2,this->height-2); + glVertex2i(this->splitX+2,this->height-2); + glVertex2i(this->splitX+2,this->height-2); + glVertex2i(this->splitX+2,this->splitY+2); + glEnd(); + } + else + if(this->selected==0) + { + glBegin(GL_LINES); + glVertex2i(0,0); + glVertex2i(this->splitX-2,0); + glVertex2i(this->splitX-2,0); + glVertex2i(this->splitX-2,this->splitY-2); + glVertex2i(this->splitX-2,this->splitY-2); + glVertex2i(0,this->splitY-2); + glVertex2i(0,this->splitY-2); + glVertex2i(0,0); + glEnd(); + } + else + if(this->selected==1) + { + glBegin(GL_LINES); + glVertex2i(this->splitX+2,2); + glVertex2i(this->width-2,2); + glVertex2i(this->width-2,2); + glVertex2i(this->width-2,this->splitY-2); + glVertex2i(this->width-2,this->splitY-2); + glVertex2i(this->splitX+2,this->splitY-2); + glVertex2i(this->splitX+2,this->splitY-2); + glVertex2i(this->splitX+2,2); + glEnd(); + } + if(isSelectionMode) + { + glEnable(GL_ALPHA_TEST); + glColor4ub(0,0,255,125); + glBegin(GL_QUADS); + glVertex2i(selectionSX,selectionSY); + glVertex2i(selectionEX,selectionSY); + glVertex2i(selectionEX,selectionEY); + glVertex2i(selectionSX,selectionEY); + glEnd(); + glDisable(GL_ALPHA_TEST); + + } + + glColor3ub(255,255,255); +} + +FourView::~FourView(void) +{ +} \ No newline at end of file diff --git a/FourView.h b/FourView.h new file mode 100755 index 0000000..f2c2f19 --- /dev/null +++ b/FourView.h @@ -0,0 +1,276 @@ +#pragma once +#include "Global.h" +#include "splitedview.h" + +class FourView:public SplitedView +{ +public: + FourView(unsigned int splitX,unsigned int splitY,unsigned int width,unsigned int height); + void onPaint(); + bool onLeftDown(unsigned int x,unsigned int y); + + CameraMode::__Enum setView(size_t index) + { + camera[index]->setCamera(); + return camera[index]->type._value; + }; + + bool onAxisPress(size_t x,size_t y) + { + //if((selected==0 && xsplitX)){ + camera[selected]->setCameraForSelectionS(); + cursorDir.z=0; + bool result=theScene->isAxisSelected(camera[selected]->type._value,camera[selected]->getEye(),height,x,y,cursorDir.x,cursorDir.y,cursorMode); + if(result) + { + axisDragSX=x; + axisDragSY=y; + cursorDir.normalize(); + isAxisMode=true; + } + return result; + /*} + else + { + return false; + }*/ + }; + + bool onAxisDrag(size_t x,size_t y) + { + //if((selected==0 && xsplitX)){ + //ÕâÀïÒª¼ÆËãÏòÁ¿µÄµã³Ë + if(isAxisMode) + {camera[selected]->setCamera(); + //ÕâÀï±ØÐëÇ¿ÖÆת»» + Vector m((float)((int)x-(int)axisDragSX),(float)((int)y-(int)axisDragSY),0.0f); + float work=psVECDOT(cursorDir,m); + theScene->axisDrag(work,cursorMode,cursorDir.x,cursorDir.y); + axisDragSX=x; + axisDragSY=y; + return true; + } + else + return false;//}else return false; + }; + + bool onAxisRelease() + { + if(isAxisMode) + { + isAxisMode=false; + theScene->axisRelease(); + axisDragSX=0; + axisDragSY=0; + return true; + } + else + return false; + } + + bool onCtrlDrag(size_t x,size_t y) + { + if(isCtrlMode) + { + camera[selected]->setCamera(); + Vector horizontalDir(camera[selected]->getHorizontalDir()); + theScene->ctrlDrag(horizontalDir,camera[selected]->up,x-ctrlSX,y-ctrlSY,isExtrude); + isExtrude=false; + ctrlSX=x; + ctrlSY=y; + return true; + } + else + return false; + }; + + bool onCtrlPress(size_t x,size_t y) + { + isCtrlMode=true; + ctrlSX=x; + ctrlSY=y; + return true; + }; + + bool onCtrlRelease() + { + if(isCtrlMode) + { + isCtrlMode=false; + ctrlSX=0; + ctrlSY=0; + return true; + }else + return false; + }; + + + bool onPanPress(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÒ»ÏÂÊó±êÔÚÄĸöÇøÓòÖÐ + if(selected==0 && xonPanPress(x,y); + } + else if(selected==2 && xsplitY) + { + camera[selected]->onPanPress(x,y); + } + else if(selected==1 && x>splitX && yonPanPress(x,y); + } + else if(selected==3 && x>splitX && y>splitY) + { + camera[selected]->onPanPress(x,y); + } + return true; + }; + + bool onPanDrag(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏһϵ±Ç°Ñ¡ÔñµÄpanÇøÓò + this->camera[this->selected]->pan(x,y); + return true; + }; + + + bool onSelectionPress(size_t x,size_t y) + { + isSelectionMode=true; + selectionSX=x; + selectionSY=y; + selectionEX=x; + selectionEY=y; + return true; + }; + + bool onSelectionDrag(size_t x,size_t y) + { + if(isSelectionMode) + { + selectionEX=x; + selectionEY=y; + return true; + }else + return false; + }; + + bool onSingleSideSelectionRelease(bool isAppend) + { + if(isSelectionMode) + { + size_t x1=(selectionSX>selectionEX)?selectionEX:selectionSX; + size_t y1=(selectionSY>selectionEY)?selectionEY:selectionSY; + size_t x2=(selectionSX>selectionEX)?selectionSX:selectionEX; + size_t y2=(selectionSY>selectionEY)?selectionSY:selectionEY; + camera[selected]->setCameraForSelectionS(); + theScene->selectSingleSide(x1,y1,x2,y2,height,isAppend); + isSelectionMode=false; + selectionSX=0; + selectionSY=0; + selectionEX=0; + selectionEY=0; + return true; + } + else + return false; + }; + + bool onDualSideSelectionRelease(bool isAppend) + { + if(isSelectionMode) + { + size_t x1=(selectionSX>selectionEX)?selectionEX:selectionSX; + size_t y1=(selectionSY>selectionEY)?selectionEY:selectionSY; + size_t x2=(selectionSX>selectionEX)?selectionSX:selectionEX; + size_t y2=(selectionSY>selectionEY)?selectionSY:selectionEY; + camera[selected]->setCameraForSelectionD(x1,y1,x2,y2,height); + theScene->selectDualSide(isAppend); + isSelectionMode=false; + selectionSX=0; + selectionSY=0; + selectionEX=0; + selectionEY=0; + return true; + } + else + return false; + }; + + void onWheel(float step,size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÒ»ÏÂÊó±êÔÚÄĸöÇøÓòÖÐ + if(selected==0 && xzoom(step); + } + else if(selected==2 && xsplitY) + { + camera[selected]->zoom(step); + } + else if(selected==1 && x>splitX && yzoom(step); + } + else if(selected==3 && x>splitX && y>splitY) + { + camera[selected]->zoom(step); + } + }; + + bool onRotateDrag(size_t x,size_t y) + { + this->camera[selected]->rotate(x,y); + return true; + }; + + bool onRotatePress(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÊó±êλÖà + if(selected==0 && xonRotatePress(x,y); + } + else if(selected==2 && xsplitY) + { + camera[selected]->onRotatePress(x,y); + } + else if(selected==1 && x>splitX && yonRotatePress(x,y); + } + else if(selected==3 && x>splitX && y>splitY) + { + camera[selected]->onRotatePress(x,y); + } + return true; + }; + + bool onRotateRelease() + { + camera[selected]->onRotateRelease(); + return true; + }; + + bool onPanRelease() + { + camera[selected]->onPanRelease(0,0); + return true; + }; + + void update(size_t theSplitX,size_t theSplitY,size_t theWidth,size_t theHeight) + { + splitX=theSplitX; + splitY=theSplitY; + width=theWidth; + height=theHeight; + camera[2]->updateSize(0.0f,0.0f,(float)splitX,(float)splitY); + camera[0]->updateSize(0.0f,(float)splitY,(float)splitX,(float)(height-splitY)); + camera[3]->updateSize((float)splitX,0.0f,(float)(width-splitX),(float)splitY); + camera[1]->updateSize((float)splitX,(float)splitY,(float)(width-splitX),(float)(height-splitY)); + }; + +public: + ~FourView(void); +}; diff --git a/FrontCamera.cpp b/FrontCamera.cpp new file mode 100755 index 0000000..e6ffc04 --- /dev/null +++ b/FrontCamera.cpp @@ -0,0 +1,33 @@ +#include "FrontCamera.h" + +ViewportImage *frontReference=NULL; + +FrontCamera::FrontCamera(float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up): +Camera(CameraMode::Front,width,height,nearPlane,farPlane,startX,startY,target,eye,up) +{ + light_ambient[0]=0.4f; + light_ambient[1]=0.4f; + light_ambient[2]=0.4f; + light_ambient[3]=1; + + light_diffuse[0]=0.6f; + light_diffuse[1]=0.6f; + light_diffuse[2]=0.6f; + light_diffuse[3]=1; + + light_specular[0]=0.7f; + light_specular[1]=0.7f; + light_specular[2]=0.7f; + light_specular[3]=1; + + light_position[0]=0; + light_position[1]=500; + light_position[2]=0; + light_position[3]=1; + +// referenceImage=frontReference; +} + +FrontCamera::~FrontCamera(void) +{ +} diff --git a/FrontCamera.h b/FrontCamera.h new file mode 100755 index 0000000..416478a --- /dev/null +++ b/FrontCamera.h @@ -0,0 +1,153 @@ +#pragma once +#include "camera.h" + +class FrontCamera : + public Camera +{ +public: + FrontCamera(float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up); + void drawGird() + { + if(showGird) + { + theGird->drawXZ(); + } + }; + + Vector getHorizontalDir() + { + return Vector(1,0,0); + }; + + void setCamera() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,990,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + //gluPerspective(this->angle,this->width/this->height,this->nearPlane,this->farPlane); + glOrtho(-width*(eye.y)*0.005f,width*(eye.y)*0.005f,-height*(eye.y)*0.005f,height*(eye.y)*0.005f,nearPlane,farPlane); + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + drawGird(); + if(frontReference && frontReference->isShow) + { + frontReference->onPaint(); + } + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + }; + + void setReferenceImage(const char *path,GLuint imageID,Vector &position,size_t width,size_t height) + { + if(frontReference) + { + delete frontReference; + } + + frontReference=new ViewportImage(path,imageID,width,height,type._value,position); + frontReference->initialize(); + frontReference->isShow=true; + }; + + void getViewportImage(GLuint &texID,std::string &path,Vector &position,size_t &width,size_t &height) + { + if(frontReference) + { + texID=frontReference->imageID; + path=frontReference->path; + position=frontReference->position; + width=frontReference->width; + height=frontReference->height; + } + else + { + texID=0; + path=""; + position.vec(0); + width=0; + height=0; + } + }; + + void disableReference() + { + frontReference->isShow=false; + } + + void setCameraForSelectionD(size_t x1,size_t y1,size_t x2,size_t y2,size_t h) + { + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + GLint viewport[4]; + glGetIntegerv (GL_VIEWPORT, viewport); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + gluPickMatrix((GLdouble) (x1+x2)/2,(GLdouble) (h - (y1+y2)/2), (GLdouble)sw,(GLdouble)sh, viewport); + glOrtho(-width*(eye.y)*0.005f,width*(eye.y)*0.005f,-height*(eye.y)*0.005f,height*(eye.y)*0.005f,nearPlane,farPlane); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,990,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + }; + + void setCameraForSelectionS() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,990,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + //gluPerspective(this->angle,this->width/this->height,this->nearPlane,this->farPlane); + glOrtho(-width*(eye.y)*0.005f,width*(eye.y)*0.005f,-height*(eye.y)*0.005f,height*(eye.y)*0.005f,nearPlane,farPlane); + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + }; + + void zoom(float step) + { + Vector cameraDirection(0,-1,0); + + //cameraDirection.normalize(); + //this->target+=cameraDirection*step; + eye+=cameraDirection*(float)(step*0.1f); + if(eye.y<2) eye.y=2; + }; + + + void onPanPress(int x,int y) + { + this->isDraging=true; + this->old.x=(float)x; + this->old.y=(float)y; + }; + + void onPanRelease(int x,int y) + { + x; + y; + isDraging=false; + old.null(); + }; + Vector getEye() + { + return eye*10.0f; + } + + void pan(int x,int y) + { + float dx=(float)(x-old.x)*eye.y*0.01f; + float dz=(float)(y-old.y)*eye.y*0.01f; + old.x=(float)x; + old.y=(float)y; + //dx=10; + eye.x+=dx; + eye.z+=dz; + target.x+=dx; + target.z+=dz; + }; +public: + ~FrontCamera(void); +}; diff --git a/Gird.cpp b/Gird.cpp new file mode 100755 index 0000000..546cb2e --- /dev/null +++ b/Gird.cpp @@ -0,0 +1 @@ +#include "Gird.h" \ No newline at end of file diff --git a/Gird.h b/Gird.h new file mode 100755 index 0000000..42a040d --- /dev/null +++ b/Gird.h @@ -0,0 +1,141 @@ +#pragma once +#include +#include +#include + +class Gird +{ +private: + GLuint xy; + GLuint xz; + GLuint yz; +public: + Gird(void) + { + }; + + void initialize() + { + xy=glGenLists(1); + xz=glGenLists(1); + yz=glGenLists(1); + glNewList(xy,GL_COMPILE); + glBegin(GL_LINES); + glColor3ub(172,43,40); + glVertex3f(200,0,0); + glColor3ub(180,180,180); + glVertex3f(-200,0,0); + + glColor3ub(91,103,147); + glVertex3f(0,200,0); + glColor3ub(180,180,180); + glVertex3f(0,-200,0); + for(int x=20;x<=200;x+=20) + { + glVertex3i(x,200,0); + glVertex3i(x,-200,0); + glVertex3i(-x,200,0); + glVertex3i(-x,-200,0); + } + for(int y=20;y<=200;y+=20) + { + glVertex3i(200,y,0); + glVertex3i(-200,y,0); + glVertex3i(200,-y,0); + glVertex3i(-200,-y,0); + } + glEnd(); + glEndList(); + + glNewList(xz,GL_COMPILE); + glBegin(GL_LINES); + glColor3ub(172,43,40); + glVertex3f(200,0,0); + glColor3ub(180,180,180); + glVertex3f(-200,0,0); + glColor3ub(255,255,128); + glVertex3f(0,0,200); + glColor3ub(180,180,180); + glVertex3f(0,0,-200); + for(int x=20;x<=200;x+=20) + { + glVertex3i(x,0,200); + glVertex3i(x,0,-200); + glVertex3i(-x,0,200); + glVertex3i(-x,0,-200); + } + for(int z=20;z<=200;z+=20) + { + glVertex3i(200,0,z); + glVertex3i(-200,0,z); + glVertex3i(200,0,-z); + glVertex3i(-200,0,-z); + } + glEnd(); + glEndList(); + + glNewList(yz,GL_COMPILE); + glBegin(GL_LINES); + glColor3ub(91,103,147); + glVertex3f(0,200,0); + glColor3ub(180,180,180); + glVertex3f(0,-200,0); + glColor3ub(255,255,128); + glVertex3f(0,0,200); + glColor3ub(180,180,180); + glVertex3f(0,0,-200); + for(int y=20;y<=200;y+=20) + { + glVertex3i(0,y,200); + glVertex3i(0,y,-200); + glVertex3i(0,-y,200); + glVertex3i(0,-y,-200); + } + for(int z=20;z<=200;z+=20) + { + glVertex3i(0,200,z); + glVertex3i(0,-200,z); + glVertex3i(0,200,-z); + glVertex3i(0,-200,-z); + } + glEnd(); + glEndList(); + } + + void drawXY() + { + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D,0); + glLineWidth(1); + glCallList(xy); + glEnable(GL_LIGHTING); + } + void drawXZ() + { + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D,0); + glLineWidth(1); + glCallList(xz); + glEnable(GL_LIGHTING); + } + void drawYZ() + { + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D,0); + glLineWidth(1); + glCallList(yz); + glEnable(GL_LIGHTING); + } +public: + ~Gird(void) + { + glDeleteLists(xy,1); + glDeleteLists(xz,1); + glDeleteLists(yz,1); + }; +}; + +extern Gird *theGird; diff --git a/Global.h b/Global.h new file mode 100755 index 0000000..0e5089a --- /dev/null +++ b/Global.h @@ -0,0 +1,7 @@ +#pragma once +//#include "Console.h" +#include "Scene.h" +//#include "PerspectiveCamera.h" +//static Console *theConsole=new Console(5); + +//PerspectiveCamera *perspectiveCamera; \ No newline at end of file diff --git a/HistoryLog.cpp b/HistoryLog.cpp new file mode 100755 index 0000000..34c0a7f --- /dev/null +++ b/HistoryLog.cpp @@ -0,0 +1,10 @@ +#include "HistoryLog.h" + +HistoryLog::HistoryLog(LogType::__Enum theType,size_t theTarget):type(theType),target(theTarget) +{ + //printf("f"); +} + +HistoryLog::~HistoryLog(void) +{ +} diff --git a/HistoryLog.h b/HistoryLog.h new file mode 100755 index 0000000..c5c8c10 --- /dev/null +++ b/HistoryLog.h @@ -0,0 +1,68 @@ +#pragma once +#include "Enum.h" +#include + +DECLARE_ENUM(LogType) + + Nothing=601, + + Vertex_Position_Change,// + Vertex_Normal_Change,// + Vertex_Adjacent_Push,// + Vertex_Adjacent_Change,// + Vertex_Adjacent_Pop,// + Vertex_Adjacent_Swap,// + Vertex_Adjacent_Remove,// + Vertex_Adjacent_Insert,// + + Edge_Start_Change,// + Edge_End_Change,// + Edge_Left_Change,// + Edge_Right_Change,// + + Face_Edge_Push,// + Face_Edge_Change,// + Face_Edge_Pop,// + Face_Edge_Swap,// + Face_Edge_Remove,// + Face_Edge_Insert,// + + Object_Position_Change,// + Object_Rotation_Change,// + Object_Scale_Change,// + Object_Color_Change,// + Object_Vertex_Add,// + Object_Vertex_Remove,// + Object_Edge_Add,// + Object_Edge_Remove,// + Object_Face_Add,// + Object_Face_Remove,// + + Scene_Object_Add, + Scene_Object_Remove, + Scene_Selection_Add, + Scene_Selection_Remove, + +END_ENUM() + +class HistoryLog +{ +public: + const LogType type; + const size_t target; +public: + HistoryLog(LogType::__Enum theType,size_t theTarget); + virtual std::string toString() + { + return "\t\t\t\n"; + }; + + virtual void operator=(const HistoryLog& in) + { + in; + }; + virtual void clear() + {}; +public: + virtual ~HistoryLog(void); +}; \ No newline at end of file diff --git a/HistoryManager.cpp b/HistoryManager.cpp new file mode 100755 index 0000000..1a5e481 --- /dev/null +++ b/HistoryManager.cpp @@ -0,0 +1,2 @@ +#include "HistoryManager.h" + diff --git a/HistoryManager.h b/HistoryManager.h new file mode 100755 index 0000000..0f899dc --- /dev/null +++ b/HistoryManager.h @@ -0,0 +1,204 @@ +#pragma once +#include +#include +#include "HistoryRecord.h" + +class HistoryManager +{ +private: + std::deque undoList; + std::vector redoList; + bool recordLock; + size_t capacity; + HistoryRecord *currentRecord; +public: + HistoryManager(size_t theCapacity=20):capacity(theCapacity),recordLock(false),currentRecord(NULL) + { + redoList.reserve(capacity); + }; + + void recordBegin(std::string theName) + { + if(!redoList.empty()) + { + releaseRedo(); + } + recordLock=true; + currentRecord=new HistoryRecord(theName); + //currentRecord->reserve(1000); + if(undoList.size()push(theLog); + return true; + } + else + { + delete theLog; + return false; + } + //return false; + }; + + HistoryRecord & undoBegin() + { + return *undoList[undoList.size()-1]; + }; + + HistoryRecord & redoBegin() + { + return *redoList[redoList.size()-1]; + }; + + void redoRecordBegin(std::string &theName) + { + recordLock=true; + currentRecord=new HistoryRecord(theName); + redoList.push_back(currentRecord); + }; + + void redoRecordEnd() + { + recordLock=false; + currentRecord=NULL; + }; + + void redoEnd() + { + delete redoList[redoList.size()-1]; + redoList.pop_back(); + }; + + void undoEnd() + { + delete undoList[undoList.size()-1]; + undoList.pop_back(); + }; + + void releaseRedo() + { + size_t redoSize=redoList.size(); + for(size_t i=0;iclear(); + delete redoList[i]; + } + }; + + void releaseUndo() + { + size_t undoSize=undoList.size(); + for(size_t i=0;iclear(); + delete undoList[i]; + } + }; + + void releaseUndo(size_t i) + { + undoList[i]->clear(); + delete undoList[i]; + }; + + size_t undoSize() + { + return undoList.size(); + }; + + size_t redoSize() + { + return redoList.size(); + }; + + void testOut() + { + std::cout<<""<"<toString()<"<"<toString()<"<"<\n"); + size_t undoSize=undoList.size(); + if(undoSize) + { + fprintf(fp,"\t\n"); + for(size_t i=0;itoString().c_str()); + } + fprintf(fp,"\t\n"); + } + size_t redoSize=redoList.size(); + if(redoSize) + { + fprintf(fp,"\t\n"); + for(size_t i=0;itoString().c_str()); + } + fprintf(fp,"\t\n"); + } + fprintf(fp,"\n"); + fclose(fp); + }; + +public: + ~HistoryManager(void) + { + releaseRedo(); + releaseUndo(); + }; +}; + +static HistoryManager *historyManager=new HistoryManager(); \ No newline at end of file diff --git a/HistoryRecord.cpp b/HistoryRecord.cpp new file mode 100755 index 0000000..47d6b1d --- /dev/null +++ b/HistoryRecord.cpp @@ -0,0 +1,2 @@ +#include "HistoryRecord.h" + diff --git a/HistoryRecord.h b/HistoryRecord.h new file mode 100755 index 0000000..64ff36c --- /dev/null +++ b/HistoryRecord.h @@ -0,0 +1,65 @@ +#pragma once +#include +#include +#include "HistoryLog.h" + +class HistoryRecord +{ +private: + std::vector record; +public: + std::string name; +public: + HistoryRecord(std::string theName):name(theName) + { + record.reserve(1000); + }; + void push(HistoryLog *theRecord) + { + record.push_back(theRecord); + }; + HistoryLog & pop() + { + HistoryLog *result=record[record.size()-1]; + return *result; + }; + HistoryLog * operator[](size_t i) + { + return record[i]; + }; + size_t size() + { + return record.size(); + }; + + std::string toString() + { + std::string out; + out+="\t\t\n"; + size_t logSize=record.size(); + for(size_t i=0;itoString(); + //printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"); + } + out+="\t\t\n"; + return out; + }; + void clear() + { + size_t logSize=record.size(); + for(size_t i=0;iclear(); + } + }; +public: + ~HistoryRecord(void) + { + size_t logSize=record.size(); + for(size_t i=0;iAdd( undoListBox, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + historyBoxSizer->Add( undoStaticBoxSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + wxStaticBoxSizer* redoStaticBoxSizer; + redoStaticBoxSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("Redo List:") ), wxVERTICAL ); + + redoListBox = new wxListBox( this, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + redoStaticBoxSizer->Add( redoListBox, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + historyBoxSizer->Add( redoStaticBoxSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainBoxSizer->Add( historyBoxSizer, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + wxBoxSizer* buttonSizer; + buttonSizer = new wxBoxSizer( wxHORIZONTAL ); + + undoButton = new wxButton( this, ID_DEFAULT, wxT("Undo"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( undoButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + redoButton = new wxButton( this, ID_DEFAULT, wxT("Redo"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( redoButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + closeButton = new wxButton( this, ID_DEFAULT, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( closeButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainBoxSizer->Add( buttonSizer, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 ); + + this->SetSizer( mainBoxSizer ); + this->Layout(); +} + +HistoryViewDialog::~HistoryViewDialog(void) +{ + delete undoListBox; + delete redoListBox; + delete undoButton; + delete redoButton; + delete closeButton; +} diff --git a/HistoryViewDialog.h b/HistoryViewDialog.h new file mode 100755 index 0000000..02a3042 --- /dev/null +++ b/HistoryViewDialog.h @@ -0,0 +1,36 @@ +#pragma once + +#ifdef WX_GCH +#include +#else +#include +#endif + +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + +/** + * Class HistoryViewDialog + */ +class HistoryViewDialog : public wxDialog +{ + private: + + protected: + wxListBox* undoListBox; + wxListBox* redoListBox; + wxButton* undoButton; + wxButton* redoButton; + wxButton* closeButton; + + public: + HistoryViewDialog( wxWindow* parent, int id = -1, wxString title = wxT(""), wxPoint pos = wxDefaultPosition, wxSize size = wxDefaultSize, int style = wxDEFAULT_DIALOG_STYLE ); + ~HistoryViewDialog(void); +}; diff --git a/IndexArray.cpp b/IndexArray.cpp new file mode 100755 index 0000000..76a1220 --- /dev/null +++ b/IndexArray.cpp @@ -0,0 +1,3 @@ +#pragma once +#include "IndexArray.h" + diff --git a/IndexArray.h b/IndexArray.h new file mode 100755 index 0000000..45b1273 --- /dev/null +++ b/IndexArray.h @@ -0,0 +1,176 @@ +#pragma once +#include +#include + +//¼Ç¼ԪËØϱêµÄ¿É±ä³¤Áбí +template class IndexArray +{ +private: + //´æ´¢ÁбíÖÐÔªËصÄÁбí + std::vector theArray; + //±£´æÊÍ·Å¿Õ¼äµÄ¶ÓÁÐ + std::deque theSpace; + +public: + //¹¹Ô캯Êý£¬Ê×ÏÈÏòÁбíÖзÅÈë¿ÕÊý¾Ý£¬ÒòΪԪËصÄϱêÈç¹ûÊÇ0±íʾ»¹Ã»ÓÐÌí¼Óµ½Êý×飬ËùÒÔÕâÀïÊý×éµÄ0ºÅλ²»ÄÜÕ¼Óà + IndexArray(void) + { + theArray.push_back(NULL); + }; + + //´ø³õʼ¿Õ¼ä·ÖÅäµÄ¹¹Ô캯Êý + IndexArray(size_t space) + { + theArray.reserve(space+1); + theArray.push_back(NULL); + }; + + //Çå¿ÕÕû¸öÁбí + void clear() + { + //±éÀúÁбíÄÚµÄËùÓÐÔªËØ + for(size_t i=0;iindex=tempIndex; + //·µ»Ø²åÈëµÄλÖà + return tempIndex; + } + else + { + //µÃµ½¶ÓÁÐÊ×µÄÒ»¸ö¿ÕÏÐλÖà + size_t tempIndex=theSpace[0]; + //½«Õâ¸ö¿ÕÏÐλÖÃÏû³ý + theSpace.pop_front(); + //¸´ÖÆÔªËص½¿ÕÏÐλÖà + theArray[tempIndex]=theElement; + //¸üÐÂÔªËصĽűê + theElement->index=tempIndex; + //·µ»ØÔªËصĽűê + return tempIndex; + } + }; + + //ɾ³ýÒ»¸öÔªËØ + //Õâ¸öº¯Êý²¢²»ÊÍ·ÅÔªËصĿռ䣬ÒòΪҪ±£Ö¤Ìí¼Óµ½ÀúÊ·¼Ç¼ÖÐÔªËصÄÕýÈ·ÐÔ + void remove(size_t index) + { + //Èç¹ûindex²»ÊÇ0 + if(index) + { + //Ê×ÏȽ«Õâ¸öλÖÃÖÃ¿Õ + theArray[index]=NULL; + //ÔÚ¿ÕÏжÓÁÐÀïÌí¼ÓÕâ¸öλÖà + theSpace.push_back(index); + } + return; + }; + + //µÃµ½Ö¸¶¨Î»ÖõÄÔªËØ + ElementType* operator [](size_t i) + { + return theArray[i]; + }; + + //µÃµ½Êý×éµÄ´óС£¬Õâ¸ö´óСÊǸö½üËÆÖµ£¬ÀïÃæ°üÀ¨ÁËÔø¾­É¾³ýµÄÔªËØÊýÄ¿ + size_t size() + { + return theArray.size(); + }; + + ~IndexArray(void) + { + size_t length=theArray.size(); + for(size_t i=1;i +#endif //WX_PRECOMP + +#include "InstantMirrorDialog.h" +#include "Scene.h" + +/////////////////////////////////////////////////////////////////////////// +BEGIN_EVENT_TABLE(InstantMirrorDialog, wxDialog) + EVT_BUTTON(onOKButtonPressInstantMirror, InstantMirrorDialog::onOKButton) + EVT_BUTTON(onCancelButtonPressInstantMirror,InstantMirrorDialog::onCancelButton) +END_EVENT_TABLE() + +InstantMirrorDialog::InstantMirrorDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ) +{ + wxBoxSizer* mainSizer; + mainSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* instantMirrorStaticSizer; + instantMirrorStaticSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("Instant Mirror:") ), wxVERTICAL ); + + wxBoxSizer* settingSizer; + settingSizer = new wxBoxSizer( wxVERTICAL ); + + wxGridSizer* mainGirdSizer; + mainGirdSizer = new wxGridSizer( 2, 2, 0, 0 ); + + xStaticText = new wxStaticText( this, ID_DEFAULT, wxT("x:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( xStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + xTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0,wxTextValidator(wxFILTER_NUMERIC,NULL) ); + mainGirdSizer->Add( xTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + yStaticText = new wxStaticText( this, ID_DEFAULT, wxT("y:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( yStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + yTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( yTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + zStaticText = new wxStaticText( this, ID_DEFAULT, wxT("z:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( zStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + zTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( zTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mirrorPlaneStaticText = new wxStaticText( this, ID_DEFAULT, wxT("mirror plane:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( mirrorPlaneStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxString mirrorPlaneChoiceChoices[] = { wxT("xy"), wxT("xz"), wxT("yz") }; + int mirrorPlaneChoiceNChoices = sizeof( mirrorPlaneChoiceChoices ) / sizeof( wxString ); + mirrorPlaneChoice = new wxChoice( this, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, mirrorPlaneChoiceNChoices, mirrorPlaneChoiceChoices, 0 ); + mainGirdSizer->Add( mirrorPlaneChoice, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + settingSizer->Add( mainGirdSizer, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + instantMirrorStaticSizer->Add( settingSizer, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + mainSizer->Add( instantMirrorStaticSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxBoxSizer* buttonSizer; + buttonSizer = new wxBoxSizer( wxHORIZONTAL ); + + okButton = new wxButton( this,onOKButtonPressInstantMirror, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( okButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + cancelButton = new wxButton( this,onCancelButtonPressInstantMirror, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( cancelButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainSizer->Add( buttonSizer, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + this->SetSizer( mainSizer ); + this->Layout(); + Fit(); + initializeData(); +} + + +void InstantMirrorDialog::onOKButton(wxCommandEvent& event) +{ + double x; + double y; + double z; + + wxString xString=xTextCtrl->GetValue(); + wxString yString=yTextCtrl->GetValue(); + wxString zString=zTextCtrl->GetValue(); + + if(xString.ToDouble(&x) && yString.ToDouble(&y) && zString.ToDouble(&z)) + { + if(mirrorPlaneChoice->GetSelection()==0) + { + theScene->onMirror(MirrorMode::MirrorXY,x,y,z); + Close(); + }else + if(mirrorPlaneChoice->GetSelection()==1) + { + theScene->onMirror(MirrorMode::MirrorXZ,x,y,z); + Close(); + }else + if(mirrorPlaneChoice->GetSelection()==2) + { + theScene->onMirror(MirrorMode::MirrorYZ,x,y,z); + Close(); + }else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + event; +} + +void InstantMirrorDialog::onCancelButton(wxCommandEvent& event) +{ + Close(); + event; +} \ No newline at end of file diff --git a/InstantMirrorDialog.h b/InstantMirrorDialog.h new file mode 100755 index 0000000..b8afec3 --- /dev/null +++ b/InstantMirrorDialog.h @@ -0,0 +1,56 @@ +#pragma once + +#ifdef WX_GCH +#include +#else +#include +#endif + +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + +/** + * Class InstantMirrorDialog + */ +class InstantMirrorDialog : public wxDialog +{ + private: + + protected: + wxStaticText* xStaticText; + wxTextCtrl* xTextCtrl; + wxStaticText* yStaticText; + wxTextCtrl* yTextCtrl; + wxStaticText* zStaticText; + wxTextCtrl* zTextCtrl; + wxStaticText* mirrorPlaneStaticText; + wxChoice* mirrorPlaneChoice; + wxButton* okButton; + wxButton* cancelButton; + + public: + void initializeData() + { + (*xTextCtrl)<<0.0f; + (*yTextCtrl)<<0.0f; + (*zTextCtrl)<<0.0f; + mirrorPlaneChoice->SetSelection(2); + } + InstantMirrorDialog( wxWindow* parent, int id = -1, wxString title = wxT(""), wxPoint pos = wxDefaultPosition, wxSize size = wxDefaultSize, int style = wxDEFAULT_DIALOG_STYLE ); + void onOKButton(wxCommandEvent& event); + void onCancelButton(wxCommandEvent& event); + DECLARE_EVENT_TABLE() +}; + +enum +{ + onOKButtonPressInstantMirror=234, + onCancelButtonPressInstantMirror +}; \ No newline at end of file diff --git a/LeftCamera.cpp b/LeftCamera.cpp new file mode 100755 index 0000000..43670ab --- /dev/null +++ b/LeftCamera.cpp @@ -0,0 +1,32 @@ +#include "LeftCamera.h" + +ViewportImage *leftReference=NULL; + +LeftCamera::LeftCamera(float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up): +Camera(CameraMode::Left,width,height,nearPlane,farPlane,startX,startY,target,eye,up) +{ + light_ambient[0]=0.4f; + light_ambient[1]=0.4f; + light_ambient[2]=0.4f; + light_ambient[3]=1; + + light_diffuse[0]=0.6f; + light_diffuse[1]=0.6f; + light_diffuse[2]=0.6f; + light_diffuse[3]=1; + + light_specular[0]=0.7f; + light_specular[1]=0.7f; + light_specular[2]=0.7f; + light_specular[3]=1; + + light_position[0]=-500; + light_position[1]=0; + light_position[2]=0; + light_position[3]=1; +} + + +LeftCamera::~LeftCamera(void) +{ +} diff --git a/LeftCamera.h b/LeftCamera.h new file mode 100755 index 0000000..ee94b00 --- /dev/null +++ b/LeftCamera.h @@ -0,0 +1,150 @@ +#pragma once +#include "camera.h" + +class LeftCamera : + public Camera +{ +public: + LeftCamera(float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up); + void setCamera() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(-990,eye.y,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + //gluPerspective(this->angle,this->width/this->height,this->nearPlane,this->farPlane); + glOrtho(-width*(eye.x)*0.005f,width*(eye.x)*0.005f,-height*(eye.x)*0.005f,height*(eye.x)*0.005f,nearPlane,farPlane); + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + drawGird(); + if(leftReference && leftReference->isShow) + { + leftReference->onPaint(); + } + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + }; + + void setReferenceImage(const char *path,GLuint imageID,Vector &position,size_t width,size_t height) + { + if(leftReference) + { + delete leftReference; + } + + leftReference=new ViewportImage(path,imageID,width,height,type._value,position); + leftReference->initialize(); + leftReference->isShow=true; + }; + + void getViewportImage(GLuint &texID,std::string &path,Vector &position,size_t &width,size_t &height) + { + if(leftReference) + { + texID=leftReference->imageID; + path=leftReference->path; + position=leftReference->position; + width=leftReference->width; + height=leftReference->height; + } + else + { + texID=0; + path=""; + position.vec(0); + width=0; + height=0; + } + }; + + void disableReference() + { + leftReference->isShow=false; + } + + void drawGird() + { + if(showGird) + { + theGird->drawYZ(); + } + }; + + void zoom(float step) + { + Vector cameraDirection(-1,0,0); + + //cameraDirection.normalize(); + //this->target+=cameraDirection*step; + eye+=cameraDirection*(float)(step*0.1f); + if(eye.x<2) eye.x=2; + }; + + void setCameraForSelectionS() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(-990,eye.y,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + //gluPerspective(this->angle,this->width/this->height,this->nearPlane,this->farPlane); + glOrtho(-width*(eye.x)*0.005f,width*(eye.x)*0.005f,-height*(eye.x)*0.005f,height*(eye.x)*0.005f,nearPlane,farPlane); + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + }; + + void setCameraForSelectionD(size_t x1,size_t y1,size_t x2,size_t y2,size_t h) + { + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + GLint viewport[4]; + glGetIntegerv (GL_VIEWPORT, viewport); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + gluPickMatrix((GLdouble) (x1+x2)/2,(GLdouble) (h - (y1+y2)/2), (GLdouble)sw,(GLdouble)sh, viewport); + glOrtho(-width*(eye.x)*0.005f,width*(eye.x)*0.005f,-height*(eye.x)*0.005f,height*(eye.x)*0.005f,nearPlane,farPlane+100); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(-990,eye.y,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + }; + Vector getEye() + { + return eye*10.0f; + } + Vector getHorizontalDir() + { + return Vector(0,1,0); + }; + + void onPanPress(int x,int y) + { + this->isDraging=true; + this->old.x=(float)x; + this->old.y=(float)y; + }; + + void onPanRelease(int x,int y) + { + x; + y; + isDraging=false; + old.null(); + }; + + void pan(int x,int y) + { + float dy=(float)(x-old.x)*eye.x*0.01f; + float dz=(float)(y-old.y)*eye.x*0.01f; + old.x=(float)x; + old.y=(float)y; + eye.y+=dy; + eye.z+=dz; + target.y+=dy; + target.z+=dz; + }; +public: + ~LeftCamera(void); +}; diff --git a/Log_EdgeEndChange.cpp b/Log_EdgeEndChange.cpp new file mode 100755 index 0000000..7e5a0db --- /dev/null +++ b/Log_EdgeEndChange.cpp @@ -0,0 +1,9 @@ +#include "Log_EdgeEndChange.h" + +Log_EdgeEndChange::Log_EdgeEndChange(size_t theTarget,size_t theIndex,int theEnd):HistoryLog(LogType::Edge_End_Change,theTarget),index(theIndex),end(theEnd) +{ +} + +Log_EdgeEndChange::~Log_EdgeEndChange(void) +{ +} diff --git a/Log_EdgeEndChange.h b/Log_EdgeEndChange.h new file mode 100755 index 0000000..11371a0 --- /dev/null +++ b/Log_EdgeEndChange.h @@ -0,0 +1,30 @@ +#pragma once +#include "historylog.h" + +class Log_EdgeEndChange : + public HistoryLog +{ +public: + const size_t index; + +public: + const int end; + +public: + Log_EdgeEndChange(size_t theTarget,size_t theIndex,int theEnd); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,end); + std::string out(temp); + return out; + }; + + void operator=(const Log_EdgeEndChange& in) + { + in; + }; + +public: + ~Log_EdgeEndChange(void); +}; diff --git a/Log_EdgeLeftChange.cpp b/Log_EdgeLeftChange.cpp new file mode 100755 index 0000000..0bbf3d1 --- /dev/null +++ b/Log_EdgeLeftChange.cpp @@ -0,0 +1,9 @@ +#include "Log_EdgeLeftChange.h" + +Log_EdgeLeftChange::Log_EdgeLeftChange(size_t theTarget,size_t theIndex,size_t theLeft):HistoryLog(LogType::Edge_Left_Change,theTarget),index(theIndex),left(theLeft) +{ +} + +Log_EdgeLeftChange::~Log_EdgeLeftChange(void) +{ +} diff --git a/Log_EdgeLeftChange.h b/Log_EdgeLeftChange.h new file mode 100755 index 0000000..a12ccbb --- /dev/null +++ b/Log_EdgeLeftChange.h @@ -0,0 +1,30 @@ +#pragma once +#include "historylog.h" + +class Log_EdgeLeftChange : + public HistoryLog +{ +public: + const size_t index; + +public: + const size_t left; + +public: + Log_EdgeLeftChange(size_t theTarget,size_t theIndex,size_t theLeft); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,left); + std::string out(temp); + return out; + }; + + void operator=(const Log_EdgeLeftChange& in) + { + in; + }; + +public: + ~Log_EdgeLeftChange(void); +}; diff --git a/Log_EdgeRightChange.cpp b/Log_EdgeRightChange.cpp new file mode 100755 index 0000000..86d868a --- /dev/null +++ b/Log_EdgeRightChange.cpp @@ -0,0 +1,9 @@ +#include "Log_EdgeRightChange.h" + +Log_EdgeRightChange::Log_EdgeRightChange(size_t theTarget,size_t theIndex,size_t theRight):HistoryLog(LogType::Edge_Right_Change,theTarget),index(theIndex),right(theRight) +{ +} + +Log_EdgeRightChange::~Log_EdgeRightChange(void) +{ +} diff --git a/Log_EdgeRightChange.h b/Log_EdgeRightChange.h new file mode 100755 index 0000000..83a0beb --- /dev/null +++ b/Log_EdgeRightChange.h @@ -0,0 +1,28 @@ +#pragma once +#include "historylog.h" + +class Log_EdgeRightChange : + public HistoryLog +{ +public: + const size_t index; +public: + const size_t right; +public: + Log_EdgeRightChange(size_t theTarget,size_t theIndex,size_t theRight); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,right); + std::string out(temp); + return out; + }; + + void operator=(const Log_EdgeRightChange& in) + { + in; + }; + +public: + ~Log_EdgeRightChange(void); +}; \ No newline at end of file diff --git a/Log_EdgeStartChange.cpp b/Log_EdgeStartChange.cpp new file mode 100755 index 0000000..199e9ac --- /dev/null +++ b/Log_EdgeStartChange.cpp @@ -0,0 +1,9 @@ +#include "Log_EdgeStartChange.h" + +Log_EdgeStartChange::Log_EdgeStartChange(size_t theTarget,size_t theIndex,int theStart):HistoryLog(LogType::Edge_Start_Change,theTarget),index(theIndex),start(theStart) +{ +} + +Log_EdgeStartChange::~Log_EdgeStartChange(void) +{ +} diff --git a/Log_EdgeStartChange.h b/Log_EdgeStartChange.h new file mode 100755 index 0000000..d92ee9a --- /dev/null +++ b/Log_EdgeStartChange.h @@ -0,0 +1,29 @@ +#pragma once +#include "historylog.h" + +class Log_EdgeStartChange : + public HistoryLog +{ +public: + const size_t index; + +public: + const int start; + +public: + Log_EdgeStartChange(size_t theTarget,size_t theIndex,int theStart); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,start); + std::string out(temp); + return out; + }; + void operator=(const Log_EdgeStartChange& in) + { + in; + }; + +public: + ~Log_EdgeStartChange(void); +}; diff --git a/Log_FaceEdgeChange.cpp b/Log_FaceEdgeChange.cpp new file mode 100755 index 0000000..7b08ac2 --- /dev/null +++ b/Log_FaceEdgeChange.cpp @@ -0,0 +1,9 @@ +#include "Log_FaceEdgeChange.h" + +Log_FaceEdgeChange::Log_FaceEdgeChange(size_t theTarget,size_t theIndex,size_t theEdgeIndex,int theO):HistoryLog(LogType::Face_Edge_Change,theTarget),index(theIndex),edgeIndex(theEdgeIndex),o(theO) +{ +} + +Log_FaceEdgeChange::~Log_FaceEdgeChange(void) +{ +} diff --git a/Log_FaceEdgeChange.h b/Log_FaceEdgeChange.h new file mode 100755 index 0000000..ad34d52 --- /dev/null +++ b/Log_FaceEdgeChange.h @@ -0,0 +1,28 @@ +#pragma once +#include "historylog.h" + +class Log_FaceEdgeChange : + public HistoryLog +{ +public: + const size_t index; + const size_t edgeIndex; +public: + const int o; +public: + Log_FaceEdgeChange(size_t theTarget,size_t theIndex,size_t theEdgeIndex,int theO); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,edgeIndex,o); + std::string out(temp); + return out; + }; + + void operator=(const Log_FaceEdgeChange& in) + { + in; + }; +public: + ~Log_FaceEdgeChange(void); +}; diff --git a/Log_FaceEdgeInsert.cpp b/Log_FaceEdgeInsert.cpp new file mode 100755 index 0000000..6c83a2d --- /dev/null +++ b/Log_FaceEdgeInsert.cpp @@ -0,0 +1,9 @@ +#include "Log_FaceEdgeInsert.h" + +Log_FaceEdgeInsert::Log_FaceEdgeInsert(size_t theTarget,size_t theIndex,size_t theEdgeIndex):HistoryLog(LogType::Face_Edge_Insert,theTarget),index(theIndex),edgeIndex(theEdgeIndex) +{ +} + +Log_FaceEdgeInsert::~Log_FaceEdgeInsert(void) +{ +} diff --git a/Log_FaceEdgeInsert.h b/Log_FaceEdgeInsert.h new file mode 100755 index 0000000..549c237 --- /dev/null +++ b/Log_FaceEdgeInsert.h @@ -0,0 +1,25 @@ +#pragma once +#include "historylog.h" + +class Log_FaceEdgeInsert : + public HistoryLog +{ +public: + const size_t index; + const size_t edgeIndex; +public: + Log_FaceEdgeInsert(size_t theTarget,size_t theIndex,size_t theEdgeIndex); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,edgeIndex); + std::string out(temp); + return out; + }; + void operator=(const Log_FaceEdgeInsert& in) + { + in; + }; +public: + ~Log_FaceEdgeInsert(void); +}; diff --git a/Log_FaceEdgePop.cpp b/Log_FaceEdgePop.cpp new file mode 100755 index 0000000..e9755bf --- /dev/null +++ b/Log_FaceEdgePop.cpp @@ -0,0 +1,9 @@ +#include "Log_FaceEdgePop.h" + +Log_FaceEdgePop::Log_FaceEdgePop(size_t theTarget,size_t theIndex,int theO):HistoryLog(LogType::Face_Edge_Pop,theTarget),index(theIndex),o(theO) +{ +} + +Log_FaceEdgePop::~Log_FaceEdgePop(void) +{ +} diff --git a/Log_FaceEdgePop.h b/Log_FaceEdgePop.h new file mode 100755 index 0000000..9627f15 --- /dev/null +++ b/Log_FaceEdgePop.h @@ -0,0 +1,26 @@ +#pragma once +#include "historylog.h" + +class Log_FaceEdgePop : + public HistoryLog +{ +public: + const size_t index; +public: + const int o; +public: + Log_FaceEdgePop(size_t theTarget,size_t theIndex,int theO); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,o); + std::string out(temp); + return out; + }; + void operator=(const Log_FaceEdgePop& in) + { + in; + }; +public: + ~Log_FaceEdgePop(void); +}; diff --git a/Log_FaceEdgePush.cpp b/Log_FaceEdgePush.cpp new file mode 100755 index 0000000..c774629 --- /dev/null +++ b/Log_FaceEdgePush.cpp @@ -0,0 +1,9 @@ +#include "Log_FaceEdgePush.h" + +Log_FaceEdgePush::Log_FaceEdgePush(size_t theTarget,size_t theIndex):HistoryLog(LogType::Face_Edge_Push,theTarget),index(theIndex) +{ +} + +Log_FaceEdgePush::~Log_FaceEdgePush(void) +{ +} diff --git a/Log_FaceEdgePush.h b/Log_FaceEdgePush.h new file mode 100755 index 0000000..a141107 --- /dev/null +++ b/Log_FaceEdgePush.h @@ -0,0 +1,25 @@ +#pragma once +#include "historylog.h" + +class Log_FaceEdgePush : + public HistoryLog +{ +public: + const size_t index; +public: + Log_FaceEdgePush(size_t theTarget,size_t theIndex); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index); + std::string out(temp); + return out; + }; + void operator=(const Log_FaceEdgePush& in) + { + in; + }; + +public: + ~Log_FaceEdgePush(void); +}; diff --git a/Log_FaceEdgeRemove.cpp b/Log_FaceEdgeRemove.cpp new file mode 100755 index 0000000..e046b9e --- /dev/null +++ b/Log_FaceEdgeRemove.cpp @@ -0,0 +1,9 @@ +#include "Log_FaceEdgeRemove.h" + +Log_FaceEdgeRemove::Log_FaceEdgeRemove(size_t theTarget,size_t theIndex,size_t theEdgeIndex,int theO):HistoryLog(LogType::Face_Edge_Remove,theTarget),index(theIndex),edgeIndex(theEdgeIndex),o(theO) +{ +} + +Log_FaceEdgeRemove::~Log_FaceEdgeRemove(void) +{ +} diff --git a/Log_FaceEdgeRemove.h b/Log_FaceEdgeRemove.h new file mode 100755 index 0000000..39f6e05 --- /dev/null +++ b/Log_FaceEdgeRemove.h @@ -0,0 +1,28 @@ +#pragma once +#include "historylog.h" + +class Log_FaceEdgeRemove : + public HistoryLog +{ +public: + const size_t index; +public: + const size_t edgeIndex; + const int o; +public: + Log_FaceEdgeRemove(size_t theTarget,size_t theIndex,size_t theEdgeIndex,int theO); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,edgeIndex,o); + std::string out(temp); + return out; + }; + + void operator=(const Log_FaceEdgeRemove& in) + { + in; + }; +public: + ~Log_FaceEdgeRemove(void); +}; diff --git a/Log_FaceEdgeSwap.cpp b/Log_FaceEdgeSwap.cpp new file mode 100755 index 0000000..7a692c0 --- /dev/null +++ b/Log_FaceEdgeSwap.cpp @@ -0,0 +1,9 @@ +#include "Log_FaceEdgeSwap.h" + +Log_FaceEdgeSwap::Log_FaceEdgeSwap(size_t theTarget,size_t theIndex,size_t theOIndex,size_t theTIndex):HistoryLog(LogType::Face_Edge_Swap,theTarget),index(theIndex),oIndex(theOIndex),tIndex(theTIndex) +{ +} + +Log_FaceEdgeSwap::~Log_FaceEdgeSwap(void) +{ +} diff --git a/Log_FaceEdgeSwap.h b/Log_FaceEdgeSwap.h new file mode 100755 index 0000000..5d6247b --- /dev/null +++ b/Log_FaceEdgeSwap.h @@ -0,0 +1,28 @@ +#pragma once +#include "historylog.h" + +class Log_FaceEdgeSwap : + public HistoryLog +{ +public: + const size_t index; +public: + const size_t oIndex; + const size_t tIndex; +public: + Log_FaceEdgeSwap(size_t theTarget,size_t theIndex,size_t theOIndex,size_t theTIndex); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,oIndex,tIndex); + std::string out(temp); + return out; + }; + + void operator=(const Log_FaceEdgeSwap& in) + { + in; + }; +public: + ~Log_FaceEdgeSwap(void); +}; diff --git a/Log_ObjectColorChange.cpp b/Log_ObjectColorChange.cpp new file mode 100755 index 0000000..94cfa84 --- /dev/null +++ b/Log_ObjectColorChange.cpp @@ -0,0 +1,9 @@ +#include "Log_ObjectColorChange.h" + +Log_ObjectColorChange::Log_ObjectColorChange(size_t theTarget,unsigned int theR,unsigned int theG,unsigned int theB,unsigned int theA):HistoryLog(LogType::Object_Color_Change,theTarget),a(theA),r(theR),g(theG),b(theB) +{ +} + +Log_ObjectColorChange::~Log_ObjectColorChange(void) +{ +} diff --git a/Log_ObjectColorChange.h b/Log_ObjectColorChange.h new file mode 100755 index 0000000..a58bb1e --- /dev/null +++ b/Log_ObjectColorChange.h @@ -0,0 +1,28 @@ +#pragma once +#include "historylog.h" + +class Log_ObjectColorChange : + public HistoryLog +{ +public: + const unsigned int r; + const unsigned int g; + const unsigned int b; + const unsigned int a; +public: + Log_ObjectColorChange(size_t theTarget,unsigned int theR,unsigned int theG,unsigned int theB,unsigned int theA); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,r,g,b,a); + std::string out(temp); + return out; + }; + + void operator=(const Log_ObjectColorChange& in) + { + in; + }; +public: + ~Log_ObjectColorChange(void); +}; diff --git a/Log_ObjectEdgeAdd.cpp b/Log_ObjectEdgeAdd.cpp new file mode 100755 index 0000000..9937449 --- /dev/null +++ b/Log_ObjectEdgeAdd.cpp @@ -0,0 +1,9 @@ +#include "Log_ObjectEdgeAdd.h" + +Log_ObjectEdgeAdd::Log_ObjectEdgeAdd(size_t theTarget,size_t theIndex):HistoryLog(LogType::Object_Edge_Add,theTarget),index(theIndex) +{ +} + +Log_ObjectEdgeAdd::~Log_ObjectEdgeAdd(void) +{ +} diff --git a/Log_ObjectEdgeAdd.h b/Log_ObjectEdgeAdd.h new file mode 100755 index 0000000..c3bda80 --- /dev/null +++ b/Log_ObjectEdgeAdd.h @@ -0,0 +1,25 @@ +#pragma once +#include "historylog.h" + +class Log_ObjectEdgeAdd : + public HistoryLog +{ +public: + const size_t index; +public: + Log_ObjectEdgeAdd(size_t theTarget,size_t theIndex); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index); + std::string out(temp); + return out; + }; + + void operator=(const Log_ObjectEdgeAdd& in) + { + in; + }; +public: + ~Log_ObjectEdgeAdd(void); +}; diff --git a/Log_ObjectEdgeRemove.cpp b/Log_ObjectEdgeRemove.cpp new file mode 100755 index 0000000..e351829 --- /dev/null +++ b/Log_ObjectEdgeRemove.cpp @@ -0,0 +1,10 @@ +#include "Log_ObjectEdgeRemove.h" + +Log_ObjectEdgeRemove::Log_ObjectEdgeRemove(size_t theTarget,size_t theIndex,Edge *theO):HistoryLog(LogType::Object_Edge_Remove,theTarget),index(theIndex),o(theO) +{ +} + +Log_ObjectEdgeRemove::~Log_ObjectEdgeRemove(void) +{ + //delete o; +} diff --git a/Log_ObjectEdgeRemove.h b/Log_ObjectEdgeRemove.h new file mode 100755 index 0000000..fb901db --- /dev/null +++ b/Log_ObjectEdgeRemove.h @@ -0,0 +1,29 @@ +#pragma once +#include "historylog.h" +#include "Edge.h" + +class Log_ObjectEdgeRemove : + public HistoryLog +{ +public: + const size_t index; +public: + Edge *o; + +public: + Log_ObjectEdgeRemove(size_t theTarget,size_t theIndex,Edge *theO); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index); + std::string out(temp); + return out; + }; + + void operator=(const Log_ObjectEdgeRemove& in) + { + in; + }; +public: + ~Log_ObjectEdgeRemove(void); +}; diff --git a/Log_ObjectFaceAdd.cpp b/Log_ObjectFaceAdd.cpp new file mode 100755 index 0000000..bec1e25 --- /dev/null +++ b/Log_ObjectFaceAdd.cpp @@ -0,0 +1,9 @@ +#include "Log_ObjectFaceAdd.h" + +Log_ObjectFaceAdd::Log_ObjectFaceAdd(size_t theTarget,size_t theIndex):HistoryLog(LogType::Object_Face_Add,theTarget),index(theIndex) +{ +} + +Log_ObjectFaceAdd::~Log_ObjectFaceAdd(void) +{ +} diff --git a/Log_ObjectFaceAdd.h b/Log_ObjectFaceAdd.h new file mode 100755 index 0000000..e183c1a --- /dev/null +++ b/Log_ObjectFaceAdd.h @@ -0,0 +1,26 @@ +#pragma once +#include "historylog.h" + +class Log_ObjectFaceAdd : + public HistoryLog +{ +public: + const size_t index; +public: + Log_ObjectFaceAdd(size_t theTarget,size_t theIndex); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index); + std::string out(temp); + return out; + }; + + void operator=(const Log_ObjectFaceAdd& in) + { + in; + }; + +public: + ~Log_ObjectFaceAdd(void); +}; diff --git a/Log_ObjectFaceRemove.cpp b/Log_ObjectFaceRemove.cpp new file mode 100755 index 0000000..e9489e1 --- /dev/null +++ b/Log_ObjectFaceRemove.cpp @@ -0,0 +1,9 @@ +#include "Log_ObjectFaceRemove.h" + +Log_ObjectFaceRemove::Log_ObjectFaceRemove(size_t theTarget,size_t theIndex,Face *theO):HistoryLog(LogType::Object_Face_Remove,theTarget),index(theIndex),o(theO) +{ +} + +Log_ObjectFaceRemove::~Log_ObjectFaceRemove(void) +{ +} diff --git a/Log_ObjectFaceRemove.h b/Log_ObjectFaceRemove.h new file mode 100755 index 0000000..24ea9cf --- /dev/null +++ b/Log_ObjectFaceRemove.h @@ -0,0 +1,32 @@ +#pragma once +#include "historylog.h" +#include "Face.h" + +class Log_ObjectFaceRemove : + public HistoryLog +{ +public: + const size_t index; +public: + Face *o; +public: + Log_ObjectFaceRemove(size_t theTarget,size_t theIndex,Face *theO); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index); + std::string out(temp); + return out; + }; + void clear() + { + delete o; + }; + + void operator=(const Log_ObjectFaceRemove& in) + { + in; + }; +public: + ~Log_ObjectFaceRemove(void); +}; diff --git a/Log_ObjectPositionChange.cpp b/Log_ObjectPositionChange.cpp new file mode 100755 index 0000000..c179d24 --- /dev/null +++ b/Log_ObjectPositionChange.cpp @@ -0,0 +1,9 @@ +#include "Log_ObjectPositionChange.h" + +Log_ObjectPositionChange::Log_ObjectPositionChange(size_t theTarget,float theX,float theY,float theZ):HistoryLog(LogType::Object_Position_Change,theTarget),x(theX),y(theY),z(theZ) +{ +} + +Log_ObjectPositionChange::~Log_ObjectPositionChange(void) +{ +} diff --git a/Log_ObjectPositionChange.h b/Log_ObjectPositionChange.h new file mode 100755 index 0000000..bf73e2a --- /dev/null +++ b/Log_ObjectPositionChange.h @@ -0,0 +1,27 @@ +#pragma once +#include "historylog.h" + +class Log_ObjectPositionChange : + public HistoryLog +{ +public: + const float x; + const float y; + const float z; +public: + Log_ObjectPositionChange(size_t theTarget,float theX,float theY,float theZ); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,x,y,z); + std::string out(temp); + return out; + }; + + void operator=(const Log_ObjectPositionChange& in) + { + in; + }; +public: + ~Log_ObjectPositionChange(void); +}; diff --git a/Log_ObjectRotationChange.cpp b/Log_ObjectRotationChange.cpp new file mode 100755 index 0000000..3cddaca --- /dev/null +++ b/Log_ObjectRotationChange.cpp @@ -0,0 +1,9 @@ +#include "Log_ObjectRotationChange.h" + +Log_ObjectRotationChange::Log_ObjectRotationChange(size_t theTarget,float theX,float theY,float theZ):HistoryLog(LogType::Object_Rotation_Change,theTarget),x(theX),y(theY),z(theZ) +{ +} + +Log_ObjectRotationChange::~Log_ObjectRotationChange(void) +{ +} diff --git a/Log_ObjectRotationChange.h b/Log_ObjectRotationChange.h new file mode 100755 index 0000000..c3d4a8e --- /dev/null +++ b/Log_ObjectRotationChange.h @@ -0,0 +1,27 @@ +#pragma once +#include "historylog.h" + +class Log_ObjectRotationChange : + public HistoryLog +{ +public: + const float x; + const float y; + const float z; +public: + Log_ObjectRotationChange(size_t theTarget,float theX,float theY,float theZ); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,x,y,z); + std::string out(temp); + return out; + }; + + void operator=(const Log_ObjectRotationChange& in) + { + in; + }; +public: + ~Log_ObjectRotationChange(void); +}; diff --git a/Log_ObjectScaleChange.cpp b/Log_ObjectScaleChange.cpp new file mode 100755 index 0000000..fc9f120 --- /dev/null +++ b/Log_ObjectScaleChange.cpp @@ -0,0 +1,9 @@ +#include "Log_ObjectScaleChange.h" + +Log_ObjectScaleChange::Log_ObjectScaleChange(size_t theTarget,float theX,float theY,float theZ):HistoryLog(LogType::Object_Scale_Change,theTarget),x(theX),y(theY),z(theZ) +{ +} + +Log_ObjectScaleChange::~Log_ObjectScaleChange(void) +{ +} diff --git a/Log_ObjectScaleChange.h b/Log_ObjectScaleChange.h new file mode 100755 index 0000000..f3573a8 --- /dev/null +++ b/Log_ObjectScaleChange.h @@ -0,0 +1,27 @@ +#pragma once +#include "historylog.h" + +class Log_ObjectScaleChange : + public HistoryLog +{ +public: + const float x; + const float y; + const float z; +public: + Log_ObjectScaleChange(size_t theTarget,float theX,float theY,float theZ); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,x,y,z); + std::string out(temp); + return out; + }; + + void operator=(const Log_ObjectScaleChange& in) + { + in; + }; +public: + ~Log_ObjectScaleChange(void); +}; diff --git a/Log_ObjectVertexAdd.cpp b/Log_ObjectVertexAdd.cpp new file mode 100755 index 0000000..5ed5f8c --- /dev/null +++ b/Log_ObjectVertexAdd.cpp @@ -0,0 +1,9 @@ +#include "Log_ObjectVertexAdd.h" + +Log_ObjectVertexAdd::Log_ObjectVertexAdd(size_t theTarget,size_t theIndex):HistoryLog(LogType::Object_Vertex_Add,theTarget),index(theIndex) +{ +} + +Log_ObjectVertexAdd::~Log_ObjectVertexAdd(void) +{ +} diff --git a/Log_ObjectVertexAdd.h b/Log_ObjectVertexAdd.h new file mode 100755 index 0000000..5b88df7 --- /dev/null +++ b/Log_ObjectVertexAdd.h @@ -0,0 +1,25 @@ +#pragma once +#include "historylog.h" + +class Log_ObjectVertexAdd : + public HistoryLog +{ +public: + const size_t index; +public: + Log_ObjectVertexAdd(size_t theTarget,size_t theIndex); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index); + std::string out(temp); + return out; + }; + + void operator=(const Log_ObjectVertexAdd& in) + { + in; + }; +public: + ~Log_ObjectVertexAdd(void); +}; diff --git a/Log_ObjectVertexRemove.cpp b/Log_ObjectVertexRemove.cpp new file mode 100755 index 0000000..9764872 --- /dev/null +++ b/Log_ObjectVertexRemove.cpp @@ -0,0 +1,10 @@ +#include "Log_ObjectVertexRemove.h" + +Log_ObjectVertexRemove::Log_ObjectVertexRemove(size_t theTarget,size_t theIndex,Vertex *theO):HistoryLog(LogType::Object_Vertex_Remove,theTarget),index(theIndex),o(theO) +{ +} + +Log_ObjectVertexRemove::~Log_ObjectVertexRemove(void) +{ + //delete o; +} diff --git a/Log_ObjectVertexRemove.h b/Log_ObjectVertexRemove.h new file mode 100755 index 0000000..58ca124 --- /dev/null +++ b/Log_ObjectVertexRemove.h @@ -0,0 +1,32 @@ +#pragma once +#include "historylog.h" +#include "Vertex.h" + +class Log_ObjectVertexRemove : + public HistoryLog +{ +public: + const size_t index; +public: + Vertex *o; +public: + Log_ObjectVertexRemove(size_t theTarget,size_t theIndex,Vertex *theO); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index); + std::string out(temp); + return out; + }; + void clear() + { + delete o; + }; + + void operator=(const Log_ObjectVertexRemove& in) + { + in; + }; +public: + ~Log_ObjectVertexRemove(void); +}; diff --git a/Log_SceneObjectAdd.cpp b/Log_SceneObjectAdd.cpp new file mode 100755 index 0000000..a004c48 --- /dev/null +++ b/Log_SceneObjectAdd.cpp @@ -0,0 +1,9 @@ +#include "Log_SceneObjectAdd.h" + +Log_SceneObjectAdd::Log_SceneObjectAdd(size_t theTarget):HistoryLog(LogType::Scene_Object_Add,theTarget) +{ +} + +Log_SceneObjectAdd::~Log_SceneObjectAdd(void) +{ +} diff --git a/Log_SceneObjectAdd.h b/Log_SceneObjectAdd.h new file mode 100755 index 0000000..4f43753 --- /dev/null +++ b/Log_SceneObjectAdd.h @@ -0,0 +1,18 @@ +#pragma once +#include "historylog.h" + +class Log_SceneObjectAdd : + public HistoryLog +{ +public: + Log_SceneObjectAdd(size_t theTarget); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target); + std::string out(temp); + return out; + }; +public: + ~Log_SceneObjectAdd(void); +}; diff --git a/Log_SceneObjectRemove.cpp b/Log_SceneObjectRemove.cpp new file mode 100755 index 0000000..72e4490 --- /dev/null +++ b/Log_SceneObjectRemove.cpp @@ -0,0 +1,9 @@ +#include "Log_SceneObjectRemove.h" + +Log_SceneObjectRemove::Log_SceneObjectRemove(size_t theTarget,Object *theO):HistoryLog(LogType::Scene_Object_Remove,theTarget),o(theO) +{ +} + +Log_SceneObjectRemove::~Log_SceneObjectRemove(void) +{ +} diff --git a/Log_SceneObjectRemove.h b/Log_SceneObjectRemove.h new file mode 100755 index 0000000..c589957 --- /dev/null +++ b/Log_SceneObjectRemove.h @@ -0,0 +1,18 @@ +#pragma once +#include "historylog.h" +#include "Object.h" + +class Log_SceneObjectRemove : + public HistoryLog +{ +public: + Object *o; +public: + Log_SceneObjectRemove(size_t theTarget,Object *o); + void clear() + { + delete o; + }; +public: + ~Log_SceneObjectRemove(void); +}; diff --git a/Log_VertexAdjacentChange.cpp b/Log_VertexAdjacentChange.cpp new file mode 100755 index 0000000..d8267fa --- /dev/null +++ b/Log_VertexAdjacentChange.cpp @@ -0,0 +1,9 @@ +#include "Log_VertexAdjacentChange.h" + +Log_VertexAdjacentChange::Log_VertexAdjacentChange(size_t theTarget,size_t theIndex,size_t theAdjIndex,int theOriginal):HistoryLog(LogType::Vertex_Adjacent_Change,theTarget),index(theIndex),adjIndex(theAdjIndex),original(theOriginal) +{ +} + +Log_VertexAdjacentChange::~Log_VertexAdjacentChange(void) +{ +} diff --git a/Log_VertexAdjacentChange.h b/Log_VertexAdjacentChange.h new file mode 100755 index 0000000..ef5a08c --- /dev/null +++ b/Log_VertexAdjacentChange.h @@ -0,0 +1,29 @@ +#pragma once +#include "historylog.h" + +class Log_VertexAdjacentChange : + public HistoryLog +{ +public: + const size_t index; + const size_t adjIndex; + +public: + const int original; + +public: + Log_VertexAdjacentChange(size_t theTarget,size_t theIndex,size_t theAdjIndex,int theOriginal); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,adjIndex,original); + std::string out(temp); + return out; + }; + void operator=(const Log_VertexAdjacentChange& in) + { + in; + }; +public: + ~Log_VertexAdjacentChange(void); +}; \ No newline at end of file diff --git a/Log_VertexAdjacentInsert.cpp b/Log_VertexAdjacentInsert.cpp new file mode 100755 index 0000000..3bf8465 --- /dev/null +++ b/Log_VertexAdjacentInsert.cpp @@ -0,0 +1,9 @@ +#include "Log_VertexAdjacentInsert.h" + +Log_VertexAdjacentInsert::Log_VertexAdjacentInsert(size_t theTarget,size_t theIndex,size_t theAdjIndex):HistoryLog(LogType::Vertex_Adjacent_Insert,theTarget),index(theIndex),adjIndex(theAdjIndex) +{ +} + +Log_VertexAdjacentInsert::~Log_VertexAdjacentInsert(void) +{ +} diff --git a/Log_VertexAdjacentInsert.h b/Log_VertexAdjacentInsert.h new file mode 100755 index 0000000..87b623e --- /dev/null +++ b/Log_VertexAdjacentInsert.h @@ -0,0 +1,29 @@ +#pragma once +#include "historylog.h" + +class Log_VertexAdjacentInsert : + public HistoryLog +{ +public: + const size_t index; + +public: + const size_t adjIndex; + +public: + Log_VertexAdjacentInsert(size_t theTarget,size_t theIndex,size_t adjIndex); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,adjIndex); + std::string out(temp); + return out; + }; + + void operator=(const Log_VertexAdjacentInsert& in) + { + in; + }; +public: + ~Log_VertexAdjacentInsert(void); +}; diff --git a/Log_VertexAdjacentPop.cpp b/Log_VertexAdjacentPop.cpp new file mode 100755 index 0000000..c34151e --- /dev/null +++ b/Log_VertexAdjacentPop.cpp @@ -0,0 +1,9 @@ +#include "Log_VertexAdjacentPop.h" + +Log_VertexAdjacentPop::Log_VertexAdjacentPop(size_t theTarget,size_t theIndex,int theO):HistoryLog(LogType::Vertex_Adjacent_Pop,theTarget),index(theIndex),o(theO) +{ +} + +Log_VertexAdjacentPop::~Log_VertexAdjacentPop(void) +{ +} diff --git a/Log_VertexAdjacentPop.h b/Log_VertexAdjacentPop.h new file mode 100755 index 0000000..4152975 --- /dev/null +++ b/Log_VertexAdjacentPop.h @@ -0,0 +1,28 @@ +#pragma once +#include "Vertex.h" +#include "historylog.h" + +class Log_VertexAdjacentPop : + public HistoryLog +{ +public: + const size_t index; + const int o; + +public: + Log_VertexAdjacentPop(size_t theTarget,size_t theIndex,int o); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,o); + std::string out(temp); + return out; + }; + + void operator=(const Log_VertexAdjacentPop& in) + { + in; + }; +public: + ~Log_VertexAdjacentPop(void); +}; diff --git a/Log_VertexAdjacentPush.cpp b/Log_VertexAdjacentPush.cpp new file mode 100755 index 0000000..723d542 --- /dev/null +++ b/Log_VertexAdjacentPush.cpp @@ -0,0 +1,9 @@ +#include "Log_VertexAdjacentPush.h" + +Log_VertexAdjacentPush::Log_VertexAdjacentPush(size_t theTarget,size_t theIndex):HistoryLog(LogType::Vertex_Adjacent_Push,theTarget),index(theIndex) +{ +} + +Log_VertexAdjacentPush::~Log_VertexAdjacentPush(void) +{ +} diff --git a/Log_VertexAdjacentPush.h b/Log_VertexAdjacentPush.h new file mode 100755 index 0000000..6f5e6c8 --- /dev/null +++ b/Log_VertexAdjacentPush.h @@ -0,0 +1,26 @@ +#pragma once +#include "historylog.h" + +class Log_VertexAdjacentPush : + public HistoryLog +{ +public: + const size_t index; + +public: + Log_VertexAdjacentPush(size_t theTarget,size_t index); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index); + std::string out(temp); + return out; + }; + + void operator=(const Log_VertexAdjacentPush& in) + { + in; + }; +public: + ~Log_VertexAdjacentPush(void); +}; diff --git a/Log_VertexAdjacentRemove.cpp b/Log_VertexAdjacentRemove.cpp new file mode 100755 index 0000000..81a781e --- /dev/null +++ b/Log_VertexAdjacentRemove.cpp @@ -0,0 +1,9 @@ +#include "Log_VertexAdjacentRemove.h" + +Log_VertexAdjacentRemove::Log_VertexAdjacentRemove(size_t theTarget,size_t theIndex,size_t theAdjIndex,int theO):HistoryLog(LogType::Vertex_Adjacent_Remove,theTarget),index(theIndex),adjIndex(theAdjIndex),o(theO) +{ +} + +Log_VertexAdjacentRemove::~Log_VertexAdjacentRemove(void) +{ +} diff --git a/Log_VertexAdjacentRemove.h b/Log_VertexAdjacentRemove.h new file mode 100755 index 0000000..bb675db --- /dev/null +++ b/Log_VertexAdjacentRemove.h @@ -0,0 +1,30 @@ +#pragma once +#include "historylog.h" + +class Log_VertexAdjacentRemove : + public HistoryLog +{ +public: + const size_t index; + const size_t adjIndex; + +public: + const int o; + +public: + Log_VertexAdjacentRemove(size_t theTarget,size_t theIndex,size_t theAdjIndex,int theO); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,adjIndex,o); + std::string out(temp); + return out; + }; + + void operator=(const Log_VertexAdjacentRemove& in) + { + in; + }; +public: + ~Log_VertexAdjacentRemove(void); +}; diff --git a/Log_VertexAdjacentSwap.cpp b/Log_VertexAdjacentSwap.cpp new file mode 100755 index 0000000..c79dec3 --- /dev/null +++ b/Log_VertexAdjacentSwap.cpp @@ -0,0 +1,9 @@ +#include "Log_VertexAdjacentSwap.h" + +Log_VertexAdjacentSwap::Log_VertexAdjacentSwap(size_t theTarget,size_t theIndex,size_t theOIndex,size_t theTIndex):HistoryLog(LogType::Vertex_Adjacent_Swap,theTarget),index(theIndex),oIndex(theOIndex),tIndex(theTIndex) +{ +} + +Log_VertexAdjacentSwap::~Log_VertexAdjacentSwap(void) +{ +} diff --git a/Log_VertexAdjacentSwap.h b/Log_VertexAdjacentSwap.h new file mode 100755 index 0000000..be4cd3a --- /dev/null +++ b/Log_VertexAdjacentSwap.h @@ -0,0 +1,30 @@ +#pragma once +#include "historylog.h" + +class Log_VertexAdjacentSwap : + public HistoryLog +{ +public: + const size_t index; + +public: + const size_t oIndex; + const size_t tIndex; + +public: + Log_VertexAdjacentSwap(size_t theTarget,size_t theIndex,size_t theOIndex,size_t theTIndex); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,oIndex,tIndex); + std::string out(temp); + return out; + }; + + void operator=(const Log_VertexAdjacentSwap& in) + { + in; + }; +public: + ~Log_VertexAdjacentSwap(void); +}; diff --git a/Log_VertexNormalChange.cpp b/Log_VertexNormalChange.cpp new file mode 100755 index 0000000..1f9e807 --- /dev/null +++ b/Log_VertexNormalChange.cpp @@ -0,0 +1,9 @@ +#include "Log_VertexNormalChange.h" + +Log_VertexNormalChange::Log_VertexNormalChange(size_t theTarget,size_t theIndex,float theX,float theY,float theZ):HistoryLog(LogType::Vertex_Normal_Change,theTarget),index(theIndex),x(theX),y(theY),z(theZ) +{ +} + +Log_VertexNormalChange::~Log_VertexNormalChange(void) +{ +} diff --git a/Log_VertexNormalChange.h b/Log_VertexNormalChange.h new file mode 100755 index 0000000..4f93948 --- /dev/null +++ b/Log_VertexNormalChange.h @@ -0,0 +1,32 @@ +#pragma once +#include "historylog.h" + +class Log_VertexNormalChange : + public HistoryLog +{ +public: + const size_t index; + +public: + const float x; + const float y; + const float z; + +public: + Log_VertexNormalChange(size_t theTarget,size_t theIndex,float theX,float theY,float theZ); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,x,y,z); + std::string out(temp); + return out; + }; + + void operator=(const Log_VertexNormalChange& in) + { + in; + }; + +public: + ~Log_VertexNormalChange(void); +}; \ No newline at end of file diff --git a/Log_VertexPositionChange.cpp b/Log_VertexPositionChange.cpp new file mode 100755 index 0000000..6cb3821 --- /dev/null +++ b/Log_VertexPositionChange.cpp @@ -0,0 +1,9 @@ +#include "Log_VertexPositionChange.h" + +Log_VertexPositionChange::Log_VertexPositionChange(size_t theTarget,size_t theIndex,float theX,float theY,float theZ):HistoryLog(LogType::Vertex_Position_Change,theTarget),index(theIndex),x(theX),y(theY),z(theZ) +{ +} + +Log_VertexPositionChange::~Log_VertexPositionChange(void) +{ +} diff --git a/Log_VertexPositionChange.h b/Log_VertexPositionChange.h new file mode 100755 index 0000000..53dbe03 --- /dev/null +++ b/Log_VertexPositionChange.h @@ -0,0 +1,31 @@ +#pragma once +#include "historylog.h" + +class Log_VertexPositionChange : + public HistoryLog +{ +public: + const size_t index; + +public: + const float x; + const float y; + const float z; + +public: + Log_VertexPositionChange(size_t theTarget,size_t theIndex,float theX,float theY,float theZ); + std::string toString() + { + char temp[256]; + sprintf_s(temp,"\t\t\t\n",target,index,x,y,z); + std::string out(temp); + return out; + }; + + void operator=(const Log_VertexPositionChange& in) + { + in; + }; +public: + ~Log_VertexPositionChange(void); +}; \ No newline at end of file diff --git a/Main.cpp b/Main.cpp new file mode 100755 index 0000000..cc60ee2 --- /dev/null +++ b/Main.cpp @@ -0,0 +1,768 @@ +#include "wx/wxprec.h" + +#ifndef WX_PRECOMP + #include "wx/wx.h" +#endif +#include "wx/splash.h" +#include "wx/utils.h" + +#include "Main.h" +#include "OpenGLCanvas.h" +#include "NewCubeDialog.h" +#include "AboutDialog.h" +#include "NewCylinderDialog.h" +#include "NewSphereDialog.h" +#include "NewPlaneDialog.h" +#include "SceneInfoDialog.h" +#include "MaterialDialog.h" +#include "ExtrudeDialog.h" +#include "InstantMirrorDialog.h" +#include "ReferenceImageDialog.h" + +Scene *theScene; +Screen *theScreen; + +IMPLEMENT_APP(PolygonStudio) + +bool PolygonStudio::OnInit() +{ + wxImage::AddHandler(new wxPNGHandler); + wxImage::AddHandler(new wxJPEGHandler); + wxBitmap splashMap; + if (splashMap.LoadFile("splash.dat", wxBITMAP_TYPE_PNG)) + { + wxSplashScreen* splash = new wxSplashScreen(splashMap, + wxSPLASH_CENTRE_ON_SCREEN|wxSPLASH_TIMEOUT, + 500, NULL, -1, wxDefaultPosition, wxDefaultSize, + wxSIMPLE_BORDER|wxSTAY_ON_TOP); + } + wxYield(); + theScene=new Scene(); + theScene->initialize(); +// test(); + MainFrame *theMainFrame = new MainFrame(_T("Pillow 0.1a")); + theMainFrame->CreateStatusBar(); + theMainFrame->SetStatusText(_T("Pillow 0.1a")); + theMainFrame->Show(true); + + OpenGLCanvas *theCanvas=new OpenGLCanvas(theMainFrame, wxID_ANY,wxDefaultPosition, wxDefaultSize); + SetTopWindow(theMainFrame); + theCanvas->initScreen(); + return true; +} + +MainFrame::MainFrame(const wxString& title):wxFrame(NULL, wxID_ANY, title,wxDefaultPosition, wxDefaultSize,wxDEFAULT_FRAME_STYLE|wxMAXIMIZE, "MainFrame") +{ + SetIcon(wxICON(pillow)); + this->Maximize(true); + wxMenuBar *menuBar = new wxMenuBar(); + wxMenu *fileMenu = new wxMenu; + fileMenu->Append(MenuFileNewScene, _T("New Scene"), _T("New scene.")); + fileMenu->Append(MenuFileOpenScene, _T("Open Scene"), _T("Open a file.")); + fileMenu->Append(MenuFileSaveScene, _T("Save Scene"), _T("Save file.")); + fileMenu->Append(MenuFileSaveSceneAs, _T("Save Scene As"), _T("Save scene as.")); + fileMenu->AppendSeparator(); + fileMenu->Append(MenuFileLoadIntoScene, _T("Load Into Scene"), _T("Load into scene.")); + fileMenu->AppendSeparator(); +// fileMenu->Append(MenuFileConsole, _T("Console"), _T("Open the console.")); +// fileMenu->AppendSeparator(); + fileMenu->Append(MenuFileExit, _T("Exit"), _T("Exit Pillow.")); + wxMenu *editMenu = new wxMenu; + editMenu->Append(MenuEditUndo, _T("* Undo"), _T("Undo the current scene.")); + editMenu->Append(MenuEditRedo, _T("* Redo"), _T("Redo the current scene.")); + editMenu->AppendSeparator(); + editMenu->Append(MenuEditScreenshot, _T("Screenshot"), _T("Save the screenshot.")); + editMenu->AppendSeparator(); + editMenu->Append(MenuEditHistoryView, _T("* History View"), _T("History View.")); + wxMenu *createMenu = new wxMenu; + createMenu->Append(MenuCreateCube,_T("Cube"), _T("Create cube.")); + createMenu->Append(MenuCreateCylinder,_T("Cylinder"), _T("Create cylinder.")); + createMenu->Append(MenuCreateSphere,_T("Sphere"), _T("Create sphere.")); +// createMenu->Append(MenuCreateCone,_T("Cone"), _T("Create cone.")); +// createMenu->Append(MenuCreateTorus,_T("Torus"), _T("Create torus.")); + createMenu->Append(MenuCreatePlane,_T("Plane"), _T("Create plane.")); + createMenu->AppendSeparator(); + createMenu->Append(MenuCreateClone,_T("Clone"), _T("Create Clone.")); + createMenu->Append(MenuCreateMirror,_T("Mirror"), _T("Create Mirror.")); + createMenu->AppendSeparator(); + createMenu->Append(MenuCreateMirrorInstance,_T("Mirror Instance"), _T("Create Mirror instance.")); + createMenu->Append(MenuCreateRemoveMirrorInstance,_T("Remove Mirror Instance"), _T("Remove Mirror instance.")); + wxMenu *modifyMenu = new wxMenu; + modifyMenu->Append(MenuModifyMerge,_T("Merge"), _T("Merge Selection.")); + modifyMenu->Append(MenuModifyDetach,_T("Detach"),_T("Detach Selection.")); + modifyMenu->Append(MenuModifyDeleteVertex,_T("Delete Vertex"),_T("Delete Selected Vertices.")); +// modifyMenu->Append(MenuModifyMirror,_T("Mirror"), _T("Mirror.")); +// modifyMenu->Append(MenuModifyBevel,_T("Bevel"), _T("Bevel.")); + modifyMenu->Append(MenuModifyExtrude,_T("Extrude"), _T("Extrude.")); + modifyMenu->Append(MenuModifySplit,_T("Split"), _T("Split tool.")); + modifyMenu->Append(MenuModifyCollapse,_T("Collapse"), _T("Collapse.")); + modifyMenu->Append(MenuModifyTargetWeld,_T("Target Weld"), _T("Target weld.")); + modifyMenu->Append(MenuModifyUpdateNormal,_T("update Normal"), _T("update normal.")); + wxMenu *subdivisionMenu = new wxMenu; + subdivisionMenu->Append(MenuSubdivisionSubdivide,_T("Subdivide"), _T("Subdivide.")); + subdivisionMenu->Append(MenuSubdivisionUnsubdivide,_T("Unsubdivide"), _T("Unsubdivide.")); + subdivisionMenu->Append(MenuSubdivisionRefineControlMesh,_T("Refine Control Mesh"), _T("Refine control mesh.")); + wxMenu *selectionMenu = new wxMenu; + wxMenu* selectionMenuSelectionMode = new wxMenu; + selectionMenuSelectionMode->AppendRadioItem(MenuSelectionVertexSelection,_T("Vertex Selection"), _T("Vertex selection.")); + selectionMenuSelectionMode->AppendRadioItem(MenuSelectionEdgeSelection,_T("Edge Selection"), _T("Edge selection.")); + selectionMenuSelectionMode->AppendRadioItem(MenuSelectionFaceSelection,_T("Face Selection"), _T("Face selection.")); + selectionMenuSelectionMode->AppendRadioItem(MenuSelectionObjectSelection,_T("Object Selection"), _T("Object selection.")); + selectionMenu->Append(MenuSelectionSelectionMode,_T("Selection Mode"),selectionMenuSelectionMode); + selectionMenu->Append(MenuSelectionSelectAll,_T("Select All"), _T("Select all.")); + selectionMenu->Append(MenuSelectionInvertSelect,_T("Invert Selection"), _T("Invert Selection.")); +// selectionMenu->Append(MenuSelectionSelectLoop,_T("Select Loop"), _T("Select loop.")); + selectionMenu->Append(MenuSelectionFrameSelection,_T("* Frame Selection"), _T("Frame selection.")); + + wxMenu *optionMenu = new wxMenu; + optionMenu->Append(MenuOptionMaterial,_T("Material"), _T("Set material.")); + wxMenu *optionMenuObjectDisplayMode = new wxMenu; + + optionMenuObjectDisplayMode->Append(MenuOptionObjectDisplayModeWireframe,_T("Wireframe"), _T("Wireframe display mode.")); + optionMenuObjectDisplayMode->Append(MenuOptionObjectDisplayModeFlat,_T("Flat"), _T("Flat display mode.")); + optionMenuObjectDisplayMode->Append(MenuOptionObjectDisplayModeFlatWire,_T("Flat Wire"), _T("Flat wire display mode.")); + optionMenuObjectDisplayMode->Append(MenuOptionObjectDisplayModeSmooth,_T("Smooth"), _T("Smooth display mode.")); + optionMenuObjectDisplayMode->Append(MenuOptionObjectDisplayModeSmoothWire,_T("Smooth Wire"), _T("Smooth wire display mode.")); +// optionMenuObjectDisplayMode->Append(MenuOptionObjectDisplayModeTransparentFlat,_T("Transparent Flat"), _T("Transparent flat display mode.")); +// optionMenuObjectDisplayMode->Append(MenuOptionObjectDisplayModeTransparentSmooth,_T("Transparent Smooth"), _T("Transparent smooth display mode.")); + optionMenu->Append(MenuOptionObjectDisplayMode,_T("Object Display Mode"), optionMenuObjectDisplayMode); + + + optionMenu->Append(MenuOptionHideSelection,_T("Hide Selection"), _T("Hide selection.")); + optionMenu->Append(MenuOptionHideUnselection,_T("Hide Unselection"), _T("Hide unselection.")); + optionMenu->Append(MenuOptionShowAll,_T("Show All"), _T("Show all.")); + wxMenu *optionMenuViewportLayout = new wxMenu; + optionMenuViewportLayout->Append(MenuOptionViewportLayoutSingle,_T("Single"), _T("Single.")); + optionMenuViewportLayout->Append(MenuOptionViewportLayoutFourView,_T("Four View"), _T("Four view.")); + optionMenuViewportLayout->Append(MenuOptionViewportLayoutVerticalSplited,_T("Vertical Splited"), _T("Vertical Splited.")); + optionMenuViewportLayout->Append(MenuOptionViewportLayoutThreeView,_T("Three view"), _T("Three view.")); + optionMenu->Append(MenuOptionViewportLayout,_T("Viewport Layout"),optionMenuViewportLayout); + wxMenu *optionMenuViewportCamera = new wxMenu; + optionMenuViewportCamera->Append(MenuOptionViewportCameraPerspective,_T("Perspective"), _T("Perspective.")); + optionMenuViewportCamera->Append(MenuOptionViewportCameraTop,_T("Top"), _T("Top.")); + optionMenuViewportCamera->Append(MenuOptionViewportCameraBottom,_T("Bottom"), _T("Bottom.")); + optionMenuViewportCamera->Append(MenuOptionViewportCameraLeft,_T("Left"), _T("Left.")); + optionMenuViewportCamera->Append(MenuOptionViewportCameraRight,_T("Right"), _T("Right.")); + optionMenuViewportCamera->Append(MenuOptionViewportCameraFront,_T("Front"), _T("Front.")); + optionMenuViewportCamera->Append(MenuOptionViewportCameraBack,_T("Back"), _T("Back.")); + + optionMenu->Append(MenuOptionViewportCamera,_T("Viewport Camera"),optionMenuViewportCamera); + optionMenu->AppendCheckItem(MenuOptionShowGird,_T("Show Gird"), _T("Show gird.")); + optionMenu->Append(MenuOptionSetViewportImage,_T("Set Viewport Image"), _T("Set viewport Image.")); + optionMenu->Append(MenuOptionDeleteViewportImage,_T("Delete Viewport Image"), _T("Delete Viewport Image.")); + optionMenu->Append(MenuOptionSceneInfo,_T("Scene Info"), _T("Scene Info.")); + + wxMenu *helpMenu = new wxMenu; +// helpMenu->Append(MenuHelpHelp, _T("&Help"), _T("Show help.")); + helpMenu->Append(MenuHelpAbout, _T("&About"), _T("Show about.")); + + menuBar->Append(fileMenu, _T("&File")); + menuBar->Append(editMenu, _T("&Edit")); + menuBar->Append(createMenu, _T("&Create")); + menuBar->Append(modifyMenu, _T("&Modify")); + menuBar->Append(subdivisionMenu, _T("&Subdivision")); + menuBar->Append(selectionMenu, _T("&Selection")); + menuBar->Append(optionMenu, _T("&Option")); + menuBar->Append(helpMenu, _T("&Help")); + SetMenuBar(menuBar); + //this->theConsoleDialog= new ConsoleDialog(this); +// theConsole->dialogInstance=this->theConsoleDialog; +} + +void MainFrame::onMenuFileNewScene(wxCommandEvent& event) +{ + theScene->clearScene(); + Refresh(false); + event; +} + +void MainFrame::onMenuFileOpenScene(wxCommandEvent& event) +{ + event; + wxString wildcards=wxString::Format(_T("PWB files (*.pwb)|*.pwb"),wxFileSelectorDefaultWildcardStr,wxFileSelectorDefaultWildcardStr); + wxFileDialog dialog(this, _T("Open file:"),wxEmptyString, wxEmptyString, wildcards,wxOPEN); + if(dialog.ShowModal()==wxID_OK) + { + wxArrayString paths, filenames; + dialog.GetPaths(paths); + dialog.GetFilenames(filenames); +// size_t count=paths.GetCount(); + if(dialog.GetFilterIndex()==0) + { + //s.Printf(_T("File %d: %s (%s)\n"),(int)n, paths[n].c_str(), filenames[n].c_str()); + //msg+=s; + theScene->clearScene(); + theScene->loadFromPWB(paths[0].c_str()); + } + Refresh(false); + } +} + +void MainFrame::onMenuFileSaveScene(wxCommandEvent& event) +{ + if(theScene->fileName=="") + { + //|Document files (*.doc)|*.doc + wxFileDialog dialog(this,_T("Save file:"),wxEmptyString,_T("untitle"),_T("Pillow Binary Files (*.pwb)|*.pwb"),wxSAVE|wxOVERWRITE_PROMPT); + dialog.SetFilterIndex(1); + if (dialog.ShowModal() == wxID_OK) + { + //wxLogMessage(_T("%s, filter %d"),dialog.GetPath().c_str(), dialog.GetFilterIndex()); + if(dialog.GetFilterIndex()==0) + { + theScene->fileName=dialog.GetPath().c_str(); + theScene->saveToFilePWB(dialog.GetPath().c_str()); + } + } + } + else + { + theScene->saveToFilePWB(theScene->fileName.c_str()); + } + event; +} + +void MainFrame::onMenuFileSaveSceneAs(wxCommandEvent& event) +{ + wxFileDialog dialog(this,_T("Save file:"),wxEmptyString,_T("untitle"),_T("Pillow Binary Files (*.pwb)|*.pwb|OBJ Files (*.obj)|*.obj"),wxSAVE|wxOVERWRITE_PROMPT); + dialog.SetFilterIndex(0); + if (dialog.ShowModal() == wxID_OK) + { + //wxLogMessage(_T("%s, filter %d"),dialog.GetPath().c_str(), dialog.GetFilterIndex()); + if(dialog.GetFilterIndex()==0) + { + theScene->fileName=dialog.GetPath().c_str(); + theScene->saveToFilePWB(dialog.GetPath().c_str()); + } + else if(dialog.GetFilterIndex()==1) + { + theScene->fileName=dialog.GetPath().c_str(); + theScene->saveToFileOBJ(dialog.GetPath().c_str()); + } + } + event; +} + +void MainFrame::onMenuFileLoadIntoScene(wxCommandEvent& event) +{ + wxString wildcards=wxString::Format(_T("PWB files (*.pwb)|*.pwb|OBJ files (*.obj)|*.obj"),wxFileSelectorDefaultWildcardStr,wxFileSelectorDefaultWildcardStr); + wxFileDialog dialog(this, _T("Load into the scene:"),wxEmptyString, wxEmptyString, wildcards,wxMULTIPLE); + if(dialog.ShowModal()==wxID_OK) + { + wxArrayString paths, filenames; + dialog.GetPaths(paths); + dialog.GetFilenames(filenames); + size_t count=paths.GetCount(); + if(dialog.GetFilterIndex()==0) + { + for(size_t n=0;nloadFromPWB(paths[n].c_str()); + } + } + else if(dialog.GetFilterIndex()==1) + { + for(size_t n=0;nloadFromOBJ(paths[n].c_str()); + } + } + Refresh(false); +/* s.Printf(_T("Filter index: %d"), dialog.GetFilterIndex()); + msg+=s; + wxMessageDialog dialog2(this, msg, _T("Selected files")); + dialog2.ShowModal();*/ + } + event; +} + +/*void MainFrame::onMenuFileConsole(wxCommandEvent& event) +{ + this->theConsoleDialog->Show(true); + this->theConsoleDialog->refresh(); + event; +}*/ + +void MainFrame::onMenuFileExit(wxCommandEvent& event) +{ + Close(true); + event; +} + +void MainFrame::onMenuEditUndo(wxCommandEvent& event) +{event; +} + +void MainFrame::onMenuEditRedo(wxCommandEvent& event) +{event; +} + +void MainFrame::onMenuEditScreenshot(wxCommandEvent& event) +{ + wxFileDialog dialog(this,_T("Save screenshot:"),wxEmptyString,_T("untitle"),_T("JPEG Files (*.jpg)|*.jpg"),wxSAVE|wxOVERWRITE_PROMPT); + if (dialog.ShowModal() == wxID_OK) + { + theScreen->screenShot(dialog.GetPath().c_str()); + } + event; +} + +void MainFrame::onMenuEditHistoryView(wxCommandEvent& event) +{ +event; +} + +void MainFrame::onMenuCreateCube(wxCommandEvent& event) +{ + //theConsole->cprintf("cube\n"); + //this->theConsoleDialog->refresh(); + NewCubeDialog *newCubeDialog=new NewCubeDialog(this); + newCubeDialog->ShowModal(); + //newCubeDialog->refresh(); + newCubeDialog->Destroy(); + Refresh(false); + event; +} + +void MainFrame::onMenuCreateCylinder(wxCommandEvent& event) +{ + NewCylinderDialog *newCylinderDialog=new NewCylinderDialog(this); + newCylinderDialog->ShowModal(); + newCylinderDialog->Destroy(); + Refresh(false); + event; +} + +void MainFrame::onMenuCreateSphere(wxCommandEvent& event) +{ + NewSphereDialog *newSphereDialog=new NewSphereDialog(this); + newSphereDialog->ShowModal(); + newSphereDialog->Destroy(); + Refresh(false); + event; +} + +/*void MainFrame::onMenuCreateCone(wxCommandEvent& event) +{event; +}*/ + +/*void MainFrame::onMenuCreateTorus(wxCommandEvent& event) +{event; +}*/ + +void MainFrame::onMenuCreatePlane(wxCommandEvent& event) +{ + NewPlaneDialog *newPlaneDialog=new NewPlaneDialog(this); + newPlaneDialog->ShowModal(); + newPlaneDialog->Destroy(); + Refresh(false); + event; +} + +void MainFrame::onMenuCreateClone(wxCommandEvent& event) +{ + theScene->clone(); + Refresh(false); + event; +} + +void MainFrame::onMenuCreateMirror(wxCommandEvent& event) +{ + theScene->mirrorClone(); + Refresh(false); +event; +} + +void MainFrame::onMenuCreateMirrorInstance(wxCommandEvent& event) +{ + InstantMirrorDialog *instantMirrorDialog=new InstantMirrorDialog(this); + instantMirrorDialog->ShowModal(); + instantMirrorDialog->Destroy(); + Refresh(false); + + event; +} + +void MainFrame::onMenuCreateRemoveMirrorInstance(wxCommandEvent& event) +{ + theScene->unMirror(); + Refresh(false); + event; +} + +void MainFrame::onMenuModifyMerge(wxCommandEvent& event) +{ + theScene->onMerge(); + Refresh(false); + event; +} + +void MainFrame::onMenuModifyDetach(wxCommandEvent& event) +{ + theScene->onDetach(); + Refresh(false); + event; +} + +void MainFrame::onMenuModifyDeleteVertex(wxCommandEvent& event) +{ + theScene->deleteVertex(); + Refresh(false); + event; +} + +/*void MainFrame::onMenuModifyMirror(wxCommandEvent& event) +{ + event; +}*/ + +/*void MainFrame::onMenuModifyBevel(wxCommandEvent& event) +{ + event; +}*/ + +void MainFrame::onMenuModifyExtrude(wxCommandEvent& event) +{ + ExtrudeDialog *extrudeDialog=new ExtrudeDialog(this); + extrudeDialog->ShowModal(); + extrudeDialog->Destroy(); + Refresh(false); + event; +} + +void MainFrame::onMenuModifySplit(wxCommandEvent& event) +{ + if(!theScene->isSplitMode) + { + theScene->beginSplit(); + Refresh(false); + } + else + { + theScene->endSplit(); + Refresh(false); + } + event; +} + +void MainFrame::onMenuModifyCollapse(wxCommandEvent& event) +{ + theScene->weldVertex(); + Refresh(false); + event; +} + +void MainFrame::onMenuModifyTargetWeld(wxCommandEvent& event) +{event; +} + +void MainFrame::onMenuModifyUpdateNormal(wxCommandEvent& event) +{ + theScene->updateNormal(); + Refresh(false); + event; +} + +void MainFrame::onMenuSubdivisionSubdivide(wxCommandEvent& event) +{ + theScene->subdivide(); + Refresh(false); + event; +} + +void MainFrame::onMenuSubdivisionUnsubdivide(wxCommandEvent& event) +{ + theScene->unSubdivide(); + Refresh(); + event; +} + +void MainFrame::onMenuSubdivisionRefineControlMesh(wxCommandEvent& event) +{ + wxMessageDialog dialog( NULL, _T("You cannot revert this operation!"), + _T("Warning:"), wxNO_DEFAULT|wxYES_NO|wxICON_INFORMATION); + + switch ( dialog.ShowModal() ) + { + case wxID_YES: + theScene->redefineControlPoint(); + Refresh(false); + break; + case wxID_NO: + break; + default: + wxLogError(wxT("Unexpected wxMessageDialog return code!")); + break; + } + event; +} + +void MainFrame::onMenuSelectionSelectionMode(wxCommandEvent& event) +{event; +} + +void MainFrame::onMenuSelectionVertexSelection(wxCommandEvent& event) +{ + theScene->changeSelectionMode(SelectionMode::Vertex); + Refresh(false); + event; +} + +void MainFrame::onMenuSelectionEdgeSelection(wxCommandEvent& event) +{ + theScene->changeSelectionMode(SelectionMode::Edge); + Refresh(false); + event; +} + +void MainFrame::onMenuSelectionFaceSelection(wxCommandEvent& event) +{ + theScene->changeSelectionMode(SelectionMode::Face); + Refresh(false); + event; +} + +void MainFrame::onMenuSelectionObjectSelection(wxCommandEvent& event) +{ + theScene->changeSelectionMode(SelectionMode::Object); + Refresh(false); + event; +} + +void MainFrame::onMenuSelectionSelectAll(wxCommandEvent& event) +{ + theScene->selectAll(); + Refresh(false); + event; +} + +void MainFrame::onMenuSelectionInvertSelect(wxCommandEvent& event) +{ + theScene->invertSelection(); + Refresh(false); + event; +} + +/*void MainFrame::onMenuSelectionSelectLoop(wxCommandEvent& event) +{ + event; +}*/ + +void MainFrame::onMenuOptionMaterial(wxCommandEvent& event) +{ + MaterialDialog *materialDialog=new MaterialDialog(this); + materialDialog->ShowModal(); + materialDialog->Destroy(); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionObjectDisplayMode(wxCommandEvent& event) +{ + event; +} + +void MainFrame::onMenuOptionObjectDisplayModeWireframe(wxCommandEvent& event) +{ + theScene->changeShadeMode(RenderType::Wire); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionObjectDisplayModeFlat(wxCommandEvent& event) +{ + theScene->changeShadeMode(RenderType::Faced); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionObjectDisplayModeFlatWire(wxCommandEvent& event) +{ + theScene->changeShadeMode(RenderType::WireframeFaced); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionObjectDisplayModeSmooth(wxCommandEvent& event) +{ + theScene->changeShadeMode(RenderType::Smooth); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionObjectDisplayModeSmoothWire(wxCommandEvent& event) +{ + theScene->changeShadeMode(RenderType::Wireframe); + Refresh(false); + event; +} + +void MainFrame::onMenuSelectionFrameSelection(wxCommandEvent& event) +{ + event; +} + +void MainFrame::onMenuOptionHideSelection(wxCommandEvent& event) +{ + theScene->hideSelection(); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionHideUnselection(wxCommandEvent& event) +{ + theScene->hideUnselection(); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionShowAll(wxCommandEvent& event) +{ + theScene->unhideAll(); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportLayout(wxCommandEvent& event) +{ + event; +} + +void MainFrame::onMenuOptionViewportLayoutSingle(wxCommandEvent& event) +{ + theScreen->changeView(35); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportLayoutFourView(wxCommandEvent& event) +{ + theScreen->changeView(32); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportLayoutVerticalSplited(wxCommandEvent& event) +{ + theScreen->changeView(34); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportLayoutThreeView(wxCommandEvent& event) +{ + theScreen->changeView(33); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportCamera(wxCommandEvent& event) +{ + event; +} + +void MainFrame::onMenuOptionViewportCameraPerspective(wxCommandEvent& event) +{ + theScreen->changeCamera(CameraMode::Perspective); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportCameraTop(wxCommandEvent& event) +{ + theScreen->changeCamera(CameraMode::Top); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportCameraBottom(wxCommandEvent& event) +{ + theScreen->changeCamera(CameraMode::Bottom); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportCameraLeft(wxCommandEvent& event) +{ + theScreen->changeCamera(CameraMode::Left); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportCameraRight(wxCommandEvent& event) +{ + theScreen->changeCamera(CameraMode::Right); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportCameraFront(wxCommandEvent& event) +{ + theScreen->changeCamera(CameraMode::Front); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionViewportCameraBack(wxCommandEvent& event) +{ + theScreen->changeCamera(CameraMode::Back); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionShowGird(wxCommandEvent& event) +{ + theScreen->switchGird(); + Refresh(); + event; +} + +void MainFrame::onMenuOptionSetViewportImage(wxCommandEvent& event) +{ + ReferenceImageDialog *referenceImageDialog=new ReferenceImageDialog(this); + referenceImageDialog->ShowModal(); + referenceImageDialog->Destroy(); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionDeleteViewportImage(wxCommandEvent& event) +{ + theScreen->disableReference(); + Refresh(false); + event; +} + +void MainFrame::onMenuOptionSceneInfo(wxCommandEvent& event) +{ + SceneInfoDialog *sceneInfoDialog=new SceneInfoDialog(this); + sceneInfoDialog->ShowModal(); + sceneInfoDialog->Destroy(); + Refresh(false); + event; +} + +/*void MainFrame::onMenuHelpHelp(wxCommandEvent& event) +{ + wxLaunchDefaultBrowser(_T("http://billconan.blogspot.com")); + event; +}*/ + +void MainFrame::onMenuHelpAbout(wxCommandEvent& event) +{ + AboutDialog *aboutDialog=new AboutDialog(this); + aboutDialog->ShowModal(); + aboutDialog->Destroy(); + event; +} + +MainFrame::~MainFrame() +{ +// delete this->theConsoleDialog; + //delete theScene; + //delete theScreen; +} \ No newline at end of file diff --git a/Main.h b/Main.h new file mode 100755 index 0000000..3288422 --- /dev/null +++ b/Main.h @@ -0,0 +1,259 @@ +#pragma once +//#include "ConsoleDialog.h" + +class PolygonStudio : public wxApp +{ + public: + virtual bool OnInit(); +}; + +DECLARE_APP(PolygonStudio) + +class MainFrame : public wxFrame +{ +private: +// ConsoleDialog *theConsoleDialog; + public: + MainFrame(const wxString& title); + ~MainFrame(void); +void onMenuFileNewScene(wxCommandEvent& event); +void onMenuFileOpenScene(wxCommandEvent& event); +void onMenuFileSaveScene(wxCommandEvent& event); +void onMenuFileSaveSceneAs(wxCommandEvent& event); +void onMenuFileLoadIntoScene(wxCommandEvent& event); +//void onMenuFileConsole(wxCommandEvent& event); +void onMenuFileExit(wxCommandEvent& event); +void onMenuEditUndo(wxCommandEvent& event); +void onMenuEditRedo(wxCommandEvent& event); +void onMenuEditScreenshot(wxCommandEvent& event); +void onMenuEditHistoryView(wxCommandEvent& event); + +void onMenuCreateCube(wxCommandEvent& event); +void onMenuCreateCylinder(wxCommandEvent& event); +void onMenuCreateSphere(wxCommandEvent& event); +void onMenuCreatePlane(wxCommandEvent& event); + +void onMenuCreateClone(wxCommandEvent& event); +void onMenuCreateMirror(wxCommandEvent& event); +void onMenuCreateMirrorInstance(wxCommandEvent& event); +void onMenuCreateRemoveMirrorInstance(wxCommandEvent& event); + +void onMenuModifyMerge(wxCommandEvent& event); +void onMenuModifyDetach(wxCommandEvent& event); +void onMenuModifyDeleteVertex(wxCommandEvent& event); +void onMenuModifyExtrude(wxCommandEvent& event); +void onMenuModifySplit(wxCommandEvent& event); +void onMenuModifyCollapse(wxCommandEvent& event); +void onMenuModifyTargetWeld(wxCommandEvent& event); +void onMenuModifyUpdateNormal(wxCommandEvent& event); + +void onMenuSubdivisionSubdivide(wxCommandEvent& event); +void onMenuSubdivisionUnsubdivide(wxCommandEvent& event); +void onMenuSubdivisionRefineControlMesh(wxCommandEvent& event); + +void onMenuSelectionSelectionMode(wxCommandEvent& event); +void onMenuSelectionVertexSelection(wxCommandEvent& event); +void onMenuSelectionEdgeSelection(wxCommandEvent& event); +void onMenuSelectionFaceSelection(wxCommandEvent& event); +void onMenuSelectionObjectSelection(wxCommandEvent& event); +void onMenuSelectionSelectAll(wxCommandEvent& event); +void onMenuSelectionInvertSelect(wxCommandEvent& event); +void onMenuSelectionFrameSelection(wxCommandEvent& event); + +void onMenuOptionMaterial(wxCommandEvent& event); +void onMenuOptionObjectDisplayMode(wxCommandEvent& event); +void onMenuOptionObjectDisplayModeWireframe(wxCommandEvent& event); +void onMenuOptionObjectDisplayModeFlat(wxCommandEvent& event); +void onMenuOptionObjectDisplayModeFlatWire(wxCommandEvent& event); +void onMenuOptionObjectDisplayModeSmooth(wxCommandEvent& event); +void onMenuOptionObjectDisplayModeSmoothWire(wxCommandEvent& event); +void onMenuOptionObjectDisplayModeTransparentFlat(wxCommandEvent& event); +void onMenuOptionObjectDisplayModeTransparentSmooth(wxCommandEvent& event); + +void onMenuOptionHideSelection(wxCommandEvent& event); +void onMenuOptionHideUnselection(wxCommandEvent& event); +void onMenuOptionShowAll(wxCommandEvent& event); +void onMenuOptionViewportLayout(wxCommandEvent& event); +void onMenuOptionViewportLayoutSingle(wxCommandEvent& event); +void onMenuOptionViewportLayoutFourView(wxCommandEvent& event); +void onMenuOptionViewportLayoutVerticalSplited(wxCommandEvent& event); +void onMenuOptionViewportLayoutThreeView(wxCommandEvent& event); +void onMenuOptionViewportCamera(wxCommandEvent& event); +void onMenuOptionViewportCameraPerspective(wxCommandEvent& event); +void onMenuOptionViewportCameraTop(wxCommandEvent& event); +void onMenuOptionViewportCameraBottom(wxCommandEvent& event); +void onMenuOptionViewportCameraLeft(wxCommandEvent& event); +void onMenuOptionViewportCameraRight(wxCommandEvent& event); +void onMenuOptionViewportCameraFront(wxCommandEvent& event); +void onMenuOptionViewportCameraBack(wxCommandEvent& event); +void onMenuOptionShowGird(wxCommandEvent& event); +void onMenuOptionSetViewportImage(wxCommandEvent& event); +void onMenuOptionDeleteViewportImage(wxCommandEvent& event); +void onMenuOptionSceneInfo(wxCommandEvent& event); +//void onMenuHelpHelp(wxCommandEvent& event); +void onMenuHelpAbout(wxCommandEvent& event); + + + + + + + + private: + DECLARE_EVENT_TABLE() +}; + +enum +{ + MenuFileNewScene=200, + MenuFileOpenScene, + MenuFileSaveScene, + MenuFileSaveSceneAs, + MenuFileLoadIntoScene, + MenuFileExit, + + MenuEditUndo, + MenuEditRedo, + MenuEditScreenshot, + MenuEditHistoryView, + + MenuCreateCube, + MenuCreateCylinder, + MenuCreateSphere, + MenuCreatePlane, + + MenuCreateClone, + MenuCreateMirror, + MenuCreateMirrorInstance, + MenuCreateRemoveMirrorInstance, + + MenuModifyMerge, + MenuModifyDetach, + MenuModifyDeleteVertex, + MenuModifyExtrude, + MenuModifySplit, + MenuModifyCollapse, + MenuModifyTargetWeld, + MenuModifyUpdateNormal, + + MenuSubdivisionSubdivide, + MenuSubdivisionUnsubdivide, + MenuSubdivisionRefineControlMesh, + + MenuSelectionSelectionMode, + MenuSelectionVertexSelection, + MenuSelectionEdgeSelection, + MenuSelectionFaceSelection, + MenuSelectionObjectSelection, + MenuSelectionSelectAll, + MenuSelectionInvertSelect, + MenuSelectionFrameSelection, + + MenuOptionMaterial, + MenuOptionObjectDisplayMode, + MenuOptionObjectDisplayModeWireframe, + MenuOptionObjectDisplayModeFlat, + MenuOptionObjectDisplayModeFlatWire, + MenuOptionObjectDisplayModeSmooth, + MenuOptionObjectDisplayModeSmoothWire, + + MenuOptionHideSelection, + MenuOptionHideUnselection, + MenuOptionShowAll, + MenuOptionViewportLayout, + MenuOptionViewportLayoutSingle, + MenuOptionViewportLayoutFourView, + MenuOptionViewportLayoutVerticalSplited, + MenuOptionViewportLayoutThreeView, + MenuOptionViewportCamera, + MenuOptionViewportCameraPerspective, + MenuOptionViewportCameraTop, + MenuOptionViewportCameraBottom, + MenuOptionViewportCameraLeft, + MenuOptionViewportCameraRight, + MenuOptionViewportCameraFront, + MenuOptionViewportCameraBack, + MenuOptionShowGird, + MenuOptionSetViewportImage, + MenuOptionDeleteViewportImage, + MenuOptionSceneInfo, + + MenuHelpAbout +}; + +BEGIN_EVENT_TABLE(MainFrame, wxFrame) + EVT_MENU(MenuFileNewScene,MainFrame::onMenuFileNewScene) + EVT_MENU(MenuFileOpenScene,MainFrame::onMenuFileOpenScene) + EVT_MENU(MenuFileSaveScene,MainFrame::onMenuFileSaveScene) + EVT_MENU(MenuFileSaveSceneAs,MainFrame::onMenuFileSaveSceneAs) + EVT_MENU(MenuFileLoadIntoScene,MainFrame::onMenuFileLoadIntoScene) + //EVT_MENU(MenuFileConsole,MainFrame::onMenuFileConsole) + EVT_MENU(MenuFileExit,MainFrame::onMenuFileExit) + + EVT_MENU(MenuEditUndo,MainFrame::onMenuEditUndo) + EVT_MENU(MenuEditRedo,MainFrame::onMenuEditRedo) + EVT_MENU(MenuEditScreenshot,MainFrame::onMenuEditScreenshot) + EVT_MENU(MenuEditHistoryView,MainFrame::onMenuEditHistoryView) + + EVT_MENU(MenuCreateCube,MainFrame::onMenuCreateCube) + EVT_MENU(MenuCreateCylinder,MainFrame::onMenuCreateCylinder) + EVT_MENU(MenuCreateSphere,MainFrame::onMenuCreateSphere) + EVT_MENU(MenuCreatePlane,MainFrame::onMenuCreatePlane) + + EVT_MENU(MenuCreateClone,MainFrame::onMenuCreateClone) + EVT_MENU(MenuCreateMirror,MainFrame::onMenuCreateMirror) + EVT_MENU(MenuCreateMirrorInstance,MainFrame::onMenuCreateMirrorInstance) + EVT_MENU(MenuCreateRemoveMirrorInstance,MainFrame::onMenuCreateRemoveMirrorInstance) + + EVT_MENU(MenuModifyMerge,MainFrame::onMenuModifyMerge) + EVT_MENU(MenuModifyDetach,MainFrame::onMenuModifyDetach) + EVT_MENU(MenuModifyDeleteVertex,MainFrame::onMenuModifyDeleteVertex) + EVT_MENU(MenuModifyExtrude,MainFrame::onMenuModifyExtrude) + EVT_MENU(MenuModifySplit,MainFrame::onMenuModifySplit) + EVT_MENU(MenuModifyCollapse,MainFrame::onMenuModifyCollapse) + EVT_MENU(MenuModifyTargetWeld,MainFrame::onMenuModifyTargetWeld) + EVT_MENU(MenuModifyUpdateNormal,MainFrame::onMenuModifyUpdateNormal) + + EVT_MENU(MenuSubdivisionSubdivide,MainFrame::onMenuSubdivisionSubdivide) + EVT_MENU(MenuSubdivisionUnsubdivide,MainFrame::onMenuSubdivisionUnsubdivide) + EVT_MENU(MenuSubdivisionRefineControlMesh,MainFrame::onMenuSubdivisionRefineControlMesh) + + EVT_MENU(MenuSelectionSelectionMode,MainFrame::onMenuSelectionSelectionMode) + EVT_MENU(MenuSelectionVertexSelection,MainFrame::onMenuSelectionVertexSelection) + EVT_MENU(MenuSelectionEdgeSelection,MainFrame::onMenuSelectionEdgeSelection) + EVT_MENU(MenuSelectionFaceSelection,MainFrame::onMenuSelectionFaceSelection) + EVT_MENU(MenuSelectionObjectSelection,MainFrame::onMenuSelectionObjectSelection) + EVT_MENU(MenuSelectionSelectAll,MainFrame::onMenuSelectionSelectAll) + EVT_MENU(MenuSelectionInvertSelect,MainFrame::onMenuSelectionInvertSelect) + EVT_MENU(MenuSelectionFrameSelection,MainFrame::onMenuSelectionFrameSelection) + + EVT_MENU(MenuOptionMaterial,MainFrame::onMenuOptionMaterial) + EVT_MENU(MenuOptionObjectDisplayMode,MainFrame::onMenuOptionObjectDisplayMode) + EVT_MENU(MenuOptionObjectDisplayModeWireframe,MainFrame::onMenuOptionObjectDisplayModeWireframe) + EVT_MENU(MenuOptionObjectDisplayModeFlat,MainFrame::onMenuOptionObjectDisplayModeFlat) + EVT_MENU(MenuOptionObjectDisplayModeFlatWire,MainFrame::onMenuOptionObjectDisplayModeFlatWire) + EVT_MENU(MenuOptionObjectDisplayModeSmooth,MainFrame::onMenuOptionObjectDisplayModeSmooth) + EVT_MENU(MenuOptionObjectDisplayModeSmoothWire,MainFrame::onMenuOptionObjectDisplayModeSmoothWire) + EVT_MENU(MenuOptionHideSelection,MainFrame::onMenuOptionHideSelection) + EVT_MENU(MenuOptionHideUnselection,MainFrame::onMenuOptionHideUnselection) + EVT_MENU(MenuOptionShowAll,MainFrame::onMenuOptionShowAll) + EVT_MENU(MenuOptionViewportLayout,MainFrame::onMenuOptionViewportLayout) + EVT_MENU(MenuOptionViewportLayoutSingle,MainFrame::onMenuOptionViewportLayoutSingle) + EVT_MENU(MenuOptionViewportLayoutFourView,MainFrame::onMenuOptionViewportLayoutFourView) + EVT_MENU(MenuOptionViewportLayoutVerticalSplited,MainFrame::onMenuOptionViewportLayoutVerticalSplited) + EVT_MENU(MenuOptionViewportLayoutThreeView,MainFrame::onMenuOptionViewportLayoutThreeView) + EVT_MENU(MenuOptionViewportCamera,MainFrame::onMenuOptionViewportCamera) + EVT_MENU(MenuOptionViewportCameraPerspective,MainFrame::onMenuOptionViewportCameraPerspective) + EVT_MENU(MenuOptionViewportCameraTop,MainFrame::onMenuOptionViewportCameraTop) + EVT_MENU(MenuOptionViewportCameraBottom,MainFrame::onMenuOptionViewportCameraBottom) + EVT_MENU(MenuOptionViewportCameraLeft,MainFrame::onMenuOptionViewportCameraLeft) + EVT_MENU(MenuOptionViewportCameraRight,MainFrame::onMenuOptionViewportCameraRight) + EVT_MENU(MenuOptionViewportCameraFront,MainFrame::onMenuOptionViewportCameraFront) + EVT_MENU(MenuOptionViewportCameraBack,MainFrame::onMenuOptionViewportCameraBack) + EVT_MENU(MenuOptionShowGird,MainFrame::onMenuOptionShowGird) + EVT_MENU(MenuOptionSetViewportImage,MainFrame::onMenuOptionSetViewportImage) + EVT_MENU(MenuOptionDeleteViewportImage,MainFrame::onMenuOptionDeleteViewportImage) + EVT_MENU(MenuOptionSceneInfo,MainFrame::onMenuOptionSceneInfo) + + EVT_MENU(MenuHelpAbout,MainFrame::onMenuHelpAbout) +END_EVENT_TABLE() \ No newline at end of file diff --git a/Makefile.in b/Makefile.in new file mode 100755 index 0000000..61eb2b5 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,191 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.0 (http://bakefile.sourceforge.net) +# Do not modify, all changes will be overwritten! +# ========================================================================= + + +@MAKE_SET@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +INSTALL = @INSTALL@ +EXEEXT = @EXEEXT@ +WINDRES = @WINDRES@ +REZ = @REZ@ +SETFILE = @SETFILE@ +NM = @NM@ +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = @top_builddir@ +LDFLAGS_GUI = @LDFLAGS_GUI@ +CXX = @CXX@ +CXXFLAGS = @CXXFLAGS@ +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +WX_LIB_FLAVOUR = @WX_LIB_FLAVOUR@ +TOOLKIT = @TOOLKIT@ +TOOLKIT_LOWERCASE = @TOOLKIT_LOWERCASE@ +TOOLKIT_VERSION = @TOOLKIT_VERSION@ +TOOLCHAIN_FULLNAME = @TOOLCHAIN_FULLNAME@ +EXTRALIBS = @EXTRALIBS@ +EXTRALIBS_GUI = @EXTRALIBS_GUI@ +HOST_SUFFIX = @HOST_SUFFIX@ +SAMPLES_RPATH_FLAG = @SAMPLES_RPATH_FLAG@ +SAMPLES_RPATH_POSTLINK = @SAMPLES_RPATH_POSTLINK@ + +### Variables: ### + +DESTDIR = +WX_RELEASE = 2.6 +WX_VERSION = $(WX_RELEASE).3 +LIBDIRNAME = $(top_builddir)lib +MINIMAL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ + $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ + -I$(srcdir) $(__DLLFLAG_p) -I$(srcdir)/../../samples $(CPPFLAGS) $(CXXFLAGS) +MINIMAL_OBJECTS = \ + $(__minimal___win32rc) \ + $(__minimal_os2_lib_res) \ + minimal_minimal.o + +### Conditionally set variables: ### + +@COND_DEPS_TRACKING_0@CXXC = $(CXX) +@COND_DEPS_TRACKING_1@CXXC = $(top_builddir)./bk-deps $(CXX) +@COND_USE_GUI_0@PORTNAME = base +@COND_USE_GUI_1@PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION) +@COND_TOOLKIT_MAC@WXBASEPORT = _carbon +@COND_BUILD_DEBUG_DEBUG_FLAG_DEFAULT@WXDEBUGFLAG = d +@COND_DEBUG_FLAG_1@WXDEBUGFLAG = d +@COND_UNICODE_1@WXUNICODEFLAG = u +@COND_WXUNIV_1@WXUNIVNAME = univ +@COND_MONOLITHIC_0@EXTRALIBS_FOR_BASE = $(EXTRALIBS) +@COND_MONOLITHIC_1@EXTRALIBS_FOR_BASE = $(EXTRALIBS) $(EXTRALIBS_GUI) +@COND_MONOLITHIC_0@EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI) +@COND_MONOLITHIC_1@EXTRALIBS_FOR_GUI = +@COND_PLATFORM_MAC_1@__minimal___mac_setfilecmd = \ +@COND_PLATFORM_MAC_1@ $(SETFILE) -a C minimal$(EXEEXT) +@COND_PLATFORM_MAC_1@__minimal___mac_rezcmd = $(__MACOSX_RESOURCES_p_1) +@COND_WXUNIV_1@__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__ +@COND_WXUNIV_1@__WXUNIV_DEFINE_p_1 = -d __WXUNIVERSAL__ +@COND_WXUNIV_1@__WXUNIV_DEFINE_p_2 = --define __WXUNIVERSAL__ +@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS +@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_1 = -d wxNO_EXCEPTIONS +@COND_USE_EXCEPTIONS_0@__EXCEPTIONS_DEFINE_p_2 = --define wxNO_EXCEPTIONS +@COND_USE_RTTI_0@__RTTI_DEFINE_p = -DwxNO_RTTI +@COND_USE_RTTI_0@__RTTI_DEFINE_p_1 = -d wxNO_RTTI +@COND_USE_RTTI_0@__RTTI_DEFINE_p_2 = --define wxNO_RTTI +@COND_USE_THREADS_0@__THREAD_DEFINE_p = -DwxNO_THREADS +@COND_USE_THREADS_0@__THREAD_DEFINE_p_1 = -d wxNO_THREADS +@COND_USE_THREADS_0@__THREAD_DEFINE_p_2 = --define wxNO_THREADS +@COND_SHARED_1@__DLLFLAG_p = -DWXUSINGDLL +@COND_SHARED_1@__DLLFLAG_p_1 = -d WXUSINGDLL +@COND_SHARED_1@__DLLFLAG_p_2 = --define WXUSINGDLL +COND_PLATFORM_OS2_1___minimal___os2_emxbindcmd = $(NM) minimal$(EXEEXT) | if \ + grep -q pmwin.763 ; then emxbind -ep minimal$(EXEEXT) ; fi +@COND_PLATFORM_OS2_1@__minimal___os2_emxbindcmd = $(COND_PLATFORM_OS2_1___minimal___os2_emxbindcmd) +@COND_TOOLKIT_MSW@__RCDEFDIR_p = -i \ +@COND_TOOLKIT_MSW@ $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME) +@COND_TOOLKIT_MSW@__RCDEFDIR_p_1 = --include-dir \ +@COND_TOOLKIT_MSW@ $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME) +@COND_PLATFORM_WIN32_1@__minimal___win32rc = minimal_sample_rc.o +@COND_PLATFORM_OS2_1@__minimal_os2_lib_res = \ +@COND_PLATFORM_OS2_1@ $(top_srcdir)/include/wx/os2/wx.res +@COND_PLATFORM_MACOSX_1@__minimal_bundle___depname = minimal_bundle +@COND_TOOLKIT_COCOA@____minimal_BUNDLE_TGT_REF_DEP = \ +@COND_TOOLKIT_COCOA@ minimal.app/Contents/PkgInfo +@COND_TOOLKIT_MAC@____minimal_BUNDLE_TGT_REF_DEP = \ +@COND_TOOLKIT_MAC@ minimal.app/Contents/PkgInfo +COND_MONOLITHIC_0___WXLIB_CORE_p = \ + -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_MONOLITHIC_0@__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p) +COND_MONOLITHIC_0___WXLIB_BASE_p = \ + -lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_MONOLITHIC_0@__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p) +COND_MONOLITHIC_1___WXLIB_MONO_p = \ + -lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_MONOLITHIC_1@__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p) +@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@__LIB_TIFF_p \ +@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ = \ +@COND_USE_GUI_1_WXUSE_LIBTIFF_BUILTIN@ -lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN@__LIB_JPEG_p \ +@COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN@ = \ +@COND_USE_GUI_1_WXUSE_LIBJPEG_BUILTIN@ -lwxjpeg$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@__LIB_PNG_p \ +@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@ = \ +@COND_USE_GUI_1_WXUSE_LIBPNG_BUILTIN@ -lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_WXUSE_ZLIB_BUILTIN@__LIB_ZLIB_p = \ +@COND_WXUSE_ZLIB_BUILTIN@ -lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_WXUSE_ODBC_BUILTIN@__LIB_ODBC_p = \ +@COND_WXUSE_ODBC_BUILTIN@ -lwxodbc$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p = \ + -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +@COND_WXUSE_REGEX_BUILTIN@__LIB_REGEX_p = $(COND_WXUSE_REGEX_BUILTIN___LIB_REGEX_p) +@COND_WXUSE_EXPAT_BUILTIN@__LIB_EXPAT_p = \ +@COND_WXUSE_EXPAT_BUILTIN@ -lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) +COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_1 = $(REZ) -d __DARWIN__ -t APPL -d \ + __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) \ + $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) -i $(srcdir) $(__DLLFLAG_p_1) -i \ + $(srcdir)/../../samples $(__RCDEFDIR_p) -i $(top_srcdir)/include -o \ + minimal$(EXEEXT) Carbon.r sample.r +@COND_TOOLKIT_MAC@__MACOSX_RESOURCES_p_1 = $(COND_TOOLKIT_MAC___MACOSX_RESOURCES_p_1) + +### Targets: ### + +all: minimal$(EXEEXT) $(__minimal_bundle___depname) + +install: all + +uninstall: + +install-strip: install + +clean: + rm -rf ./.deps ./.pch + rm -f ./*.o + rm -f minimal$(EXEEXT) + rm -rf minimal.app + +distclean: clean + rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile + +minimal$(EXEEXT): $(MINIMAL_OBJECTS) $(__minimal___win32rc) + $(CXX) -o $@ $(MINIMAL_OBJECTS) $(LDFLAGS) -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(__LIB_ZLIB_p) $(__LIB_ODBC_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE) $(EXTRALIBS_FOR_GUI) + $(__minimal___mac_rezcmd) + $(__minimal___mac_setfilecmd) + $(__minimal___os2_emxbindcmd) + $(SAMPLES_RPATH_POSTLINK) + +minimal.app/Contents/PkgInfo: minimal$(EXEEXT) $(top_srcdir)/src/mac/carbon/Info.plist.in $(top_srcdir)/src/mac/carbon/wxmac.icns + mkdir -p minimal.app/Contents + mkdir -p minimal.app/Contents/MacOS + mkdir -p minimal.app/Contents/Resources + + + sed -e "s/IDENTIFIER/`echo $(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`/" \ + -e "s/EXECUTABLE/minimal/" \ + -e "s/VERSION/$(WX_VERSION)/" \ + $(top_srcdir)/src/mac/carbon/Info.plist.in >minimal.app/Contents/Info.plist + + + echo -n "APPL????" >minimal.app/Contents/PkgInfo + + + ln -f minimal$(EXEEXT) minimal.app/Contents/MacOS/minimal + + + cp -f $(top_srcdir)/src/mac/carbon/wxmac.icns minimal.app/Contents/Resources/wxmac.icns + +@COND_PLATFORM_MACOSX_1@minimal_bundle: $(____minimal_BUNDLE_TGT_REF_DEP) + +minimal_sample_rc.o: $(srcdir)/../../samples/sample.rc + $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_2) $(__EXCEPTIONS_DEFINE_p_2) $(__RTTI_DEFINE_p_2) $(__THREAD_DEFINE_p_2) --include-dir $(srcdir) $(__DLLFLAG_p_2) --include-dir $(srcdir)/../../samples $(__RCDEFDIR_p_1) --include-dir $(top_srcdir)/include + +minimal_minimal.o: $(srcdir)/minimal.cpp + $(CXXC) -c -o $@ $(MINIMAL_CXXFLAGS) $(srcdir)/minimal.cpp + + +# Include dependency info, if present: +@IF_GNU_MAKE@-include .deps/*.d + +.PHONY: all install uninstall clean distclean minimal_bundle diff --git a/MaterialDialog.cpp b/MaterialDialog.cpp new file mode 100755 index 0000000..4c1a9bc --- /dev/null +++ b/MaterialDialog.cpp @@ -0,0 +1,216 @@ + + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP +#include +#endif //WX_PRECOMP + +#include + +#include "MaterialDialog.h" +#include "Scene.h" +/////////////////////////////////////////////////////////////////////////// + +BEGIN_EVENT_TABLE(MaterialDialog , wxDialog) + EVT_BUTTON(onAmbientButtonMaterialEdit,MaterialDialog::onAmbientButton) + EVT_BUTTON(onDiffuseButtonMaterialEdit,MaterialDialog::onDiffuseButton) + EVT_BUTTON(onSpecularButtonMaterialEdit,MaterialDialog::onSpecularButton) + EVT_BUTTON(onEmissionButtonMaterialEdit,MaterialDialog::onEmissionButton) + EVT_BUTTON(onOKButtonPressMaterialEdit, MaterialDialog::onOKButton) + EVT_BUTTON(onCancelButtonPressMaterialEdit,MaterialDialog::onCancelButton) +END_EVENT_TABLE() + +MaterialDialog::MaterialDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ) +{ + wxBoxSizer* mainSizer; + mainSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* settingSizer; + settingSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("Material:") ), wxVERTICAL ); + + wxGridSizer* settingGirdSizer; + settingGirdSizer = new wxGridSizer( 2, 2, 0, 0 ); + + ambientStaticText = new wxStaticText( this, ID_DEFAULT , wxT("ambient:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( ambientStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + ambientButton = new wxButton( this,onAmbientButtonMaterialEdit, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); + ambientButton->SetBackgroundColour( wxColour( 38, 21, 249 ) ); + + settingGirdSizer->Add( ambientButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5 ); + + diffuseStaticText = new wxStaticText( this, ID_DEFAULT, wxT("diffuse:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( diffuseStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + diffuseButton = new wxButton( this,onDiffuseButtonMaterialEdit, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); + diffuseButton->SetBackgroundColour( wxColour( 247, 51, 40 ) ); + + settingGirdSizer->Add( diffuseButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5 ); + + specularStaticText = new wxStaticText( this, ID_DEFAULT, wxT("specular:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( specularStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + specularButton = new wxButton( this, onSpecularButtonMaterialEdit, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); + specularButton->SetBackgroundColour( wxColour( 253, 243, 55 ) ); + + settingGirdSizer->Add( specularButton, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); + + emissionStaticText = new wxStaticText( this, ID_DEFAULT, wxT("emission:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( emissionStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + emissionButton = new wxButton( this,onEmissionButtonMaterialEdit, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); + emissionButton->SetBackgroundColour( wxColour( 134, 248, 73 ) ); + + settingGirdSizer->Add( emissionButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + shininessStaticText = new wxStaticText( this, ID_DEFAULT, wxT("shininess:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( shininessStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + shininessSlider = new wxSlider( this, ID_DEFAULT, 10, 0, 20, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL ); + settingGirdSizer->Add( shininessSlider, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + settingSizer->Add( settingGirdSizer, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + mainSizer->Add( settingSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxBoxSizer* buttonSizer; + buttonSizer = new wxBoxSizer( wxHORIZONTAL ); + + OKButton = new wxButton( this, onOKButtonPressMaterialEdit, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( OKButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + cancelButton = new wxButton( this, onCancelButtonPressMaterialEdit, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( cancelButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainSizer->Add( buttonSizer, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + this->SetSizer( mainSizer ); + this->Layout(); + Fit(); + initializeData(); +} + + +//MaterialDialog::~MaterialDialog(void){} +void MaterialDialog::initializeData() +{ + float ambient[4]={0.0f}; + float diffuse[4]={0.0f}; + float specular[4]={0.0f}; + float emission[4]={0.0f}; + float shininess=0.0f; + theScene->getSelectionMaterial(ambient,diffuse,specular,emission,&shininess); + ambientButton->SetBackgroundColour( wxColour( 255.0f*ambient[0],255.0f*ambient[1],255.0f*ambient[2] ) ); + diffuseButton->SetBackgroundColour( wxColour( 255.0f*diffuse[0],255.0f*diffuse[1],255.0f*diffuse[2] ) ); + specularButton->SetBackgroundColour( wxColour( 255.0f*specular[0],255.0f*specular[1],255.0f*specular[2] ) ); + emissionButton->SetBackgroundColour( wxColour( 255.0f*emission[0],255.0f*emission[1],255.0f*emission[2] ) ); + shininessSlider->SetValue(shininess); +} + +void MaterialDialog::onAmbientButton(wxCommandEvent& event) +{ + wxColourData colorData; + colorData.SetColour(ambientButton->GetBackgroundColour()); + wxColourDialog dialog(this, &colorData); + dialog.SetTitle(_T("Choose the ambient colour:")); + if (dialog.ShowModal() == wxID_OK) + { + colorData = dialog.GetColourData(); + ambientButton->SetBackgroundColour(colorData.GetColour()); + Refresh(false); + } + event; +}; + +void MaterialDialog::onDiffuseButton(wxCommandEvent& event) +{ + wxColourData colorData; + colorData.SetColour(diffuseButton->GetBackgroundColour()); + wxColourDialog dialog(this, &colorData); + dialog.SetTitle(_T("Choose the diffuse colour:")); + if (dialog.ShowModal() == wxID_OK) + { + colorData = dialog.GetColourData(); + diffuseButton->SetBackgroundColour(colorData.GetColour()); + Refresh(false); + } + event; +}; + +void MaterialDialog::onSpecularButton(wxCommandEvent& event) +{ + wxColourData colorData; + colorData.SetColour(specularButton->GetBackgroundColour()); + wxColourDialog dialog(this, &colorData); + dialog.SetTitle(_T("Choose the specular colour:")); + if (dialog.ShowModal() == wxID_OK) + { + colorData = dialog.GetColourData(); + specularButton->SetBackgroundColour(colorData.GetColour()); + Refresh(false); + } + event; +}; + +void MaterialDialog::onEmissionButton(wxCommandEvent& event) +{ + wxColourData colorData; + colorData.SetColour(emissionButton->GetBackgroundColour()); + wxColourDialog dialog(this, &colorData); + dialog.SetTitle(_T("Choose the emission colour:")); + if (dialog.ShowModal() == wxID_OK) + { + colorData = dialog.GetColourData(); + emissionButton->SetBackgroundColour(colorData.GetColour()); + Refresh(false); + } + event; +}; + +void MaterialDialog::onOKButton(wxCommandEvent& event) +{ + float ambient[4]; + float diffuse[4]; + float specular[4]; + float emission[4]; + float shininess=shininessSlider->GetValue(); + + float factor=1.0f/255.0f; + wxColour theColor(ambientButton->GetBackgroundColour()); + ambient[0]=((float)theColor.Red())*factor; + ambient[1]=((float)theColor.Green())*factor; + ambient[2]=((float)theColor.Blue())*factor; + ambient[3]=1.0f; + + theColor=diffuseButton->GetBackgroundColour(); + diffuse[0]=((float)theColor.Red())*factor; + diffuse[1]=((float)theColor.Green())*factor; + diffuse[2]=((float)theColor.Blue())*factor; + diffuse[3]=1.0f; + + theColor=specularButton->GetBackgroundColour(); + specular[0]=((float)theColor.Red())*factor; + specular[1]=((float)theColor.Green())*factor; + specular[2]=((float)theColor.Blue())*factor; + specular[3]=1.0f; + + theColor=emissionButton->GetBackgroundColour(); + emission[0]=((float)theColor.Red())*factor; + emission[1]=((float)theColor.Green())*factor; + emission[2]=((float)theColor.Blue())*factor; + emission[3]=1.0f; + + theScene->setSelectionMaterial(ambient,diffuse,specular,emission,shininess); + + Close(); + event; +}; + +void MaterialDialog::onCancelButton(wxCommandEvent& event) +{ + Close(); + event; +}; \ No newline at end of file diff --git a/MaterialDialog.h b/MaterialDialog.h new file mode 100755 index 0000000..f1310ab --- /dev/null +++ b/MaterialDialog.h @@ -0,0 +1,62 @@ +#pragma once +#ifdef WX_GCH +#include +#else +#include +#endif + +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + +/** + * Class MaterialDialog + */ +class MaterialDialog : public wxDialog +{ + private: + + protected: + wxStaticText* ambientStaticText; + wxButton* ambientButton; + wxStaticText* diffuseStaticText; + wxButton* diffuseButton; + wxStaticText* specularStaticText; + wxButton* specularButton; + wxStaticText* emissionStaticText; + wxButton* emissionButton; + wxStaticText* shininessStaticText; + wxSlider* shininessSlider; + wxButton* OKButton; + wxButton* cancelButton; + + public: + void initializeData(); + MaterialDialog( wxWindow* parent, int id = -1, wxString title = wxT(""), wxPoint pos = wxDefaultPosition, wxSize size = wxDefaultSize, int style = wxDEFAULT_DIALOG_STYLE ); + void onAmbientButton(wxCommandEvent& event); + void onDiffuseButton(wxCommandEvent& event); + void onSpecularButton(wxCommandEvent& event); + void onEmissionButton(wxCommandEvent& event); + void onOKButton(wxCommandEvent& event); + void onCancelButton(wxCommandEvent& event); + DECLARE_EVENT_TABLE() +}; + +enum +{ + onAmbientButtonMaterialEdit=234, + onDiffuseButtonMaterialEdit, + onSpecularButtonMaterialEdit, + onEmissionButtonMaterialEdit, + onOKButtonMaterialEdit, + onCancelButtonMaterialEdit, + onOKButtonPressMaterialEdit, + onCancelButtonPressMaterialEdit +}; + diff --git a/Matrix.cpp b/Matrix.cpp new file mode 100755 index 0000000..2e62b36 --- /dev/null +++ b/Matrix.cpp @@ -0,0 +1,48 @@ +#pragma once +#include "Matrix.h" +#include "Quaternion.h" + +void Matrix::lerp(const Matrix& m1, const Matrix& m2,float t) +{ + Quaternion q1(m1),q2(m2),qt; + qt.lerp(q1,q2,t); + qt.getMatrix(*this); + m[3][0]=m1.m[3][0]*(1-t)+m2.m[3][0]*t; + m[3][1]=m1.m[3][1]*(1-t)+m2.m[3][1]*t; + m[3][2]=m1.m[3][2]*(1-t)+m2.m[3][2]*t; +} + +void Matrix::rotate( float ang, const Vector& dir ) +{ + static Matrix m; + m.setRotation(ang,dir); + *this=*this*m; +} + +void Matrix::setRotation( float ang, const Vector& dir2 ) +{ + Vector dir(dir2); + dir.normalize(); + + ang*=-psPIOVER180; + + float fCos=cosf( ang ); + float fSin=sinf( ang ); + + m[0][0] = ( dir.x * dir.x ) * ( 1.0f - fCos ) + fCos; + m[0][1] = ( dir.x * dir.y ) * ( 1.0f - fCos ) - (dir.z * fSin); + m[0][2] = ( dir.x * dir.z ) * ( 1.0f - fCos ) + (dir.y * fSin); + + m[1][0] = ( dir.y * dir.x ) * ( 1.0f - fCos ) + (dir.z * fSin); + m[1][1] = ( dir.y * dir.y ) * ( 1.0f - fCos ) + fCos ; + m[1][2] = ( dir.y * dir.z ) * ( 1.0f - fCos ) - (dir.x * fSin); + + m[2][0] = ( dir.z * dir.x ) * ( 1.0f - fCos ) - (dir.y * fSin); + m[2][1] = ( dir.z * dir.y ) * ( 1.0f - fCos ) + (dir.x * fSin); + m[2][2] = ( dir.z * dir.z ) * ( 1.0f - fCos ) + fCos; + + m[0][3] = m[1][3] = m[2][3] = 0; + m[3][0] = m[3][1] = m[3][2] = 0; + m[3][3] = 1; +} + diff --git a/Matrix.h b/Matrix.h new file mode 100755 index 0000000..48c1164 --- /dev/null +++ b/Matrix.h @@ -0,0 +1,99 @@ +#pragma once +#include "TheMath.h" +#include "Vector.h" + +class Matrix +{ + public: + float m[4][4]; //!< matrix elements + + //! Default constructor, sets the identity matrix + Matrix() + { + m[0][0]=m[1][1]=m[2][2]=m[3][3]=1.0f; + m[0][1]=m[0][2]=m[0][3]=0.0f; + m[1][0]=m[1][2]=m[1][3]=0.0f; + m[2][0]=m[2][1]=m[2][3]=0.0f; + m[3][0]=m[3][1]=m[3][2]=0.0f; + }; + + //! Copy-constructor + Matrix(const Matrix& in) + { + m[0][0]=in.m[0][0]; m[0][1]=in.m[0][1]; m[0][2]=in.m[0][2]; m[0][3]=in.m[0][3]; + m[1][0]=in.m[1][0]; m[1][1]=in.m[1][1]; m[1][2]=in.m[1][2]; m[1][3]=in.m[1][3]; + m[2][0]=in.m[2][0]; m[2][1]=in.m[2][1]; m[2][2]=in.m[2][2]; m[2][3]=in.m[2][3]; + m[3][0]=in.m[3][0]; m[3][1]=in.m[3][1]; m[3][2]=in.m[3][2]; m[3][3]=in.m[3][3]; + }; + + //! Atribuition operator + void operator=(const Matrix& in) + { + m[0][0]=in.m[0][0]; m[0][1]=in.m[0][1]; m[0][2]=in.m[0][2]; m[0][3]=in.m[0][3]; + m[1][0]=in.m[1][0]; m[1][1]=in.m[1][1]; m[1][2]=in.m[1][2]; m[1][3]=in.m[1][3]; + m[2][0]=in.m[2][0]; m[2][1]=in.m[2][1]; m[2][2]=in.m[2][2]; m[2][3]=in.m[2][3]; + m[3][0]=in.m[3][0]; m[3][1]=in.m[3][1]; m[3][2]=in.m[3][2]; m[3][3]=in.m[3][3]; + }; + + //! Nullify all elements + inline void null(void) + { + m[0][0]=m[0][1]=m[0][2]=m[0][3]= + m[1][0]=m[1][1]=m[1][2]=m[1][3]= + m[2][0]=m[2][1]=m[2][2]=m[2][3]= + m[3][0]=m[3][1]=m[3][2]=m[3][3]=0.0f; + }; + + //! Load the identity matrix + inline void load_identity(void) + { + m[0][0]=m[1][1]=m[2][2]=m[3][3]=1.0f; + m[0][1]=m[0][2]=m[0][3]=0.0f; + m[1][0]=m[1][2]=m[1][3]=0.0f; + m[2][0]=m[2][1]=m[2][3]=0.0f; + m[3][0]=m[3][1]=m[3][2]=0.0f; + }; + + //! Set the matrix as the rotation matrix of angle given by 'ang' around direction 'dir' + void setRotation( float ang, const Vector& dir ); + //! Multiply the matrix by another with rotation given by 'ang' around direction 'dir' + void rotate( float ang, const Vector& dir ); + //! Interpolate between two rotation matrices using quaternions + void lerp(const Matrix& m1, const Matrix& m2,float t); + + //! Multiplication operator + inline Matrix operator*(const Matrix& m1) const + { + Matrix m2; + int i,j; + for(i=0; i<4; i++) + for(j=0; j<4; j++) + { + m2.m[i][j] = m[i][0]*m1.m[0][j] + m[i][1]*m1.m[1][j] + + m[i][2]*m1.m[2][j] + m[i][3]*m1.m[3][j]; + } + return m2; + } +}; + +inline Vector operator*(const Vector& v,const Matrix& m) +{ + Vector r; + register float *f=(float *)&m; + r.x = v.x*f[0] + v.y*f[4] + v.z*f[8] + v.w*f[12]; + r.y = v.x*f[1] + v.y*f[5] + v.z*f[9] + v.w*f[13]; + r.z = v.x*f[2] + v.y*f[6] + v.z*f[10] + v.w*f[14]; + r.w = v.x*f[3] + v.y*f[7] + v.z*f[11] + v.w*f[15]; + return r; +} +//! Multiplies a matrix by a vector +inline Vector operator*(const Matrix& m, const Vector& v) +{ + Vector r; + register float *f=(float *)&m; + r.x = v.x*f[0] + v.y*f[4] + v.z*f[8] + v.w*f[12]; + r.y = v.x*f[1] + v.y*f[5] + v.z*f[9] + v.w*f[13]; + r.z = v.x*f[2] + v.y*f[6] + v.z*f[10] + v.w*f[14]; + r.w = v.x*f[3] + v.y*f[7] + v.z*f[11] + v.w*f[15]; + return r; +} \ No newline at end of file diff --git a/NewCubeDialog.cpp b/NewCubeDialog.cpp new file mode 100755 index 0000000..543d439 --- /dev/null +++ b/NewCubeDialog.cpp @@ -0,0 +1,162 @@ + +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Aug 16 2006) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP +#include +#endif //WX_PRECOMP + +#include "NewCubeDialog.h" +#include "Scene.h" + +/////////////////////////////////////////////////////////////////////////// + +BEGIN_EVENT_TABLE(NewCubeDialog, wxDialog) + EVT_BUTTON(onOKButtonPressCube, NewCubeDialog::onOKButton) + EVT_BUTTON(onCancelButtonPressCube,NewCubeDialog::onCancelButton) +END_EVENT_TABLE() + +NewCubeDialog::NewCubeDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ) +{ + wxBoxSizer* mainBoxSizer; + mainBoxSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* settingSizer; + settingSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("New Cube") ), wxVERTICAL ); + + wxGridSizer* mainGirdSizer; + mainGirdSizer = new wxGridSizer( 9, 2, 0, 0 ); + + xStaticText = new wxStaticText( this, ID_DEFAULT, wxT("x:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( xStaticText, 0, wxALL, 5 ); + + xTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0,wxTextValidator(wxFILTER_NUMERIC,NULL) ); + mainGirdSizer->Add( xTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + yStaticText = new wxStaticText( this, ID_DEFAULT, wxT("y:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( yStaticText, 0, wxALL, 5 ); + + yTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( yTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + ZStaticText = new wxStaticText( this, ID_DEFAULT, wxT("z:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( ZStaticText, 0, wxALL, 5 ); + + zTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( zTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + lengthStaticText = new wxStaticText( this, ID_DEFAULT, wxT("length(x):"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( lengthStaticText, 0, wxALL, 5 ); + + lengthTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( lengthTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + widthStaticText = new wxStaticText( this, ID_DEFAULT, wxT("width(y):"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( widthStaticText, 0, wxALL, 5 ); + + widthTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( widthTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + heightStaticText = new wxStaticText( this, ID_DEFAULT, wxT("height(z):"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( heightStaticText, 0, wxALL, 5 ); + + heightTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( heightTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + segmentXStaticText = new wxStaticText( this, ID_DEFAULT, wxT("segment x:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( segmentXStaticText, 0, wxALL, 5 ); + + segmentXTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0,wxTextValidator(wxFILTER_NUMERIC,NULL) ); + mainGirdSizer->Add( segmentXTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + segmentYStaticText = new wxStaticText( this, ID_DEFAULT, wxT("segment y:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( segmentYStaticText, 0, wxALL, 5 ); + + segmentYTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( segmentYTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + segmentZStaticText = new wxStaticText( this, ID_DEFAULT, wxT("segment z:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( segmentZStaticText, 0, wxALL, 5 ); + + segmentZTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0,wxTextValidator(wxFILTER_NUMERIC,NULL) ); + mainGirdSizer->Add( segmentZTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + settingSizer->Add( mainGirdSizer, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainBoxSizer->Add( settingSizer, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + wxBoxSizer* buttonBoxSizer; + buttonBoxSizer = new wxBoxSizer( wxHORIZONTAL ); + + OKButton = new wxButton( this, onOKButtonPressCube, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonBoxSizer->Add( OKButton, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 ); + + cancelButton = new wxButton( this, onCancelButtonPressCube, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonBoxSizer->Add( cancelButton, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 ); + + mainBoxSizer->Add( buttonBoxSizer, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxTOP|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 ); + + this->SetSizer( mainBoxSizer ); + this->Layout(); + this->Fit(); + initializeData(); +} + +void NewCubeDialog::onOKButton(wxCommandEvent& event) +{ + double x; + double y; + double z; + double length; + double width; + double height; + unsigned long segmentX; + unsigned long segmentY; + unsigned long segmentZ; + + wxString xString=xTextCtrl->GetValue(); + wxString yString=yTextCtrl->GetValue(); + wxString zString=zTextCtrl->GetValue(); + wxString lengthString=lengthTextCtrl->GetValue(); + wxString widthString=widthTextCtrl->GetValue(); + wxString heightString=heightTextCtrl->GetValue(); + wxString segmentXString=segmentXTextCtrl->GetValue(); + wxString segmentYString=segmentYTextCtrl->GetValue(); + wxString segmentZString=segmentZTextCtrl->GetValue(); + + if(xString.ToDouble(&x) && yString.ToDouble(&y) && zString.ToDouble(&z) && lengthString.ToDouble(&length)&& widthString.ToDouble(&width)&& heightString.ToDouble(&height)&&segmentXString.ToULong(&segmentX) && segmentYString.ToULong(&segmentY)&&segmentZString.ToULong(&segmentZ)) + { + if(length>0 && width>0 && height>0 && segmentX>0 && segmentY>0 && segmentZ>0) + { + theScene->newCube(x,y,z,length,width,height,segmentX,segmentY,segmentZ); + Close(); + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + event; +} + +void NewCubeDialog::onCancelButton(wxCommandEvent& event) +{ + Close(); + event; +} \ No newline at end of file diff --git a/NewCubeDialog.h b/NewCubeDialog.h new file mode 100755 index 0000000..92e96d7 --- /dev/null +++ b/NewCubeDialog.h @@ -0,0 +1,80 @@ +#pragma once + +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Aug 16 2006) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +// Define WX_GCH in order to support precompiled headers with GCC compiler. +// You have to create the header "wx_pch.h" and include all files needed +// for compile your gui inside it. +// Then, compile it and place the file "wx_pch.h.gch" into the same +// directory that "wx_pch.h". +#ifdef WX_GCH +#include +#else +#include +#endif + +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + + +/** + * Class NewCubeDialog + */ +class NewCubeDialog : public wxDialog +{ + private: + + protected: + wxStaticText* xStaticText; + wxTextCtrl* xTextCtrl; + wxStaticText* yStaticText; + wxTextCtrl* yTextCtrl; + wxStaticText* ZStaticText; + wxTextCtrl* zTextCtrl; + wxStaticText* lengthStaticText; + wxTextCtrl* lengthTextCtrl; + wxStaticText* widthStaticText; + wxTextCtrl* widthTextCtrl; + wxStaticText* heightStaticText; + wxTextCtrl* heightTextCtrl; + wxStaticText* segmentXStaticText; + wxTextCtrl* segmentXTextCtrl; + wxStaticText* segmentYStaticText; + wxTextCtrl* segmentYTextCtrl; + wxStaticText* segmentZStaticText; + wxTextCtrl* segmentZTextCtrl; + wxButton* OKButton; + wxButton* cancelButton; + + public: + NewCubeDialog( wxWindow* parent, int id = -1, wxString title = wxT("New Cube"), wxPoint pos = wxDefaultPosition, wxSize size = wxSize( -1,-1 ), int style = wxDEFAULT_DIALOG_STYLE ); + void initializeData() + { + (*xTextCtrl)<<0.0f; + (*yTextCtrl)<<0.0f; + (*zTextCtrl)<<0.0f; + (*lengthTextCtrl)<<100.0f; + (*widthTextCtrl)<<100.0f; + (*heightTextCtrl)<<100.0f; + (*segmentXTextCtrl)<<1; + (*segmentYTextCtrl)<<1; + (*segmentZTextCtrl)<<1; + }; + void onOKButton(wxCommandEvent& event); + void onCancelButton(wxCommandEvent& event); + DECLARE_EVENT_TABLE() +}; + +enum +{ + onOKButtonPressCube=234, + onCancelButtonPressCube +}; \ No newline at end of file diff --git a/NewCylinderDialog.cpp b/NewCylinderDialog.cpp new file mode 100755 index 0000000..65c5338 --- /dev/null +++ b/NewCylinderDialog.cpp @@ -0,0 +1,175 @@ +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP +#include +#endif //WX_PRECOMP + +#include "NewCylinderDialog.h" +#include "scene.h" + +/////////////////////////////////////////////////////////////////////////// + +BEGIN_EVENT_TABLE(NewCylinderDialog, wxDialog) + EVT_BUTTON(onOKButtonPressCylinder, NewCylinderDialog::onOKButton) + EVT_BUTTON(onCancelButtonPressCylinder,NewCylinderDialog::onCancelButton) +END_EVENT_TABLE() + +NewCylinderDialog::NewCylinderDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ) +{ + wxBoxSizer* mainBoxSizer; + mainBoxSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* staticBoxSizer; + staticBoxSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("New Cylinder:") ), wxVERTICAL ); + + wxGridSizer* settingSizer; + settingSizer = new wxGridSizer( 2, 2, 0, 0 ); + + xStaticText = new wxStaticText( this, ID_DEFAULT, wxT("x:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( xStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + xTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( xTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + yStaticText = new wxStaticText( this, ID_DEFAULT, wxT("y:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( yStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + yTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( yTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + zStaticText = new wxStaticText( this, ID_DEFAULT, wxT("z:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( zStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + zTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( zTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + radiusStaticText = new wxStaticText( this, ID_DEFAULT, wxT("radius:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( radiusStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + radiusTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( radiusTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + heightStaticText = new wxStaticText( this, ID_DEFAULT, wxT("height:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( heightStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + heightTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( heightTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + axisStaticText = new wxStaticText( this, ID_DEFAULT, wxT("Axis:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( axisStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxString axisChoiceChoices[] = { wxT("x"), wxT("y"), wxT("z") }; + int axisChoiceNChoices = sizeof( axisChoiceChoices ) / sizeof( wxString ); + axisChoice = new wxChoice( this, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, axisChoiceNChoices, axisChoiceChoices, 0 ); + axisChoice->SetSelection(2); + settingSizer->Add( axisChoice, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + segmentAStaticText = new wxStaticText( this, ID_DEFAULT, wxT("segment a:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( segmentAStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + segmentATextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( segmentATextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + segmentRStaticText = new wxStaticText( this, ID_DEFAULT, wxT("segment r:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( segmentRStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + segmentRTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( segmentRTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + segmentHStaticText = new wxStaticText( this, ID_DEFAULT, wxT("segment h:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( segmentHStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + segmentHTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( segmentHTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + staticBoxSizer->Add( settingSizer, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainBoxSizer->Add( staticBoxSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + wxBoxSizer* buttonBoxSizer; + buttonBoxSizer = new wxBoxSizer( wxHORIZONTAL ); + + OKButton = new wxButton( this, onOKButtonPressCylinder, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonBoxSizer->Add( OKButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + cancelButton = new wxButton( this, onCancelButtonPressCylinder, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonBoxSizer->Add( cancelButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainBoxSizer->Add( buttonBoxSizer, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + this->SetSizer( mainBoxSizer ); + this->Layout(); + this->Fit(); + initializeData(); +} + +//NewCylinderDialog::~NewCylinderDialog(void){} + +void NewCylinderDialog::onOKButton(wxCommandEvent& event) +{ + double x; + double y; + double z; + double radius; + double height; + unsigned long segmentA; + unsigned long segmentR; + unsigned long segmentH; + + wxString xString=xTextCtrl->GetValue(); + wxString yString=yTextCtrl->GetValue(); + wxString zString=zTextCtrl->GetValue(); + wxString radiusString=radiusTextCtrl->GetValue(); + wxString heightString=heightTextCtrl->GetValue(); + wxString segmentAString=segmentATextCtrl->GetValue(); + wxString segmentRString=segmentRTextCtrl->GetValue(); + wxString segmentHString=segmentHTextCtrl->GetValue(); + + if(xString.ToDouble(&x) && yString.ToDouble(&y) && zString.ToDouble(&z) && radiusString.ToDouble(&radius) && heightString.ToDouble(&height) && segmentAString.ToULong(&segmentA) && segmentRString.ToULong(&segmentR) && segmentHString.ToULong(&segmentH)) + { + if(radius>0 && height>0 && segmentA>2 && segmentH>0 && segmentR>0) + { + if(axisChoice->GetCurrentSelection()==0) + { + theScene->newCylinder(x,y,z,radius,height,AxisMode::axisX,segmentA,segmentR,segmentH); + Close(); + } + else if(axisChoice->GetCurrentSelection()==1) + { + theScene->newCylinder(x,y,z,radius,height,AxisMode::axisY,segmentA,segmentR,segmentH); + Close(); + } + else if(axisChoice->GetCurrentSelection()==2) + { + theScene->newCylinder(x,y,z,radius,height,AxisMode::axisZ,segmentA,segmentR,segmentH); + Close(); + } + else + { + wxMessageBox(wxT("Wrong axis mode!"),wxT("Wrong Axis Mode"),wxICON_ERROR | wxOK, this); + return; + } + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + event; +}; + +void NewCylinderDialog::onCancelButton(wxCommandEvent& event) +{ + Close(); + event; +}; diff --git a/NewCylinderDialog.h b/NewCylinderDialog.h new file mode 100755 index 0000000..6af7f76 --- /dev/null +++ b/NewCylinderDialog.h @@ -0,0 +1,75 @@ +#pragma once + +// Define WX_GCH in order to support precompiled headers with GCC compiler. +// You have to create the header "wx_pch.h" and include all files needed +// for compile your gui inside it. +// Then, compile it and place the file "wx_pch.h.gch" into the same +// directory that "wx_pch.h". +#ifdef WX_GCH +#include +#else +#include +#endif + +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + +/** + * Class NewCylinderDialog + */ +class NewCylinderDialog : public wxDialog +{ + private: + + protected: + wxStaticText* xStaticText; + wxTextCtrl* xTextCtrl; + wxStaticText* yStaticText; + wxTextCtrl* yTextCtrl; + wxStaticText* zStaticText; + wxTextCtrl* zTextCtrl; + wxStaticText* radiusStaticText; + wxTextCtrl* radiusTextCtrl; + wxStaticText* heightStaticText; + wxTextCtrl* heightTextCtrl; + wxStaticText* axisStaticText; + wxChoice* axisChoice; + wxStaticText* segmentAStaticText; + wxTextCtrl* segmentATextCtrl; + wxStaticText* segmentRStaticText; + wxTextCtrl* segmentRTextCtrl; + wxStaticText* segmentHStaticText; + wxTextCtrl* segmentHTextCtrl; + wxButton* OKButton; + wxButton* cancelButton; + + public: + NewCylinderDialog( wxWindow* parent, int id = -1, wxString title = wxT(""), wxPoint pos = wxDefaultPosition, wxSize size = wxDefaultSize, int style = wxDEFAULT_DIALOG_STYLE ); + void initializeData() + { + (*xTextCtrl)<<0.0f; + (*yTextCtrl)<<0.0f; + (*zTextCtrl)<<0.0f; + (*radiusTextCtrl)<<50.0f; + (*heightTextCtrl)<<80.0f; + axisChoice->SetSelection(2); + (*segmentATextCtrl)<<8; + (*segmentRTextCtrl)<<1; + (*segmentHTextCtrl)<<1; + }; + void onOKButton(wxCommandEvent& event); + void onCancelButton(wxCommandEvent& event); + DECLARE_EVENT_TABLE() +}; + +enum{ + onOKButtonPressCylinder=234, + onCancelButtonPressCylinder +}; diff --git a/NewPlaneDialog.cpp b/NewPlaneDialog.cpp new file mode 100755 index 0000000..7379dbd --- /dev/null +++ b/NewPlaneDialog.cpp @@ -0,0 +1,163 @@ + + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP +#include +#endif //WX_PRECOMP + +#include "NewPlaneDialog.h" +#include "Scene.h" + +/////////////////////////////////////////////////////////////////////////// +BEGIN_EVENT_TABLE(NewPlaneDialog, wxDialog) + EVT_BUTTON(onOKButtonPressPlane, NewPlaneDialog::onOKButton) + EVT_BUTTON(onCancelButtonPressPlane,NewPlaneDialog::onCancelButton) +END_EVENT_TABLE() + +NewPlaneDialog::NewPlaneDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ) +{ + wxBoxSizer* mainSizer; + mainSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* newPlaneStaticSizer; + newPlaneStaticSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("New Plane:") ), wxVERTICAL ); + + wxGridSizer* mainGirdSizer; + mainGirdSizer = new wxGridSizer( 2, 2, 0, 0 ); + + xStaticText = new wxStaticText( this, ID_DEFAULT, wxT("x:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( xStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + xTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( xTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + yStaticText = new wxStaticText( this, ID_DEFAULT, wxT("y:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( yStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + yTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( yTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + zStaticText = new wxStaticText( this, ID_DEFAULT, wxT("z:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( zStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + zTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( zTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + lengthStaticText = new wxStaticText( this, ID_DEFAULT, wxT("length:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( lengthStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + lengthTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( lengthTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + widthStaticText = new wxStaticText( this, ID_DEFAULT, wxT("width:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( widthStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + widthTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( widthTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + segmentLStaticText = new wxStaticText( this, ID_DEFAULT, wxT("segment length:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( segmentLStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + segmentLTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( segmentLTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + segmentWStaticText = new wxStaticText( this, ID_DEFAULT, wxT("segment width:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( segmentWStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + segmentWTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + mainGirdSizer->Add( segmentWTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + axisStaticText = new wxStaticText( this, ID_DEFAULT, wxT("axis:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( axisStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxString axisChoiceChoices[] = { wxT("x"), wxT("y"), wxT("z") }; + int axisChoiceNChoices = sizeof( axisChoiceChoices ) / sizeof( wxString ); + axisChoice = new wxChoice( this, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, axisChoiceNChoices, axisChoiceChoices, 0 ); + mainGirdSizer->Add( axisChoice, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + newPlaneStaticSizer->Add( mainGirdSizer, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainSizer->Add( newPlaneStaticSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxBoxSizer* buttonSizer; + buttonSizer = new wxBoxSizer( wxHORIZONTAL ); + + OKButton = new wxButton( this, onOKButtonPressPlane, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( OKButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + cancelButton = new wxButton( this, onCancelButtonPressPlane, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( cancelButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainSizer->Add( buttonSizer, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + this->SetSizer( mainSizer ); + this->Layout(); + Fit(); + initializeData(); +} + +void NewPlaneDialog::onOKButton(wxCommandEvent& event) +{ + double x; + double y; + double z; + double length; + double width; + unsigned long segmentL; + unsigned long segmentW; + + wxString xString=xTextCtrl->GetValue(); + wxString yString=yTextCtrl->GetValue(); + wxString zString=zTextCtrl->GetValue(); + wxString lengthString=lengthTextCtrl->GetValue(); + wxString widthString=widthTextCtrl->GetValue(); + wxString segmentLString=segmentLTextCtrl->GetValue(); + wxString segmentWString=segmentWTextCtrl->GetValue(); + + if(xString.ToDouble(&x) && yString.ToDouble(&y) && zString.ToDouble(&z) && lengthString.ToDouble(&length) && widthString.ToDouble(&width) && segmentLString.ToULong(&segmentL) && segmentWString.ToULong(&segmentW)) + { + if(length>0 && width>0 && segmentL>0 && segmentW>0) + { + if(axisChoice->GetCurrentSelection()==0) + { + theScene->newPlane(x,y,z,length,width,AxisMode::axisX,segmentL,segmentW); + Close(); + } + else if(axisChoice->GetCurrentSelection()==1) + { + theScene->newPlane(x,y,z,length,width,AxisMode::axisY,segmentL,segmentW); + Close(); + } + else if(axisChoice->GetCurrentSelection()==2) + { + theScene->newPlane(x,y,z,length,width,AxisMode::axisZ,segmentL,segmentW); + Close(); + } + else + { + wxMessageBox(wxT("Wrong axis mode!"),wxT("Wrong Axis Mode"),wxICON_ERROR | wxOK, this); + return; + } + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + event; +} + +void NewPlaneDialog::onCancelButton(wxCommandEvent& event) +{ + Close(); + event; +} diff --git a/NewPlaneDialog.h b/NewPlaneDialog.h new file mode 100755 index 0000000..864ea51 --- /dev/null +++ b/NewPlaneDialog.h @@ -0,0 +1,68 @@ +#pragma once + +#ifdef WX_GCH +#include +#else +#include +#endif + +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + +/** + * Class NewPlaneDialog + */ +class NewPlaneDialog : public wxDialog +{ + private: + + protected: + wxStaticText* xStaticText; + wxTextCtrl* xTextCtrl; + wxStaticText* yStaticText; + wxTextCtrl* yTextCtrl; + wxStaticText* zStaticText; + wxTextCtrl* zTextCtrl; + wxStaticText* lengthStaticText; + wxTextCtrl* lengthTextCtrl; + wxStaticText* widthStaticText; + wxTextCtrl* widthTextCtrl; + wxStaticText* segmentLStaticText; + wxTextCtrl* segmentLTextCtrl; + wxStaticText* segmentWStaticText; + wxTextCtrl* segmentWTextCtrl; + wxStaticText* axisStaticText; + wxChoice* axisChoice; + wxButton* OKButton; + wxButton* cancelButton; + + void initializeData() + { + (*xTextCtrl)<<0.0f; + (*yTextCtrl)<<0.0f; + (*zTextCtrl)<<0.0f; + (*lengthTextCtrl)<<100.0f; + (*widthTextCtrl)<<100.0f; + axisChoice->SetSelection(2); + (*segmentLTextCtrl)<<1; + (*segmentWTextCtrl)<<1; + }; + public: + NewPlaneDialog( wxWindow* parent, int id = -1, wxString title = wxT(""), wxPoint pos = wxDefaultPosition, wxSize size = wxDefaultSize, int style = wxDEFAULT_DIALOG_STYLE ); + void onOKButton(wxCommandEvent& event); + void onCancelButton(wxCommandEvent& event); + DECLARE_EVENT_TABLE() +}; + +enum +{ + onOKButtonPressPlane=234, + onCancelButtonPressPlane +}; diff --git a/NewSphereDialog.cpp b/NewSphereDialog.cpp new file mode 100755 index 0000000..b23672f --- /dev/null +++ b/NewSphereDialog.cpp @@ -0,0 +1,155 @@ +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP +#include +#endif //WX_PRECOMP + +#include "NewSphereDialog.h" +#include "Scene.h" +/////////////////////////////////////////////////////////////////////////// +BEGIN_EVENT_TABLE(NewSphereDialog, wxDialog) + EVT_BUTTON(onOKButtonPressSphere, NewSphereDialog::onOKButton) + EVT_BUTTON(onCancelButtonPressSphere,NewSphereDialog::onCancelButton) +END_EVENT_TABLE() + +NewSphereDialog::NewSphereDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ) +{ + wxBoxSizer* mainBoxSizer; + mainBoxSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* mainStaticSizer; + mainStaticSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("New Sphere") ), wxVERTICAL ); + + wxGridSizer* settingSizer; + settingSizer = new wxGridSizer( 2, 2, 0, 0 ); + + xStaticText = new wxStaticText( this, ID_DEFAULT, wxT("x:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( xStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + xTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( xTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + yStaticText = new wxStaticText( this, ID_DEFAULT, wxT("y:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( yStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + yTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( yTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + zStaticText = new wxStaticText( this, ID_DEFAULT, wxT("z:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( zStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + zTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( zTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + radiusStaticText = new wxStaticText( this, ID_DEFAULT, wxT("radius:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( radiusStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + radiusTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( radiusTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + axisStaticText = new wxStaticText( this, ID_DEFAULT, wxT("axis:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( axisStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxString axisChoiceChoices[] = { wxT("x"), wxT("y"), wxT("z") }; + int axisChoiceNChoices = sizeof( axisChoiceChoices ) / sizeof( wxString ); + axisChoice = new wxChoice( this, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, axisChoiceNChoices, axisChoiceChoices, 0 ); + axisChoice->SetSelection(2); + settingSizer->Add( axisChoice, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + segmentAStaticText = new wxStaticText( this, ID_DEFAULT, wxT("segment a:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( segmentAStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + segmentATextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( segmentATextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + segmentRStaticText = new wxStaticText( this, ID_DEFAULT, wxT("segment r:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingSizer->Add( segmentRStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + segmentRTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingSizer->Add( segmentRTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainStaticSizer->Add( settingSizer, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + mainBoxSizer->Add( mainStaticSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxBoxSizer* buttonSizer; + buttonSizer = new wxBoxSizer( wxHORIZONTAL ); + + OKButton = new wxButton( this,onOKButtonPressSphere, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( OKButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + cancelButton = new wxButton( this, onCancelButtonPressSphere, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( cancelButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainBoxSizer->Add( buttonSizer, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 ); + + this->SetSizer( mainBoxSizer ); + this->Layout(); + this->Fit(); + initializeData(); +} + +void NewSphereDialog::onOKButton(wxCommandEvent& event) +{ + double x; + double y; + double z; + double radius; + unsigned long segmentA; + unsigned long segmentR; + + wxString xString=xTextCtrl->GetValue(); + wxString yString=yTextCtrl->GetValue(); + wxString zString=zTextCtrl->GetValue(); + wxString radiusString=radiusTextCtrl->GetValue(); + wxString segmentAString=segmentATextCtrl->GetValue(); + wxString segmentRString=segmentRTextCtrl->GetValue(); + + if(xString.ToDouble(&x) && yString.ToDouble(&y) && zString.ToDouble(&z) && radiusString.ToDouble(&radius) && segmentAString.ToULong(&segmentA)&&segmentRString.ToULong(&segmentR)) + { + if(radius>0 && segmentR>1 && segmentA>2) + { + if(axisChoice->GetCurrentSelection()==0) + { + theScene->newSphere(x,y,z,radius,AxisMode::axisX,segmentA,segmentR); + Close(); + } + else if(axisChoice->GetCurrentSelection()==1) + { + theScene->newSphere(x,y,z,radius,AxisMode::axisY,segmentA,segmentR); + Close(); + } + else if(axisChoice->GetCurrentSelection()==2) + { + theScene->newSphere(x,y,z,radius,AxisMode::axisZ,segmentA,segmentR); + Close(); + } + else + { + wxMessageBox(wxT("Wrong axis mode!"),wxT("Wrong Axis Mode"),wxICON_ERROR | wxOK, this); + return; + } + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + event; +} + +void NewSphereDialog::onCancelButton(wxCommandEvent& event) +{ + Close(); + event; +} \ No newline at end of file diff --git a/NewSphereDialog.h b/NewSphereDialog.h new file mode 100755 index 0000000..58fcdfd --- /dev/null +++ b/NewSphereDialog.h @@ -0,0 +1,73 @@ +#pragma once + +// Define WX_GCH in order to support precompiled headers with GCC compiler. +// You have to create the header "wx_pch.h" and include all files needed +// for compile your gui inside it. +// Then, compile it and place the file "wx_pch.h.gch" into the same +// directory that "wx_pch.h". +#ifdef WX_GCH +#include +#else +#include +#endif + +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + +/** + * Class NewSphereDialog + */ +class NewSphereDialog : public wxDialog +{ + private: + + protected: + wxStaticText* xStaticText; + wxTextCtrl* xTextCtrl; + wxStaticText* yStaticText; + wxTextCtrl* yTextCtrl; + wxStaticText* zStaticText; + wxTextCtrl* zTextCtrl; + wxStaticText* radiusStaticText; + wxTextCtrl* radiusTextCtrl; + wxStaticText* axisStaticText; + wxChoice* axisChoice; + wxStaticText* segmentAStaticText; + wxTextCtrl* segmentATextCtrl; + wxStaticText* segmentRStaticText; + wxTextCtrl* segmentRTextCtrl; + wxButton* OKButton; + wxButton* cancelButton; + + public: + + void initializeData() + { + (*xTextCtrl)<<0.0f; + (*yTextCtrl)<<0.0f; + (*zTextCtrl)<<0.0f; + (*radiusTextCtrl)<<100.0f; + axisChoice->SetSelection(2); + (*segmentATextCtrl)<<8; + (*segmentRTextCtrl)<<4; + }; + + NewSphereDialog( wxWindow* parent, int id = -1, wxString title = wxT(""), wxPoint pos = wxDefaultPosition, wxSize size = wxDefaultSize, int style = wxDEFAULT_DIALOG_STYLE ); + void onOKButton(wxCommandEvent& event); + void onCancelButton(wxCommandEvent& event); + DECLARE_EVENT_TABLE() +}; + +enum +{ + onOKButtonPressSphere=234, + onCancelButtonPressSphere +}; + diff --git a/Object.cpp b/Object.cpp new file mode 100755 index 0000000..d77876f --- /dev/null +++ b/Object.cpp @@ -0,0 +1,3813 @@ +#include "Object.h" +#include + + +Object::Object(char *theName):center(),position(),rotation(),scale(1,1,1,1),name(theName),subdivideId(0),subdivideLevelSize(0),isHide(false),isMirror(false),theMirrorMode(MirrorMode::Nothing),mirrorPosition(0) +{ + mat_ambient[0] = 0.7f; + mat_ambient[1] = 0.7f; + mat_ambient[2] = 0.7f; + mat_ambient[3] = 1.0f; + + mat_diffuse[0] = 0.9f; + mat_diffuse[1] = 0.9f; + mat_diffuse[2] = 0.9f; + mat_diffuse[3] = 1.0f; + + mat_specular[0] = 0.11f; + mat_specular[1] = 0.11f; + mat_specular[2] = 0.11f; + mat_specular[3] = 1.0f; + + mat_emission[0] = 0.0f; + mat_emission[1] = 0.0f; + mat_emission[2] = 0.0f; + mat_emission[3] = 1.0f; + + mat_shininess[0] = 10.0f; + mat_shininess[1] = 10.0f; + mat_shininess[2] = 10.0f; + mat_shininess[3] = 10.0f; + + vertexArray.reserve(5000); + edgeArray.reserve(5000); + faceArray.reserve(5000); + subdivideLevel[0]=NULL; + subdivideLevel[1]=NULL; + subdivideLevel[2]=NULL; + subdivideLevel[3]=NULL; + subdivideLevel[4]=NULL; + renderMode=RenderType::WireframeFaced; +}; + + +size_t Object::addVertex(float p1,float p2,float p3) +{ + size_t vi=vertexArray.add(new Vertex(p1,p2,p3)); + historyManager->record(new Log_ObjectVertexAdd(index,vi)); + return vi; +} + +size_t Object::addVertex(float p1,float p2,float p3,float n1,float n2,float n3) +{ + size_t vi=vertexArray.add(new Vertex(p1,p2,p3,n1,n2,n3)); + historyManager->record(new Log_ObjectVertexAdd(index,vi)); + return vi; +} + +size_t Object::addEdge(size_t ei,Edge *theE) + { + edgeArray.addI(ei,theE); + historyManager->record(new Log_ObjectEdgeAdd(index,ei)); + return ei; + }; + +size_t Object::addFace(size_t ei,Face *theF) + { + faceArray.addI(ei,theF); + historyManager->record(new Log_ObjectFaceAdd(index,ei)); + return ei; + } + +void Object::drawMirror() + { + if(!isHide && isMirror) + { + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + //glTranslatef(100,100,100); + glTranslatef(mirrorPosition.x,mirrorPosition.y,mirrorPosition.z); + glTranslatef(position.x,position.y,position.z); + glTranslatef(center.x,center.y,center.z); + glRotatef(rotation.w,rotation.x,rotation.y,rotation.z); + glScalef(scale.x,scale.y,scale.z); + glTranslatef(-center.x,-center.y,-center.z); + if(theMirrorMode==MirrorMode::MirrorXY) + { + + + glScalef(1,1,-1); + } + else if(theMirrorMode==MirrorMode::MirrorYZ) + { + + + glScalef(-1,1,1); + } + else if(theMirrorMode==MirrorMode::MirrorXZ) + { + + glScalef(1,-1,1); + + } + + if(renderMode==RenderType::Faced) + { + drawFaced(); + } + else if(renderMode==RenderType::Smooth) + { + drawSmooth(); + } + else if(renderMode==RenderType::Wire) + { + drawWire(); + } + else if(renderMode==RenderType::Wireframe) + { + drawWireframe(); + } + else if(renderMode==RenderType::WireframeFaced) + { + drawWireframeFaced(); + } + + glPopMatrix(); + } + } + +size_t Object::addVertex(Vector &pos) +{ + size_t vi=vertexArray.add(new Vertex(pos)); + historyManager->record(new Log_ObjectVertexAdd(index,vi)); + return vi; +} + +size_t Object::addVertex(size_t ei,Vertex *theV) +{ + vertexArray.addI(ei,theV); + historyManager->record(new Log_ObjectVertexAdd(index,ei)); + return ei; +} + +size_t Object::addVertex(Vector &pos,Vector &nor) +{ + size_t vi=vertexArray.add(new Vertex(pos,nor)); + historyManager->record(new Log_ObjectVertexAdd(index,vi)); + return vi; +} + +void Object::testOut(char *fileName) +{ + FILE *fp=fopen(fileName,"w"); + for(size_t i=1;iposition.x,vertexArray[i]->position.y,vertexArray[i]->position.z); + } + } + fprintf(fp,"g box01\n"); + for(size_t i=1;iedge.size();e++) + { + if(faceArray[i]->edge[e]<0) + { + fprintf(fp,"%d ",edgeArray[-faceArray[i]->edge[e]]->end); + } + else + { + fprintf(fp,"%d ",edgeArray[faceArray[i]->edge[e]]->start); + } + } + fprintf(fp,"\n"); + } + fprintf(fp,"g\n"); + fclose(fp); +}; + +size_t Object::addEdge(int start,int end) +{ + //printf("cao0"); + size_t ei=edgeArray.add(new Edge(start,end)); + //printf("cao0.5"); +// printf("!%d,%d!",index,ei); + Log_ObjectEdgeAdd *theLog=new Log_ObjectEdgeAdd(index,ei); + //printf("cao0.6"); + historyManager->record(theLog); + //printf("cao1"); + vertexArray[start]->adjacentEdge.push_back((int)ei); + historyManager->record(new Log_VertexAdjacentPush(index,start)); + //printf("cao2"); + vertexArray[end]->adjacentEdge.push_back((int)ei); + historyManager->record(new Log_VertexAdjacentPush(index,end)); + //printf("cao3"); + return ei; +}; + +Vertex * Object::vertex(size_t index) +{ + return vertexArray[index]; +}; + +Edge * Object::edge(size_t index) +{ + return edgeArray[index]; +}; + +Face * Object::face(size_t index) +{ + return faceArray[index]; +}; + +size_t Object::addFace(size_t theEdgeArray[],size_t size) +{ + //printf("start\n"); + Face *theFace=new Face(); + size_t resultIndex=faceArray.add(theFace); + historyManager->record(new Log_ObjectFaceAdd(index,resultIndex)); + for(size_t i=0;iend==edgeArray[i2]->start || edgeArray[i1]->end==edgeArray[i2]->end) + { + edgeArray[i1]->right=theFace->index; + historyManager->record(new Log_EdgeRightChange(index,i1,theFace->index)); + theFace->edge.push_back(i1); + historyManager->record(new Log_FaceEdgePush(index,theFace->index)); + } + else + if(edgeArray[i1]->start==edgeArray[i2]->start || edgeArray[i1]->start==edgeArray[i2]->end) + { + edgeArray[i1]->left=theFace->index; + historyManager->record(new Log_EdgeLeftChange(index,i1,theFace->index)); + theFace->edge.push_back(-((int)i1)); + historyManager->record(new Log_FaceEdgePush(index,theFace->index)); + } + } + //printf("end\n"); + return resultIndex; +}; + +void Object::SubTestOut(char *fileName,int level) +{ + FILE *fp=NULL; + fp=fopen(fileName,"w"); + SubdivideLevel *theSub=subdivideLevel[level]; + size_t vertexCount=theSub->vertex.size(); + for(size_t i=1;ivertex[i]->position.x,theSub->vertex[i]->position.y,theSub->vertex[i]->position.z); + } + fprintf(fp,"g box01\n"); + for(size_t i=1;iface.size();++i) + { + fprintf(fp,"f "); + for(size_t e=0;e<4;e++) + { + if(theSub->face[i]->edge[e]>0) + { + fprintf(fp,"%d ",theSub->edge[theSub->face[i]->edge[e]]->start); + } + else + { + fprintf(fp,"%d ",theSub->edge[-theSub->face[i]->edge[e]]->end); + } + } + fprintf(fp,"\n"); + } + fprintf(fp,"g\n"); + fclose(fp); +} + +void Object::SubTestOut(char *fileName) +{ + SubTestOut(fileName,0); +} + +void Object::subdivide() +{ + //µÝÔöϸ·ÖµÄ±àºÅ + ++subdivideId; + if(!subdivideLevelSize) + { + subdivideLevel[0]=new SubdivideLevel(vertexArray.size()+edgeArray.size()+faceArray.size(),edgeArray.size()*4,edgeArray.size()*2); + ++subdivideLevelSize; + size_t faceCount=this->faceArray.size(); + for(size_t i=1;i0 && subdivideLevelSize<5) + { + for(int e=subdivideLevelSize;e>0;--e) + { + subdivideLevel[e]=subdivideLevel[e-1]; + } + subdivideLevel[0]=new SubdivideLevel(subdivideLevel[0]->vertex.size()+subdivideLevel[0]->edge.size()+subdivideLevel[0]->face.size(),subdivideLevel[0]->edge.size()*4,subdivideLevel[0]->edge.size()*2); + ++subdivideLevelSize; + size_t faceCount=subdivideLevel[1]->face.size(); + for(size_t i=1;iface[i]==NULL) + continue; + subdivideFace(subdivideLevel[1]->face[i]); + } + } + updateAllSubNormal(); +} + +Vector Object::EAdjacentVertex(Vertex *theVertex) +{ + theVertex->edgeVertex=false; + Vector result(0); + size_t vertexCount=theVertex->adjacentEdge.size(); + for(size_t i=0;iadjacentEdge[i]]->left && edgeArray[theVertex->adjacentEdge[i]]->right && !theVertex->edgeVertex) + { + if(theVertex->index==edgeArray[theVertex->adjacentEdge[i]]->end) + { + result+=vertexArray[edgeArray[theVertex->adjacentEdge[i]]->start]->position; + } + else + { + result+=vertexArray[edgeArray[theVertex->adjacentEdge[i]]->end]->position; + } + } + else + { + if(!theVertex->edgeVertex) + { + theVertex->edgeVertex=true; + result.null(); + } + if(!edgeArray[theVertex->adjacentEdge[i]]->left || !edgeArray[theVertex->adjacentEdge[i]]->right) + { + if(theVertex->index==edgeArray[theVertex->adjacentEdge[i]]->end) + { + result+=vertexArray[edgeArray[theVertex->adjacentEdge[i]]->start]->position; + } + else + { + result+=vertexArray[edgeArray[theVertex->adjacentEdge[i]]->end]->position; + } + } + } + } + return result; +}; + +Vector Object::EAdjacentVertex(SubdivideVertex *theVertex,int level) +{ + theVertex->edgeVertex=false; + Vector result(0); + size_t vertexCount=theVertex->adjacentEdge.size(); + for(size_t i=0;iedge[theVertex->adjacentEdge[i]]->left!=0 && subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->right!=0 && !theVertex->edgeVertex) + { + if(theVertex->index==subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->end) + { + result+=subdivideLevel[level]->vertex[subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->start]->position; + } + else + { + result+=subdivideLevel[level]->vertex[subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->end]->position; + } + } + else + { + if(!theVertex->edgeVertex) + { + theVertex->edgeVertex=true; + result.null(); + } + if(subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->left==0 || subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->right==0) + { + if(theVertex->index==subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->end) + { + result+=subdivideLevel[level]->vertex[subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->start]->position; + } + else + { + result+=subdivideLevel[level]->vertex[subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->end]->position; + } + } + } + } + return result; +} + +Vector Object::EAdjacentVertex(SubdivideVertex *theVertex) +{ + theVertex->edgeVertex=false; + Vector result(0); + size_t vertexCount=theVertex->adjacentEdge.size(); + for(size_t i=0;iedge[theVertex->adjacentEdge[i]]->left!=0 && subdivideLevel[1]->edge[theVertex->adjacentEdge[i]]->right!=0 && !theVertex->edgeVertex) + { + if(theVertex->index==subdivideLevel[1]->edge[theVertex->adjacentEdge[i]]->end) + { + result+=subdivideLevel[1]->vertex[subdivideLevel[1]->edge[theVertex->adjacentEdge[i]]->start]->position; + } + else + { + result+=subdivideLevel[1]->vertex[subdivideLevel[1]->edge[theVertex->adjacentEdge[i]]->end]->position; + } + } + else + { + if(!theVertex->edgeVertex) + { + theVertex->edgeVertex=true; + result.null(); + } + if(subdivideLevel[1]->edge[theVertex->adjacentEdge[i]]->left==0 || subdivideLevel[1]->edge[theVertex->adjacentEdge[i]]->right==0) + { + if(theVertex->index==subdivideLevel[1]->edge[theVertex->adjacentEdge[i]]->end) + { + result+=subdivideLevel[1]->vertex[subdivideLevel[1]->edge[theVertex->adjacentEdge[i]]->start]->position; + } + else + { + result+=subdivideLevel[1]->vertex[subdivideLevel[1]->edge[theVertex->adjacentEdge[i]]->end]->position; + } + } + } + } + return result; +} + +void Object::subdivideFace(Face *theFace) +{ + //Ê×ÏÈÒªµÃµ½Õâ¸öÃæµÄ¶Ëµã + //µÃµ½¶ËµãºÍ±ßµÄÊýÄ¿ + size_t edgeCount=theFace->edge.size(); + //н¨´æ·Å¶¥µãµÄÊý×é + Vertex **theVertexList=new Vertex*[edgeCount]; + theFace->center=subdivideLevel[0]->vertex.add(new SubdivideVertex()); + subdivideLevel[0]->vertex[theFace->center]->adjacentEdge.reserve(4); + for(size_t e=0;eedge[e]<0) + { + theVertexList[e]=vertexArray[edgeArray[-theFace->edge[e]]->start]; + } + else + { + theVertexList[e]=vertexArray[edgeArray[theFace->edge[e]]->end]; + } + subdivideLevel[0]->vertex[theFace->center]->position+=theVertexList[e]->position; + //subdivideLevel[0]->vertex[theFace->center]->normal+=theVertexList[e]->normal; + } + subdivideLevel[0]->vertex[theFace->center]->position/=(float)edgeCount; + //subdivideLevel[0]->vertex[theFace->center]->normal/=edgeCount; + //¼ÆËãеĶ¥µã + for(size_t i=0;isubdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î¼ÆËãµ½Õâ¸öµã + //³õʼ»¯Ï¸·Ö²½Êý + theV->subdivideId=subdivideId; + theV->subdivideStep=0; + //Éú³ÉÕâ¸öµãµÄϸ·Öµã + theV->nextLevel=subdivideLevel[0]->vertex.add(new SubdivideVertex()); + subdivideLevel[0]->vertex[theV->nextLevel]->adjacentEdge.reserve(theV->adjacentEdge.size()); + //Ê×ÏȼÆËãÏàÁÚµãµÄ×ø±êºÍEv + subdivideLevel[0]->vertex[theV->nextLevel]->position+=EAdjacentVertex(theV); + if(theV->edgeVertex) + { + subdivideLevel[0]->vertex[theV->nextLevel]->position+=theV->position*6; + subdivideLevel[0]->vertex[theV->nextLevel]->position/=8; + } + else + { + //¼ÓÉÏÕâ¸öÃæµÄÖеã + subdivideLevel[0]->vertex[theV->nextLevel]->position+=subdivideLevel[0]->vertex[theFace->center]->position; + } + ++(theV->subdivideStep); + } + else + { + if(!theV->edgeVertex) + { + subdivideLevel[0]->vertex[theV->nextLevel]->position+=subdivideLevel[0]->vertex[theFace->center]->position; + ++(theV->subdivideStep); + size_t n=theV->adjacentEdge.size(); + if(n==(size_t)theV->subdivideStep) + { + subdivideLevel[0]->vertex[theV->nextLevel]->position+=theV->position*(float)(n*n-2*n); + subdivideLevel[0]->vertex[theV->nextLevel]->position/=(float)(n*n); + } + } + } + } + delete theVertexList; + //Ö®ºó´¦Àíÿһ¸ö±ß + for(size_t i=0;iedge[i]>0) + { + theEdge=edgeArray[theFace->edge[i]]; + if(theEdge->subdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î´¦ÀíÕâ¸ö±ß + theEdge->subdivideId=subdivideId; + Vector theN=vertexArray[theEdge->start]->position+vertexArray[theEdge->end]->position; + theEdge->middle=subdivideLevel[0]->vertex.add(new SubdivideVertex(theN)); + subdivideLevel[0]->vertex[theEdge->middle]->adjacentEdge.reserve(4); + if(theEdge->left && theEdge->right) + { + subdivideLevel[0]->vertex[theEdge->middle]->position+=subdivideLevel[0]->vertex[theFace->center]->position; + } + else + { + subdivideLevel[0]->vertex[theEdge->middle]->position/=2; + } + theEdge->startEdge=subdivideLevel[0]->edge.add(new SubdivideEdge(vertexArray[theEdge->start]->nextLevel,theEdge->middle)); + subdivideLevel[0]->vertex[vertexArray[theEdge->start]->nextLevel]->adjacentEdge.push_back(theEdge->startEdge); + subdivideLevel[0]->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->startEdge); + theEdge->endEdge=subdivideLevel[0]->edge.add(new SubdivideEdge(theEdge->middle,vertexArray[theEdge->end]->nextLevel)); + subdivideLevel[0]->vertex[vertexArray[theEdge->end]->nextLevel]->adjacentEdge.push_back(theEdge->endEdge); + subdivideLevel[0]->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->endEdge); + theEdge->rightEdge=subdivideLevel[0]->edge.add(new SubdivideEdge(theEdge->middle,theFace->center)); + subdivideLevel[0]->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->rightEdge); + subdivideLevel[0]->vertex[theFace->center]->adjacentEdge.push_back(theEdge->rightEdge); + } + else + { + //Èç¹û²»ÊǵÚÒ»´Î¼ÆËã + subdivideLevel[0]->vertex[theEdge->middle]->position+=subdivideLevel[0]->vertex[theFace->center]->position; + subdivideLevel[0]->vertex[theEdge->middle]->position/=4; + theEdge->rightEdge=subdivideLevel[0]->edge.add(new SubdivideEdge(theEdge->middle,theFace->center)); + subdivideLevel[0]->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->rightEdge); + subdivideLevel[0]->vertex[theFace->center]->adjacentEdge.push_back(theEdge->rightEdge); + } + } + else + { + theEdge=edgeArray[-theFace->edge[i]]; + if(theEdge->subdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î´¦ÀíÕâ¸ö±ß + theEdge->subdivideId=subdivideId; + Vector theN=vertexArray[theEdge->start]->position+vertexArray[theEdge->end]->position; + theEdge->middle=subdivideLevel[0]->vertex.add(new SubdivideVertex(theN)); + subdivideLevel[0]->vertex[theEdge->middle]->adjacentEdge.reserve(4); + if(theEdge->left!=0 && theEdge->right!=0) + { + subdivideLevel[0]->vertex[theEdge->middle]->position+=subdivideLevel[0]->vertex[theFace->center]->position; + } + else + { + subdivideLevel[0]->vertex[theEdge->middle]->position/=2; + } + theEdge->startEdge=subdivideLevel[0]->edge.add(new SubdivideEdge(vertexArray[theEdge->start]->nextLevel,theEdge->middle)); + subdivideLevel[0]->vertex[vertexArray[theEdge->start]->nextLevel]->adjacentEdge.push_back(theEdge->startEdge); + subdivideLevel[0]->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->startEdge); + theEdge->endEdge=subdivideLevel[0]->edge.add(new SubdivideEdge(theEdge->middle,vertexArray[theEdge->end]->nextLevel)); + subdivideLevel[0]->vertex[vertexArray[theEdge->end]->nextLevel]->adjacentEdge.push_back(theEdge->endEdge); + subdivideLevel[0]->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->endEdge); + theEdge->leftEdge=subdivideLevel[0]->edge.add(new SubdivideEdge(theEdge->middle,theFace->center)); + subdivideLevel[0]->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->leftEdge); + subdivideLevel[0]->vertex[theFace->center]->adjacentEdge.push_back(theEdge->leftEdge); + } + else + { + //Èç¹û²»ÊǵÚÒ»´Î¼ÆËã + subdivideLevel[0]->vertex[theEdge->middle]->position+=subdivideLevel[0]->vertex[theFace->center]->position; + subdivideLevel[0]->vertex[theEdge->middle]->position/=4; + theEdge->leftEdge=subdivideLevel[0]->edge.add(new SubdivideEdge(theEdge->middle,theFace->center)); + subdivideLevel[0]->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->leftEdge); + subdivideLevel[0]->vertex[theFace->center]->adjacentEdge.push_back(theEdge->leftEdge); + } + } + } + //½¨Á¢Ï¸·ÖÖ®ºóµÄÃæ + theFace->subdivideFace.reserve(edgeCount); + for(size_t i=0;iedge[i]>0) + { + Edge *theEdge1=edgeArray[theFace->edge[i]]; + if(theFace->edge[i2]>0) + { + Edge *theEdge2=edgeArray[theFace->edge[i2]]; + size_t faceId= + subdivideLevel[0]->edge[theEdge1->rightEdge]->left= + subdivideLevel[0]->edge[theEdge1->endEdge]->right= + subdivideLevel[0]->edge[theEdge2->startEdge]->right= + subdivideLevel[0]->edge[theEdge2->rightEdge]->right=subdivideLevel[0]->face.add(new SubdivideFace(-theEdge1->rightEdge,theEdge1->endEdge,theEdge2->startEdge,theEdge2->rightEdge)); + theFace->subdivideFace.push_back(faceId); + } + else + { + Edge *theEdge2=edgeArray[-theFace->edge[i2]]; + size_t faceId= + subdivideLevel[0]->edge[theEdge1->rightEdge]->left= + subdivideLevel[0]->edge[theEdge1->endEdge]->right= + subdivideLevel[0]->edge[theEdge2->endEdge]->left= + subdivideLevel[0]->edge[theEdge2->leftEdge]->right=subdivideLevel[0]->face.add(new SubdivideFace(-theEdge1->rightEdge,theEdge1->endEdge,-theEdge2->endEdge,theEdge2->leftEdge)); + theFace->subdivideFace.push_back(faceId); + } + } + else + { + Edge *theEdge1=edgeArray[-theFace->edge[i]]; + if(theFace->edge[i2]>0) + { + Edge *theEdge2=edgeArray[theFace->edge[i2]]; + size_t faceId= + subdivideLevel[0]->edge[theEdge1->leftEdge]->left= + subdivideLevel[0]->edge[theEdge1->startEdge]->left= + subdivideLevel[0]->edge[theEdge2->startEdge]->right= + subdivideLevel[0]->edge[theEdge2->rightEdge]->right=subdivideLevel[0]->face.add(new SubdivideFace(-theEdge1->leftEdge,-theEdge1->startEdge,theEdge2->startEdge,theEdge2->rightEdge)); + theFace->subdivideFace.push_back(faceId); + } + else + { + Edge *theEdge2=edgeArray[-theFace->edge[i2]]; + size_t faceId= + subdivideLevel[0]->edge[theEdge1->leftEdge]->left= + subdivideLevel[0]->edge[theEdge1->startEdge]->left= + subdivideLevel[0]->edge[theEdge2->endEdge]->left= + subdivideLevel[0]->edge[theEdge2->leftEdge]->right=subdivideLevel[0]->face.add(new SubdivideFace(-theEdge1->leftEdge,-theEdge1->startEdge,-theEdge2->endEdge,theEdge2->leftEdge)); + theFace->subdivideFace.push_back(faceId); + } + } + } +} + +void Object::subdivideFace(SubdivideFace *theFace) +{ + //Ê×ÏÈÒªµÃµ½Õâ¸öÃæµÄ¶Ëµã + //µÃµ½¶ËµãºÍ±ßµÄÊýÄ¿ + size_t edgeCount=4; + SubdivideLevel *target=subdivideLevel[0]; + SubdivideLevel *original=subdivideLevel[1]; + //н¨´æ·Å¶¥µãµÄÊý×é + SubdivideVertex **theVertexList=new SubdivideVertex*[edgeCount]; + theFace->center=target->vertex.add(new SubdivideVertex()); + target->vertex[theFace->center]->adjacentEdge.reserve(4); + for(size_t e=0;eedge[e]<0) + { + theVertexList[e]=original->vertex[original->edge[-theFace->edge[e]]->start]; + } + else + { + theVertexList[e]=original->vertex[original->edge[theFace->edge[e]]->end]; + } + target->vertex[theFace->center]->position+=theVertexList[e]->position; + //target->vertex[theFace->center]->normal+=theVertexList[e]->normal; + } + //¼ÆËãÕâ¸öÃæµÄÖеã + target->vertex[theFace->center]->position/=(float)edgeCount; + //target->vertex[theFace->center]->normal/=edgeCount; + //¼ÆËãеĶ¥µã + for(size_t i=0;isubdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î¼ÆËãµ½Õâ¸öµã + //³õʼ»¯Ï¸·Ö²½Êý + theV->subdivideId=subdivideId; + theV->subdivideStep=0; + //Éú³ÉÕâ¸öµãµÄϸ·Öµã + theV->nextLevel=target->vertex.add(new SubdivideVertex()); + target->vertex[theV->nextLevel]->adjacentEdge.reserve(theV->adjacentEdge.size()); + //Ê×ÏȼÆËãÏàÁÚµãµÄ×ø±êºÍEv + target->vertex[theV->nextLevel]->position+=EAdjacentVertex(theV); + if(theV->edgeVertex) + { + target->vertex[theV->nextLevel]->position+=theV->position*6; + target->vertex[theV->nextLevel]->position/=8; + } + else + { + //¼ÓÉÏÕâ¸öÃæµÄÖеã + target->vertex[theV->nextLevel]->position+=target->vertex[theFace->center]->position; + } + ++(theV->subdivideStep); + } + else + { + if(!theV->edgeVertex) + { + target->vertex[theV->nextLevel]->position+=target->vertex[theFace->center]->position; + theV->subdivideStep++; + int n=theV->adjacentEdge.size(); + if(n==theV->subdivideStep) + { + target->vertex[theV->nextLevel]->position+=theV->position*(float)(n*n-2*n); + target->vertex[theV->nextLevel]->position/=(float)(n*n); + } + } + } + } + delete theVertexList; + //Ö®ºó´¦Àíÿһ¸ö±ß + for(size_t i=0;iedge[i]>0) + { + theEdge=original->edge[theFace->edge[i]]; + if(theEdge->subdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î´¦ÀíÕâ¸ö±ß + theEdge->subdivideId=subdivideId; + Vector theN=original->vertex[theEdge->start]->position+original->vertex[theEdge->end]->position; + theEdge->middle=target->vertex.add(new SubdivideVertex(theN)); + target->vertex[theEdge->middle]->adjacentEdge.reserve(4); + if(theEdge->left && theEdge->right) + { + target->vertex[theEdge->middle]->position+=target->vertex[theFace->center]->position; + } + else + { + target->vertex[theEdge->middle]->position/=2; + } + theEdge->startEdge=target->edge.add(new SubdivideEdge(original->vertex[theEdge->start]->nextLevel,theEdge->middle)); + target->vertex[original->vertex[theEdge->start]->nextLevel]->adjacentEdge.push_back(theEdge->startEdge); + target->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->startEdge); + theEdge->endEdge=target->edge.add(new SubdivideEdge(theEdge->middle,original->vertex[theEdge->end]->nextLevel)); + target->vertex[original->vertex[theEdge->end]->nextLevel]->adjacentEdge.push_back(theEdge->endEdge); + target->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->endEdge); + theEdge->rightEdge=target->edge.add(new SubdivideEdge(theEdge->middle,theFace->center)); + target->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->rightEdge); + target->vertex[theFace->center]->adjacentEdge.push_back(theEdge->rightEdge); + } + else + { + //Èç¹û²»ÊǵÚÒ»´Î¼ÆËã + target->vertex[theEdge->middle]->position+=target->vertex[theFace->center]->position; + target->vertex[theEdge->middle]->position/=4; + theEdge->rightEdge=target->edge.add(new SubdivideEdge(theEdge->middle,theFace->center)); + target->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->rightEdge); + target->vertex[theFace->center]->adjacentEdge.push_back(theEdge->rightEdge); + } + } + else + { + theEdge=original->edge[-theFace->edge[i]]; + if(theEdge->subdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î´¦ÀíÕâ¸ö±ß + theEdge->subdivideId=subdivideId; + Vector theN=original->vertex[theEdge->start]->position+original->vertex[theEdge->end]->position; + theEdge->middle=target->vertex.add(new SubdivideVertex(theN)); + target->vertex[theEdge->middle]->adjacentEdge.reserve(4); + if(theEdge->left && theEdge->right) + { + target->vertex[theEdge->middle]->position+=target->vertex[theFace->center]->position; + } + else + { + target->vertex[theEdge->middle]->position/=2; + } + theEdge->startEdge=target->edge.add(new SubdivideEdge(original->vertex[theEdge->start]->nextLevel,theEdge->middle)); + target->vertex[original->vertex[theEdge->start]->nextLevel]->adjacentEdge.push_back(theEdge->startEdge); + target->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->startEdge); + theEdge->endEdge=target->edge.add(new SubdivideEdge(theEdge->middle,original->vertex[theEdge->end]->nextLevel)); + target->vertex[original->vertex[theEdge->end]->nextLevel]->adjacentEdge.push_back(theEdge->endEdge); + target->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->endEdge); + theEdge->leftEdge=target->edge.add(new SubdivideEdge(theEdge->middle,theFace->center)); + target->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->leftEdge); + target->vertex[theFace->center]->adjacentEdge.push_back(theEdge->leftEdge); + } + else + { + //Èç¹û²»ÊǵÚÒ»´Î¼ÆËã + target->vertex[theEdge->middle]->position+=target->vertex[theFace->center]->position; + target->vertex[theEdge->middle]->position/=4; + theEdge->leftEdge=target->edge.add(new SubdivideEdge(theEdge->middle,theFace->center)); + target->vertex[theEdge->middle]->adjacentEdge.push_back(theEdge->leftEdge); + target->vertex[theFace->center]->adjacentEdge.push_back(theEdge->leftEdge); + } + } + } + //½¨Á¢Ï¸·ÖÖ®ºóµÄÃæ + for(size_t i=0;iedge[i]>0) + { + SubdivideEdge *theEdge1=original->edge[theFace->edge[i]]; + if(theFace->edge[i2]>0) + { + SubdivideEdge *theEdge2=original->edge[theFace->edge[i2]]; + subdivideLevel[0]->edge[theEdge1->rightEdge]->left= + subdivideLevel[0]->edge[theEdge1->endEdge]->right= + subdivideLevel[0]->edge[theEdge2->startEdge]->right= + subdivideLevel[0]->edge[theEdge2->rightEdge]->right=theFace->subFace[i]= + target->face.add(new SubdivideFace(-theEdge1->rightEdge,theEdge1->endEdge,theEdge2->startEdge,theEdge2->rightEdge)); + } + else + { + SubdivideEdge *theEdge2=original->edge[-theFace->edge[i2]]; + subdivideLevel[0]->edge[theEdge1->rightEdge]->left= + subdivideLevel[0]->edge[theEdge1->endEdge]->right= + subdivideLevel[0]->edge[theEdge2->endEdge]->left= + subdivideLevel[0]->edge[theEdge2->leftEdge]->right= + theFace->subFace[i]= + target->face.add(new SubdivideFace(-theEdge1->rightEdge,theEdge1->endEdge,-theEdge2->endEdge,theEdge2->leftEdge)); + } + } + else + { + SubdivideEdge *theEdge1=original->edge[-theFace->edge[i]]; + if(theFace->edge[i2]>0) + { + SubdivideEdge *theEdge2=original->edge[theFace->edge[i2]]; + subdivideLevel[0]->edge[theEdge1->leftEdge]->left= + subdivideLevel[0]->edge[theEdge1->startEdge]->left= + subdivideLevel[0]->edge[theEdge2->startEdge]->right= + subdivideLevel[0]->edge[theEdge2->rightEdge]->right= + theFace->subFace[i]= + target->face.add(new SubdivideFace(-theEdge1->leftEdge,-theEdge1->startEdge,theEdge2->startEdge,theEdge2->rightEdge)); + } + else + { + SubdivideEdge *theEdge2=original->edge[-theFace->edge[i2]]; + subdivideLevel[0]->edge[theEdge1->leftEdge]->left= + subdivideLevel[0]->edge[theEdge1->startEdge]->left= + subdivideLevel[0]->edge[theEdge2->endEdge]->left= + subdivideLevel[0]->edge[theEdge2->leftEdge]->right= + theFace->subFace[i]= + target->face.add(new SubdivideFace(-theEdge1->leftEdge,-theEdge1->startEdge,-theEdge2->endEdge,theEdge2->leftEdge)); + } + } + } +} + +void Object::clearPSCache() +{ + size_t cacheSize=PSFaceCache.size(); + for(int i=cacheSize-1;i>-1;--i) + { + PSFaceCache[i]->isSub=false; + PSFaceCache.pop_back(); + } + PSFaceCache.clear(); + for(size_t e=0;e<5;e++) + { + cacheSize=PSSubFaceCache[e].size(); + for(int i=cacheSize-1;i>-1;--i) + { + (PSSubFaceCache[e])[i]->isSub=false; + PSSubFaceCache[e].pop_back(); + } + PSSubFaceCache[e].clear(); + } +} + +void Object::mirror(MirrorMode type,Vector &theMirrorPosition) +{ + theMirrorMode=type; + mirrorPosition=theMirrorPosition; + isMirror=true; +} + +void Object::unMirror() + { + theMirrorMode=MirrorMode::Nothing; + mirrorPosition.null(); + isMirror=false; + } + +void Object::directPushVertex(Vertex *theVertex) + { + if(theVertex) + { + vertexArray.directPush(theVertex); + } + else + { + vertexArray.pushNullS(); + } + }; + +void Object::directPushEdge(Edge *theEdge) + { + if(theEdge) + { + edgeArray.directPush(theEdge); + } + else + { + edgeArray.pushNullS(); + } + }; + +void Object::directPushFace(Face *theFace) + { + if(theFace) + { + faceArray.directPush(theFace); + } + else + { + faceArray.pushNullS(); + } + }; + +void Object::normalizeVertexNormal() + { + for(size_t i=1;ivertex.size();++i) + { + subdivideLevel[0]->vertex[i]->normal.normalize(); + } + } + +void Object::updateFNormal(Face *theFace) + { + size_t edgeCount=theFace->edge.size(); + Vector *theVector=new Vector[edgeCount]; + for(size_t i=0;iedge[i]>0) + { + theVector[i]=vertexArray[edgeArray[theFace->edge[i]]->end]->position-vertexArray[edgeArray[theFace->edge[i]]->start]->position; + } + else + { + theVector[i]=vertexArray[edgeArray[-theFace->edge[i]]->start]->position-vertexArray[edgeArray[-theFace->edge[i]]->end]->position; + } + } + --edgeCount; + for(size_t i=0;inormal+=perpendicular(theVector[i],theVector[i+1]); + } + theFace->normal+=perpendicular(theVector[edgeCount],theVector[0]); + theFace->normal.normalize(); + delete theVector; + } + +void Object::updateFNormal(SubdivideFace *theFace,size_t level) + { + Vector theVector[4]; + for(size_t i=0;i<4;++i) + { + theVector[i].null(); + if(theFace->edge[i]>0) + { + theVector[i]=subdivideLevel[level]->vertex[subdivideLevel[level]->edge[theFace->edge[i]]->end]->position-subdivideLevel[level]->vertex[subdivideLevel[level]->edge[theFace->edge[i]]->start]->position; + } + else + { + theVector[i]=subdivideLevel[level]->vertex[subdivideLevel[level]->edge[-theFace->edge[i]]->start]->position-subdivideLevel[level]->vertex[subdivideLevel[level]->edge[-theFace->edge[i]]->end]->position; + } + } + for(size_t i=0;i<3;++i) + { + theFace->normal+=perpendicular(theVector[i],theVector[i+1]); + } + theFace->normal+=perpendicular(theVector[3],theVector[0]); + theFace->normal.normalize(); + } + +void Object::updateAllSubNormal() + { + size_t faceCount=subdivideLevel[0]->face.size(); + for(size_t i=1;iface[i],0); + } + size_t vertexCount=subdivideLevel[0]->vertex.size(); + for(size_t i=1;ivertex[i],0); + } + } + +//µÃµ½±ßµÄÊýÄ¿ +size_t Object::edgeCount() + { + return edgeArray.size(); + }; + +size_t Object::vertexCount() + { + return vertexArray.size(); + }; + +size_t Object::faceCount() + { + return faceArray.size(); + }; + +void Object::vertexPositionChangeR(size_t vertexID,float nx,float ny,float nz) + { + Vertex *theVertex=vertexArray[vertexID]; + historyManager->record(new Log_VertexPositionChange(index,vertexID,theVertex->position.x,theVertex->position.y,theVertex->position.z)); + theVertex->position.x+=nx; + theVertex->position.y+=ny; + theVertex->position.z+=nz; + }; + +void Object::vertexNormalChange(size_t vertexID,float nx,float ny,float nz) + { + Vertex *theVertex=vertexArray[vertexID]; + historyManager->record(new Log_VertexNormalChange(index,vertexID,theVertex->normal.x,theVertex->normal.y,theVertex->normal.z)); + theVertex->normal.x=nx; + theVertex->normal.y=ny; + theVertex->normal.z=nz; + }; + +void Object::objectEdgeRemove(size_t edgeID) + { + if(!historyManager->record(new Log_ObjectEdgeRemove(index,edgeID,edgeArray[edgeID]))) + { + delete edgeArray[edgeID]; + } + edgeArray.remove(edgeID); + }; + +void Object::objectVertexRemove(size_t vertexID) + { + if(!historyManager->record(new Log_ObjectVertexRemove(index,vertexID,vertexArray[vertexID]))) + { + delete vertexArray[vertexID]; + } + vertexArray.remove(vertexID); + }; + +void Object::edgeRightChange(size_t edgeID,size_t nr) + { + historyManager->record(new Log_EdgeRightChange(index,edgeID,edgeArray[edgeID]->right)); + edgeArray[edgeID]->right=nr; + }; + +void Object::edgeStartChange(size_t edgeID,size_t ns) + { + historyManager->record(new Log_EdgeStartChange(index,edgeID,edgeArray[edgeID]->start)); + edgeArray[edgeID]->start=ns; + }; + +void Object::vertexAdjacentRemove(size_t vertexID,size_t adjID) + { + size_t adjEdgeCount=vertexArray[vertexID]->adjacentEdge.size()-1; + historyManager->record(new Log_VertexAdjacentRemove(index,vertexID,adjID,vertexArray[vertexID]->adjacentEdge[adjID])); + size_t temp=vertexArray[vertexID]->adjacentEdge[adjEdgeCount]; + vertexArray[vertexID]->adjacentEdge[adjEdgeCount]=vertexArray[vertexID]->adjacentEdge[adjID]; + vertexArray[vertexID]->adjacentEdge[adjID]=temp; + vertexArray[vertexID]->adjacentEdge.pop_back(); + }; + +void Object::vertexAdjacentInsert(size_t vertexID,size_t adjID,size_t ne) + { + historyManager->record(new Log_VertexAdjacentInsert(index,vertexID,adjID)); + vertexArray[vertexID]->adjacentEdge.push_back(ne); + size_t temp=vertexArray[vertexID]->adjacentEdge[adjID]; + size_t adjEdgeCount=vertexArray[vertexID]->adjacentEdge.size()-1; + vertexArray[vertexID]->adjacentEdge[adjID]=vertexArray[vertexID]->adjacentEdge[adjEdgeCount]; + vertexArray[vertexID]->adjacentEdge[adjEdgeCount]=temp; + }; + +void Object::faceEdgePush(size_t faceID,int nEdge) + { + historyManager->record(new Log_FaceEdgePush(index,faceID)); + faceArray[faceID]->edge.push_back(nEdge); + }; + +void Object::faceEdgeChange(size_t faceID,size_t edgeID,int nEdge) + { + historyManager->record(new Log_FaceEdgeChange(index,faceID,edgeID,faceArray[faceID]->edge[edgeID])); + faceArray[faceID]->edge[edgeID]=nEdge; + }; + +void Object::faceEdgeInsert(size_t faceID,size_t edgeID,int nEdge) + { + historyManager->record(new Log_FaceEdgeInsert(index,faceID,edgeID)); + Face *theFace=faceArray[faceID]; + theFace->edge.push_back(0); + for(size_t h=theFace->edge.size()-1;h>edgeID;--h) + { + theFace->edge[h]=theFace->edge[h-1]; + } + theFace->edge[edgeID]=nEdge; + }; + +void Object::vertexAdjacentPush(size_t vertexID,size_t ne) + { + historyManager->record(new Log_VertexAdjacentPush(index,vertexID)); + vertexArray[vertexID]->adjacentEdge.push_back(ne); + } + +void Object::vertexAdjacentChange(size_t vertexID,size_t edgeID,size_t ne) + { + historyManager->record(new Log_VertexAdjacentChange(index,vertexID,edgeID,vertexArray[vertexID]->adjacentEdge[edgeID])); + vertexArray[vertexID]->adjacentEdge[edgeID]=ne; + } + +void Object::vertexAdjacentPop(size_t vertexID) + { + historyManager->record(new Log_VertexAdjacentPop(index,vertexID,vertexArray[vertexID]->adjacentEdge[vertexArray[vertexID]->adjacentEdge.size()-1])); + vertexArray[vertexID]->adjacentEdge.pop_back(); + } +void Object::faceEdgeSwap(size_t faceID,size_t i1,size_t i2) + { + historyManager->record(new Log_FaceEdgeSwap(index,faceID,i1,i2)); + int temp=faceArray[faceID]->edge[i1]; + faceArray[faceID]->edge[i1]=faceArray[faceID]->edge[i2]; + faceArray[faceID]->edge[i2]=temp; + } +void Object::faceEdgeRemove(size_t faceID,size_t edgeID) + { + Face *theFace=faceArray[faceID]; + historyManager->record(new Log_FaceEdgeRemove(index,faceID,edgeID,theFace->edge[edgeID])); + size_t edgeCount=theFace->edge.size(); + for(size_t e=edgeID+1;eedge[e-1]=theFace->edge[e]; + } + theFace->edge.pop_back(); + } + +void Object::redefineControlPoint() + { + vertexArray.~IndexArray(); + vertexArray.pushNull(); + size_t vertexCount=subdivideLevel[0]->vertex.size(); + vertexArray.reserve(vertexCount); + for(size_t i=1;ivertex[i]->position,subdivideLevel[0]->vertex[i]->normal); + } + edgeArray.~IndexArray(); + edgeArray.pushNull(); + size_t edgeCount=subdivideLevel[0]->edge.size(); + edgeArray.reserve(edgeCount); + for(size_t i=1;iedge[i]->start); + // printf("-%d-",subdivideLevel[0]->edge[i]->end); + addEdge(subdivideLevel[0]->edge[i]->start,subdivideLevel[0]->edge[i]->end); + } + faceArray.~IndexArray(); + faceArray.pushNull(); + size_t faceCount=subdivideLevel[0]->face.size(); + faceArray.reserve(faceCount); + for(size_t i=1;iface[i]; + size_t tempEdge[4]={0}; + tempEdge[0]=theSF->edge[0]>0?theSF->edge[0]:-(theSF->edge[0]); + tempEdge[1]=theSF->edge[1]>0?theSF->edge[1]:-(theSF->edge[1]); + tempEdge[2]=theSF->edge[2]>0?theSF->edge[2]:-(theSF->edge[2]); + tempEdge[3]=theSF->edge[3]>0?theSF->edge[3]:-(theSF->edge[3]); + addFace(tempEdge,4); + } + + for(size_t i=0;i<(size_t)subdivideLevelSize;i++) + { + delete subdivideLevel[i]; + subdivideLevel[i]=NULL; + } + subdivideLevelSize=0; + }; + + +void Object::testXMLOut(char *fileName) + { + FILE *fp=fopen(fileName,"w"); + fprintf(fp,"\n"); + for(size_t i=0;i\n",vertexArray[i]->index); + for(size_t e=0;eadjacentEdge.size();e++) + { + fprintf(fp,"\n",vertexArray[i]->adjacentEdge[e]); + } + fprintf(fp,"\n"); + } + for(size_t i=0;i\n",edgeArray[i]->index,edgeArray[i]->start,edgeArray[i]->end,edgeArray[i]->left,edgeArray[i]->right); + } + for(size_t i=0;i\n",faceArray[i]->index); + for(size_t e=0;eedge.size();e++) + fprintf(fp,"\n",faceArray[i]->edge[e]); + fprintf(fp,"\n"); + } + fprintf(fp,""); + fclose(fp); + } + + +void Object::vertexAdjacentSwap(size_t vertexID,size_t i1,size_t i2) + { + historyManager->record(new Log_VertexAdjacentSwap(index,vertexID,i1,i2)); + size_t temp=vertexArray[vertexID]->adjacentEdge[i1]; + vertexArray[vertexID]->adjacentEdge[i1]=vertexArray[vertexID]->adjacentEdge[i2]; + vertexArray[vertexID]->adjacentEdge[i2]=temp; + } + +void Object::faceEdgePop(size_t faceID) + { + historyManager->record(new Log_FaceEdgePop(index,faceID,faceArray[faceID]->edge[faceArray[faceID]->edge.size()-1])); + faceArray[faceID]->edge.pop_back(); + }; + +void Object::edgeEndChange(size_t edgeID,size_t ne) + { + historyManager->record(new Log_EdgeEndChange(index,edgeID,edgeArray[edgeID]->end)); + edgeArray[edgeID]->end=ne; + }; + +void Object::edgeLeftChange(size_t edgeID,size_t nl) + { + historyManager->record(new Log_EdgeLeftChange(index,edgeID,edgeArray[edgeID]->left)); + edgeArray[edgeID]->left=nl; + }; + +void Object::objectFaceRemove(size_t faceID) + { + if(!historyManager->record(new Log_ObjectFaceRemove(index,faceID,faceArray[faceID]))) + { + delete faceArray[faceID]; + } + faceArray.remove(faceID); + }; + + void Object::vertexPositionChangeA(size_t vertexID,float nx,float ny,float nz) + { + Vertex *theVertex=vertexArray[vertexID]; + historyManager->record(new Log_VertexPositionChange(index,vertexID,theVertex->position.x,theVertex->position.y,theVertex->position.z)); + theVertex->position.x=nx; + theVertex->position.y=ny; + theVertex->position.z=nz; + }; + + +void Object::updateVNormal(Vertex *theVertex) + { + size_t adjCount=theVertex->adjacentEdge.size(); + theVertex->normal.null(); + for(size_t i=0;iadjacentEdge[i]]->start==theVertex->index) + { + Face *theFace=faceArray[edgeArray[theVertex->adjacentEdge[i]]->left]; + if(theFace) + theVertex->normal+=theFace->normal; + } + else + { + Face *theFace=faceArray[edgeArray[theVertex->adjacentEdge[i]]->right]; + if(theFace) + theVertex->normal+=theFace->normal; + } + } + theVertex->normal.normalize(); + } + + +void Object::updateVNormal(SubdivideVertex *theVertex,size_t level) + { + size_t adjCount=theVertex->adjacentEdge.size(); + theVertex->normal.null(); + for(size_t i=0;iedge[theVertex->adjacentEdge[i]]->start==theVertex->index) + { + SubdivideFace *theFace=subdivideLevel[level]->face[subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->left]; + if(theFace) + theVertex->normal+=theFace->normal; + } + else + { + SubdivideFace *theFace=subdivideLevel[level]->face[subdivideLevel[level]->edge[theVertex->adjacentEdge[i]]->right]; + if(theFace) + theVertex->normal+=theFace->normal; + } + } + theVertex->normal.normalize(); + } + + +void Object::draw() + { + if(!isHide) + { + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(position.x,position.y,position.z); + glTranslatef(center.x,center.y,center.z); + glRotatef(rotation.w,rotation.x,rotation.y,rotation.z); + glScalef(scale.x,scale.y,scale.z); + glTranslatef(-center.x,-center.y,-center.z); + + if(renderMode==RenderType::Faced) + { + drawFaced(); + } + else if(renderMode==RenderType::Smooth) + { + drawSmooth(); + } + else if(renderMode==RenderType::Wire) + { + drawWire(); + } + else if(renderMode==RenderType::Wireframe) + { + drawWireframe(); + } + else if(renderMode==RenderType::WireframeFaced) + { + drawWireframeFaced(); + } + glPopMatrix(); + } + }; + + +void Object::drawObjectSelected() + { + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(position.x,position.y,position.z); + glTranslatef(center.x,center.y,center.z); + glRotatef(rotation.w,rotation.x,rotation.y,rotation.z); +glScalef(scale.x,scale.y,scale.z); + glTranslatef(-center.x,-center.y,-center.z); + + if(renderMode==RenderType::Smooth || renderMode==RenderType::Wireframe) + { + drawSmoothObjectSelected(); + } + else if(renderMode==RenderType::WireframeFaced || renderMode==RenderType::Faced) + { + drawFacedObjectSelected(); + } + else if(renderMode==RenderType::Wire) + { + drawWireObjectSelected(); + } + glPopMatrix(); + }; + +void Object::drawWireVertexSelected() +{ + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(114,150,250); + glLineWidth(1); + if(subdivideLevelSize==0) + { + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + } + else + { + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glColor3ub(0,0,0); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + glEnd(); + } + glEnable(GL_LIGHTING); +} + +void Object::drawWireEdgeSelected() +{ + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(114,150,250); + glLineWidth(1); + if(subdivideLevelSize==0) + { + glBegin(GL_LINES); + for(size_t i=1;iisSelected)) + { + Vertex *start=vertexArray[e->start]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + } + else + { + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glColor3ub(0,0,0); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + glEnd(); + } + glEnable(GL_LIGHTING); + } + +void Object::drawWireFaceSelected() +{ + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(114,150,250); + glLineWidth(1); + if(subdivideLevelSize==0) + { + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + } + else + { + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glColor3ub(0,0,0); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + glEnd(); + } + glEnable(GL_LIGHTING); + } + + +void Object::drawWireObjectSelected() + { + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(114,150,250); + glLineWidth(1); + if(subdivideLevelSize==0) + { + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + } + else + { + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glColor3ub(0,0,0); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + glEnd(); + } + glEnable(GL_LIGHTING); + } + + +void Object::drawSmoothObjectSelected() + { + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); + glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); + glEnable(GL_LIGHTING); + if(subdivideLevelSize==0) + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;iedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=vertexArray[edgeArray[theFace->edge[e]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=vertexArray[edgeArray[-theFace->edge[e]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(114,186,221); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + } + else + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + glBegin(GL_QUADS); + for(size_t i=1;iface.size();++i) + { + //glBegin(GL_POLYGON); + SubdivideFace *theFace=subdivideLevel[0]->face[i]; + // glNormal3f(theFace->normal.x,theFace->normal.y,theFace->normal.z); + if(theFace->edge[0]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[0]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[0]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[1]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[1]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[1]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[2]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[2]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[2]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[3]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[3]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[3]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + // glEnd(); + } + glEnd(); + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(0,0,0); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + glColor3ub(114,186,221); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + } + + } + +void Object::drawFacedObjectSelected() + { + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); + glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); + glEnable(GL_LIGHTING); + if(subdivideLevelSize==0) + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;inormal.x,theFace->normal.y,theFace->normal.z); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=vertexArray[edgeArray[theFace->edge[e]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=vertexArray[edgeArray[-theFace->edge[e]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(114,186,221); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + } + else + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + glBegin(GL_QUADS); + for(size_t i=1;iface.size();++i) + { + SubdivideFace *theFace=subdivideLevel[0]->face[i]; + glNormal3f(theFace->normal.x,theFace->normal.y,theFace->normal.z); + if(theFace->edge[0]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[0]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[0]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[1]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[1]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[1]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[2]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[2]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[2]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[3]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[3]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[3]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(0,0,0); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + + glColor3ub(114,186,221); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + + glEnd(); + glEnable(GL_LIGHTING); + } + + } + +void Object::drawFacedVertexSelected() + { + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); + glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); + glEnable(GL_LIGHTING); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(position.x,position.y,position.z); + glTranslatef(center.x,center.y,center.z); + glRotatef(rotation.w,rotation.x,rotation.y,rotation.z); +glScalef(scale.x,scale.y,scale.z); + glTranslatef(-center.x,-center.y,-center.z); + + if(subdivideLevelSize==0) + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;inormal.x,theFace->normal.y,theFace->normal.z); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=vertexArray[edgeArray[theFace->edge[e]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=vertexArray[edgeArray[-theFace->edge[e]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(114,186,221); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glColor3ub(0,200,0); + glPointSize(5.0f); + glBegin(GL_POINTS); + + for(size_t i=1;iisSelected) + { + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + } + else + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + glBegin(GL_QUADS); + for(size_t i=1;iface.size();++i) + { + SubdivideFace *theFace=subdivideLevel[0]->face[i]; + glNormal3f(theFace->normal.x,theFace->normal.y,theFace->normal.z); + if(theFace->edge[0]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[0]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[0]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[1]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[1]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[1]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[2]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[2]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[2]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[3]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[3]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[3]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(0,0,0); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + + glColor3ub(114,186,221); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + + glEnd(); + glColor3ub(0,200,0); + glPointSize(5.0f); + glBegin(GL_POINTS); + for(size_t i=1;iisSelected) + { + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + } + glPopMatrix(); + } + + +void Object::drawFacedFaceSelected() + { + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); + glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); + glEnable(GL_LIGHTING); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(position.x,position.y,position.z); + glTranslatef(center.x,center.y,center.z); + glRotatef(rotation.w,rotation.x,rotation.y,rotation.z); + glScalef(scale.x,scale.y,scale.z); + glTranslatef(-center.x,-center.y,-center.z); + + if(subdivideLevelSize==0) + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;iisSelected) + { + Face *theFace=faceArray[i]; + glBegin(GL_POLYGON); + glNormal3f(theFace->normal.x,theFace->normal.y,theFace->normal.z); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=vertexArray[edgeArray[theFace->edge[e]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=vertexArray[edgeArray[-theFace->edge[e]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(100,0,0); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + } + else + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + glBegin(GL_QUADS); + for(size_t i=1;iface.size();++i) + { + SubdivideFace *theFace=subdivideLevel[0]->face[i]; + glNormal3f(theFace->normal.x,theFace->normal.y,theFace->normal.z); + if(theFace->edge[0]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[0]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[0]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[1]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[1]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[1]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[2]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[2]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[2]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[3]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[3]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[3]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(0,0,0); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + + glColor3ub(100,0,0); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + + glEnd(); + glEnable(GL_LIGHTING); + } + glPopMatrix(); + } + +void Object::drawFacedEdgeSelected() + { + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); + glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); + glEnable(GL_LIGHTING); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(position.x,position.y,position.z); + glTranslatef(center.x,center.y,center.z); + glRotatef(rotation.w,rotation.x,rotation.y,rotation.z); + glScalef(scale.x,scale.y,scale.z); + glTranslatef(-center.x,-center.y,-center.z); + + if(subdivideLevelSize==0) + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;inormal.x,theFace->normal.y,theFace->normal.z); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=vertexArray[edgeArray[theFace->edge[e]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=vertexArray[edgeArray[-theFace->edge[e]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(0,0,100); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;iisSelected) + { + Vertex *start=vertexArray[e->start]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + } + else + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + glBegin(GL_QUADS); + for(size_t i=1;iface.size();++i) + { + SubdivideFace *theFace=subdivideLevel[0]->face[i]; + glNormal3f(theFace->normal.x,theFace->normal.y,theFace->normal.z); + if(theFace->edge[0]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[0]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[0]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[1]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[1]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[1]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[2]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[2]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[2]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[3]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[3]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[3]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(0,0,0); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + + glColor3ub(100,0,0); + for(size_t i=1;iisSelected) + { + Vertex *start=vertexArray[e->start]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + } + glPopMatrix(); + }; + +void Object::drawFaced() + { + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); + glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); + glEnable(GL_LIGHTING); + if(subdivideLevelSize==0) + { + for(size_t i=1;inormal.x,theFace->normal.y,theFace->normal.z); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=vertexArray[edgeArray[theFace->edge[e]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=vertexArray[edgeArray[-theFace->edge[e]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + } + else + { + glBegin(GL_QUADS); + for(size_t i=1;iface.size();++i) + { + SubdivideFace *theFace=subdivideLevel[0]->face[i]; + glNormal3f(theFace->normal.x,theFace->normal.y,theFace->normal.z); + if(theFace->edge[0]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[0]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[0]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[1]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[1]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[1]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[2]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[2]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[2]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[3]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[3]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[3]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + + }; + + +void Object::drawNormal() + { + glDisable(GL_LIGHTING); + glBegin(GL_LINES); + for(size_t i=1;inormal*10+v->position; + glVertex3f(v->position.x,v->position.y,v->position.z); + glVertex3f(normal.x,normal.y,normal.z); + } + glEnd(); + glEnable(GL_LIGHTING); + }; + +void Object::drawSmooth() + { + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); + glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); + glEnable(GL_LIGHTING); + if(subdivideLevelSize==0) + { + for(size_t i=1;iisSelected) + { + GLfloat diffuse[4]={1.0f,0.0f,0.0f,1.0f}; + glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse); + }else + { + glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); + } + glBegin(GL_POLYGON); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=vertexArray[edgeArray[theFace->edge[e]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=vertexArray[edgeArray[-theFace->edge[e]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + } + else + { + glBegin(GL_QUADS); + for(size_t i=1;iface.size();++i) + { + SubdivideFace *theFace=subdivideLevel[0]->face[i]; + if(theFace->edge[0]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[0]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[0]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[1]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[1]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[1]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[2]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[2]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[2]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[3]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[3]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[3]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + + }; + + +void Object::drawWire(GLuint r,GLuint g,GLuint b) + { + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub((GLubyte)r,(GLubyte)g,(GLubyte)b); + glLineWidth(1); + if(subdivideLevelSize==0) + { + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + } + else + { + glBegin(GL_LINES); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + glEnd(); + } + glEnable(GL_LIGHTING); + }; + + +void Object::drawWireframe() + { + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); + glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); + glEnable(GL_LIGHTING); + if(subdivideLevelSize==0) + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;iedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=vertexArray[edgeArray[theFace->edge[e]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=vertexArray[edgeArray[-theFace->edge[e]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(0,0,0); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + } + else + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + glBegin(GL_QUADS); + for(size_t i=1;iface.size();++i) + { + //glBegin(GL_POLYGON); + SubdivideFace *theFace=subdivideLevel[0]->face[i]; + // glNormal3f(theFace->normal.x,theFace->normal.y,theFace->normal.z); + if(theFace->edge[0]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[0]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[0]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[1]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[1]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[1]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[2]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[2]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[2]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[3]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[3]]->start]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[3]]->end]; + glNormal3f(v->normal.x,v->normal.y,v->normal.z); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + // glEnd(); + } + glEnd(); + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(0,0,0); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + glEnd(); + glEnable(GL_LIGHTING); + } + + }; + + +void Object::selectionRenderObject() + { + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(position.x,position.y,position.z); + glTranslatef(center.x,center.y,center.z); + glRotatef(rotation.w,rotation.x,rotation.y,rotation.z); + glScalef(scale.x,scale.y,scale.z); + glTranslatef(-center.x,-center.y,-center.z); + + if(subdivideLevelSize==0) + { + for(size_t i=1;iedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=vertexArray[edgeArray[theFace->edge[e]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=vertexArray[edgeArray[-theFace->edge[e]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + } + else + { + glBegin(GL_QUADS); + for(size_t i=1;iface.size();++i) + { + SubdivideFace *theFace=subdivideLevel[0]->face[i]; + if(theFace->edge[0]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[0]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[0]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[1]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[1]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[1]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[2]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[2]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[2]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[3]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[3]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[3]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + glPopMatrix(); + } + +void Object::drawWireframeFaced() + { + glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); + glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); + glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); + glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); + glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); + glEnable(GL_LIGHTING); + if(subdivideLevelSize==0) + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;inormal.x,theFace->normal.y,theFace->normal.z); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=vertexArray[edgeArray[theFace->edge[e]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=vertexArray[edgeArray[-theFace->edge[e]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(0,0,0); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;istart]; + Vertex *end=vertexArray[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + } + else + { + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + glBegin(GL_QUADS); + for(size_t i=1;iface.size();++i) + { + SubdivideFace *theFace=subdivideLevel[0]->face[i]; + glNormal3f(theFace->normal.x,theFace->normal.y,theFace->normal.z); + if(theFace->edge[0]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[0]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[0]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[1]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[1]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[1]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[2]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[2]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[2]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + if(theFace->edge[3]>0) + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[theFace->edge[3]]->start]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + SubdivideVertex *v=subdivideLevel[0]->vertex[subdivideLevel[0]->edge[-theFace->edge[3]]->end]; + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + glDisable(GL_POLYGON_OFFSET_FILL); + glLineWidth(1); + glDisable(GL_LIGHTING); + glColor3ub(0,0,0); + glLineWidth(1); + glBegin(GL_LINES); + for(size_t i=1;iedge.size();++i) + { + SubdivideEdge *e=subdivideLevel[0]->edge[i]; + SubdivideVertex *start=subdivideLevel[0]->vertex[e->start]; + SubdivideVertex *end=subdivideLevel[0]->vertex[e->end]; + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + glEnd(); + glEnable(GL_LIGHTING); + } + }; + +struct ObjectInfo Object::getObjectInfo() + { + struct ObjectInfo result; + result.index=index; + result.centerX=center.x; + result.centerY=center.y; + result.centerZ=center.z; + + result.positionX=position.x; + result.positionY=position.y; + result.positionZ=position.z; + + result.rotationX=rotation.x; + result.rotationY=rotation.y; + result.rotationZ=rotation.z; + + result.scaleX=scale.x; + result.scaleY=scale.y; + result.scaleZ=scale.z; + + result.mat_ambient[0]=mat_ambient[0]; + result.mat_ambient[1]=mat_ambient[1]; + result.mat_ambient[2]=mat_ambient[2]; + result.mat_ambient[3]=mat_ambient[3]; + + result.mat_diffuse[0]=mat_diffuse[0]; + result.mat_diffuse[1]=mat_diffuse[1]; + result.mat_diffuse[2]=mat_diffuse[2]; + result.mat_diffuse[3]=mat_diffuse[3]; + + result.mat_specular[0]=mat_specular[0]; + result.mat_specular[1]=mat_specular[1]; + result.mat_specular[2]=mat_specular[2]; + result.mat_specular[3]=mat_specular[3]; + + result.mat_emission[0]=mat_emission[0]; + result.mat_emission[1]=mat_emission[1]; + result.mat_emission[2]=mat_emission[2]; + result.mat_emission[3]=mat_emission[3]; + + result.mat_shininess[0]=mat_shininess[0]; + result.mat_shininess[1]=mat_shininess[1]; + result.mat_shininess[2]=mat_shininess[2]; + result.mat_shininess[3]=mat_shininess[3]; + + result.vertexCount=vertexArray.size(); + result.edgeCount=edgeArray.size(); + result.faceCount=faceArray.size(); + return result; + }; + +void Object::buildPSCacheFromEID(std::vector &edgeToBeSub) +{ + if(subdivideLevelSize>0) + { + std::vector vertexToBeSub; + vertexToBeSub.reserve(1000); + for(size_t i=0;istart]->isSub) + { + vertexToBeSub.push_back(theEdge->start); + vertexArray[theEdge->start]->isSub=true; + } + + if(!vertexArray[theEdge->end]->isSub) + { + vertexToBeSub.push_back(theEdge->end); + vertexArray[theEdge->start]->isSub=true; + } + } + } + + for(size_t i=0;iisSub=false; + } + + buildPSCacheFromVID(vertexToBeSub); + } +} + +void Object::buildPSCacheFromFID(std::vector &faceToBeSub) +{ + if(subdivideLevelSize>0) + { + std::vector vertexToBeSub; + vertexToBeSub.reserve(1000); + for(size_t i=0;iedge.size();++e) + { + if(theFace->edge[e]>0) + { + Edge *theEdge=edgeArray[theFace->edge[e]]; + if(!vertexArray[theEdge->start]->isSub) + { + vertexToBeSub.push_back(theEdge->start); + vertexArray[theEdge->start]->isSub=true; + } + + if(!vertexArray[theEdge->end]->isSub) + { + vertexToBeSub.push_back(theEdge->end); + vertexArray[theEdge->end]->isSub=true; + } + } + else + { + Edge *theEdge=edgeArray[-theFace->edge[e]]; + if(!vertexArray[theEdge->start]->isSub) + { + vertexToBeSub.push_back(theEdge->start); + vertexArray[theEdge->start]->isSub=true; + } + + if(!vertexArray[theEdge->end]->isSub) + { + vertexToBeSub.push_back(theEdge->end); + vertexArray[theEdge->end]->isSub=true; + } + } + } + } + + for(size_t i=0;iisSub=false; + } + + buildPSCacheFromVID(vertexToBeSub); + } +} + +void Object::buildPSCacheFromVID(std::vector &vertexToBeSub) +{ + if(subdivideLevelSize>0) + { + std::vector faceToBeSub; + faceToBeSub.reserve(1000); + for(size_t i=0;iadjacentEdge.size();++e) + { + Edge *theEdge=edgeArray[theVertex->adjacentEdge[e]]; + if(theEdge) + { + if(theEdge->start==theVertex->index) + { + if(theEdge->right && !faceArray[theEdge->right]->isSub) + { + faceToBeSub.push_back(faceArray[theEdge->right]); + faceArray[theEdge->right]->isSub=true; + } + } + else + { + if(theEdge->left && !faceArray[theEdge->left]->isSub) + { + faceToBeSub.push_back(faceArray[theEdge->left]); + faceArray[theEdge->left]->isSub=true; + } + } + } + } + } + } + buildPSCache(faceToBeSub); + } +} + +void Object::expandSubFace(std::vector &originalList,size_t level) +{ + //ÕâÀïoriginalListÓ¦¸Ã·ÖÅäºÃ¿Õ¼ä + //originalListÖеÄidÓ¦¸ÃÊÇ´ýϸ·ÖµÄ״̬ + SubdivideLevel *theLevel=subdivideLevel[level]; + size_t originalCount=originalList.size(); + std::vector tempVertexList; + tempVertexList.reserve(originalCount*4); + for(size_t i=0;iedge[e]>0) + { + SubdivideVertex *theVertex=theLevel->vertex[theLevel->edge[theFace->edge[e]]->end]; + if(!theVertex->isSub) + { + tempVertexList.push_back(theVertex); + theVertex->isSub=true; + } + } + else + { + SubdivideVertex *theVertex=theLevel->vertex[theLevel->edge[-theFace->edge[e]]->start]; + if(!theVertex->isSub) + { + tempVertexList.push_back(theVertex); + theVertex->isSub=true; + } + } + } + } + + for(size_t i=0;iisSub=false; + for(size_t e=0;eadjacentEdge.size();++e) + { + SubdivideEdge *theEdge=theLevel->edge[theVertex->adjacentEdge[e]]; + if(theEdge->start==theVertex->index) + { + SubdivideFace *theFace=theLevel->face[theEdge->right]; + if(theFace && !theFace->isSub) + { + originalList.push_back(theFace); + theFace->isSub=true; + } + } + else + { + SubdivideFace *theFace=theLevel->face[theEdge->left]; + if(theFace && !theFace->isSub) + { + originalList.push_back(theFace); + theFace->isSub=true; + } + } + } + } +} + +/*void Object::expandSubFace(std::vector &originalList,size_t level) +{ + //ÕâÀïoriginalListÓ¦¸Ã·ÖÅäºÃ¿Õ¼ä + //originalListÖеÄidÓ¦¸ÃÊÇ´ýϸ·ÖµÄ״̬ + size_t originalCount=originalList.size(); + for(size_t i=0;iedge[e]>0) + { + if(theLevel->edge[theFace->edge[e]]->left && theLevel->face[theLevel->edge[theFace->edge[e]]->left]->isSub) + continue; + theVertex=theLevel->vertex[theLevel->edge[theFace->edge[e]]->end]; + } + else + { + if(theLevel->edge[-theFace->edge[e]]->right>0 && theLevel->face[theLevel->edge[-theFace->edge[e]]->right]->isSub) + continue; + theVertex=theLevel->vertex[theLevel->edge[-theFace->edge[e]]->start]; + } + size_t adjacentEdgeCount=theVertex->adjacentEdge.size(); + for(size_t h=0;hedge[theVertex->adjacentEdge[h]]->right && !theLevel->face[theLevel->edge[theVertex->adjacentEdge[h]]->right]->isSub) + { + SubdivideFace *theSubFace=theLevel->face[theLevel->edge[theVertex->adjacentEdge[h]]->right]; + originalList.push_back(theSubFace); + theSubFace->isSub=true; + } + if(theLevel->edge[theVertex->adjacentEdge[h]]->left && !theLevel->face[theLevel->edge[theVertex->adjacentEdge[h]]->left]->isSub) + { + SubdivideFace *theSubFace=theLevel->face[theLevel->edge[theVertex->adjacentEdge[h]]->left]; + originalList.push_back(theSubFace); + theSubFace->isSub=true; + } + } + } + } +}*/ + +void Object::expandSubFace(std::vector &originalList) +{ + //ÕâÀïoriginalListÓ¦¸Ã·ÖÅäºÃ¿Õ¼ä + //originalListÖеÄidÓ¦¸ÃÊÇ´ýϸ·ÖµÄ״̬ + size_t originalCount=originalList.size(); + std::vector tempVertexList; + tempVertexList.reserve(originalCount*5); + for(size_t i=0;iedge.size(); + for(size_t e=0;eedge[e]>0) + { + Vertex *theVertex=vertexArray[edgeArray[theFace->edge[e]]->end]; + if(!theVertex->isSub) + { + tempVertexList.push_back(theVertex); + } + } + else + { + Vertex *theVertex=vertexArray[edgeArray[-theFace->edge[e]]->start]; + if(!theVertex->isSub) + { + tempVertexList.push_back(theVertex); + } + } + } + } + for(size_t i=0;iisSub=false; + for(size_t e=0;eadjacentEdge.size();++e) + { + Edge *theEdge=edgeArray[theVertex->adjacentEdge[e]]; + if(theEdge->start==theVertex->index) + { + Face *theFace=faceArray[theEdge->right]; + if(theFace && !theFace->isSub) + originalList.push_back(theFace); + } + else + { + Face *theFace=faceArray[theEdge->left]; + if(theFace && !theFace->isSub) + originalList.push_back(theFace); + } + } + } +} + +/*void Object::expandSubFace(std::vector &originalList) +{ + //ÕâÀïoriginalListÓ¦¸Ã·ÖÅäºÃ¿Õ¼ä + //originalListÖеÄidÓ¦¸ÃÊÇ´ýϸ·ÖµÄ״̬ + size_t originalCount=originalList.size(); + for(size_t i=0;iedge.size(); + for(size_t e=0;eedge[e]>0) + { + if(edgeArray[theFace->edge[e]]->left && faceArray[edgeArray[theFace->edge[e]]->left]->isSub) + continue; + theVertex=vertexArray[edgeArray[theFace->edge[e]]->end]; + } + else + { + if(edgeArray[-theFace->edge[e]]->right>0 && faceArray[edgeArray[-theFace->edge[e]]->right]->isSub) + continue; + theVertex=vertexArray[edgeArray[-theFace->edge[e]]->start]; + } + size_t adjacentEdgeCount=theVertex->adjacentEdge.size(); + for(size_t h=0;hadjacentEdge[h]]->right && !faceArray[edgeArray[theVertex->adjacentEdge[h]]->right]->isSub) + { + Face *theSubFace=faceArray[edgeArray[theVertex->adjacentEdge[h]]->right]; + originalList.push_back(theSubFace); + theSubFace->isSub=true; + } + if(edgeArray[theVertex->adjacentEdge[h]]->left && !faceArray[edgeArray[theVertex->adjacentEdge[h]]->left]->isSub) + { + Face *theSubFace=faceArray[edgeArray[theVertex->adjacentEdge[h]]->left]; + originalList.push_back(theSubFace); + theSubFace->isSub=true; + } + } + } + } +}*/ + +void Object::buildPSCache(std::vector &faceToBeSub) +{ + if(subdivideLevelSize>0) + { + size_t level=subdivideLevelSize-1; + size_t faceCount=faceToBeSub.size(); + PSFaceCache.reserve(faceCount); + PSSubFaceCache[level].reserve(faceCount*5); + for(size_t i=0;iisSub=true; + size_t subFaceCount=faceToBeSub[i]->subdivideFace.size(); + for(size_t h=0;hface[faceToBeSub[i]->subdivideFace[h]]; + PSSubFaceCache[level].push_back(theSubF); + theSubF->isSub=true; + } + } + expandSubFace(PSSubFaceCache[level],level); + for(int h=level-1;h>0;--h) + { + size_t e2=h; + size_t e1=h+1; + faceCount=PSSubFaceCache[e1].size(); + PSSubFaceCache[e2].reserve(faceCount*5); + for(size_t i=0;iface[(PSSubFaceCache[e1])[i]->subFace[0]]; + PSSubFaceCache[e2].push_back(theSubFace); + theSubFace->isSub=true; + theSubFace=subdivideLevel[e2]->face[(PSSubFaceCache[e1])[i]->subFace[1]]; + PSSubFaceCache[e2].push_back(theSubFace); + theSubFace->isSub=true; + theSubFace=subdivideLevel[e2]->face[(PSSubFaceCache[e1])[i]->subFace[2]]; + PSSubFaceCache[e2].push_back(theSubFace); + theSubFace->isSub=true; + theSubFace=subdivideLevel[e2]->face[(PSSubFaceCache[e1])[i]->subFace[3]]; + PSSubFaceCache[e2].push_back(theSubFace); + theSubFace->isSub=true; + } + expandSubFace(PSSubFaceCache[e2],e2); + } + } +} + +void Object::updateAllNormal() + { + size_t faceCount=faceArray.size(); + for(size_t i=1;i0;--e) + { + faceCount=PSSubFaceCache[e].size(); + for(size_t i=0;ivertex[theFace->center]->position.null(); + theSubLevel->vertex[theFace->center]->normal.null(); + for(size_t e=0;eedge[e]<0) + { + theVertexList[e]=theLevel->vertex[theLevel->edge[-theFace->edge[e]]->start]; + } + else + { + theVertexList[e]=theLevel->vertex[theLevel->edge[theFace->edge[e]]->end]; + } + theSubLevel->vertex[theFace->center]->position+=theVertexList[e]->position; + theSubLevel->vertex[theFace->center]->normal+=theVertexList[e]->normal; + } + theSubLevel->vertex[theFace->center]->position/=(float)edgeCount; + theSubLevel->vertex[theFace->center]->normal/=(float)edgeCount; + //¼ÆËãеĶ¥µã + for(size_t i=0;isubdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î¼ÆËãµ½Õâ¸öµã + //³õʼ»¯Ï¸·Ö²½Êý + theV->subdivideId=subdivideId; + theV->subdivideStep=0; + //Éú³ÉÕâ¸öµãµÄϸ·Öµã + //Ê×ÏȼÆËãÏàÁÚµãµÄ×ø±êºÍEv + theSubLevel->vertex[theV->nextLevel]->position.null(); + theSubLevel->vertex[theV->nextLevel]->position+=EAdjacentVertex(theV,level); + if(theV->edgeVertex) + { + theSubLevel->vertex[theV->nextLevel]->position+=theV->position*6; + theSubLevel->vertex[theV->nextLevel]->position/=8; + } + else + { + //¼ÓÉÏÕâ¸öÃæµÄÖеã + theSubLevel->vertex[theV->nextLevel]->position+=theSubLevel->vertex[theFace->center]->position; + theV->subdivideStep++; + size_t adjEdgeCount=theV->adjacentEdge.size(); + for(size_t h=0;hedge[theV->adjacentEdge[h]]->end==theV->index) + { + if(!theLevel->face[theLevel->edge[theV->adjacentEdge[h]]->left]->isSub) + { + theSubLevel->vertex[theV->nextLevel]->position+=theSubLevel->vertex[theLevel->face[theLevel->edge[theV->adjacentEdge[h]]->left]->center]->position; + theV->subdivideStep++; + } + } + else + { + if(!theLevel->face[theLevel->edge[theV->adjacentEdge[h]]->right]->isSub) + { + theSubLevel->vertex[theV->nextLevel]->position+=theSubLevel->vertex[theLevel->face[theLevel->edge[theV->adjacentEdge[h]]->right]->center]->position; + theV->subdivideStep++; + } + } + } + size_t n=theV->adjacentEdge.size(); + if(n==(size_t)(theV->subdivideStep)) + { + theSubLevel->vertex[theV->nextLevel]->position+=theV->position*(float)(n*n-2*n); + theSubLevel->vertex[theV->nextLevel]->position/=(float)(n*n); + } + } + } + else + { + if(!theV->edgeVertex) + { + theSubLevel->vertex[theV->nextLevel]->position+=theSubLevel->vertex[theFace->center]->position; + theV->subdivideStep++; + size_t n=theV->adjacentEdge.size(); + if(n==(size_t)(theV->subdivideStep)) + { + theSubLevel->vertex[theV->nextLevel]->position+=theV->position*(float)(n*n-2*n); + theSubLevel->vertex[theV->nextLevel]->position/=(float)(n*n); + } + } + } + } + delete theVertexList; + //Ö®ºó´¦Àíÿһ¸ö±ß + for(size_t i=0;iedge[i]>0) + { + theEdge=theLevel->edge[theFace->edge[i]]; + if(theEdge->subdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î´¦ÀíÕâ¸ö±ß + theEdge->subdivideId=subdivideId; + theSubLevel->vertex[theEdge->middle]->position.null(); + theSubLevel->vertex[theEdge->middle]->position+=theLevel->vertex[theEdge->start]->position+theLevel->vertex[theEdge->end]->position; + if(theEdge->left!=0 ) + { + if(theLevel->face[theEdge->left]->isSub) + { + //Èç¹ûÕâ¸ö±ßµÄÁ½±ß¶¼ÔÚ¾Ö²¿Ï¸·ÖµÄ·¶Î§Ö®ÄÚ + theSubLevel->vertex[theEdge->middle]->position+=theSubLevel->vertex[theFace->center]->position; + } + else + { + theSubLevel->vertex[theEdge->middle]->position+=theSubLevel->vertex[theLevel->face[theEdge->left]->center]->position+theSubLevel->vertex[theFace->center]->position; + theSubLevel->vertex[theEdge->middle]->position/=4; + } + } + else + { + theSubLevel->vertex[theEdge->middle]->position/=2; + } + } + else + { + //Èç¹û²»ÊǵÚÒ»´Î¼ÆËã + theSubLevel->vertex[theEdge->middle]->position+=theSubLevel->vertex[theFace->center]->position; + theSubLevel->vertex[theEdge->middle]->position/=4; + } + } + else + { + theEdge=theLevel->edge[-theFace->edge[i]]; + if(theEdge->subdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î´¦ÀíÕâ¸ö±ß + theEdge->subdivideId=subdivideId; + theSubLevel->vertex[theEdge->middle]->position.null(); + theSubLevel->vertex[theEdge->middle]->position+=theLevel->vertex[theEdge->start]->position+theLevel->vertex[theEdge->end]->position; + if( theEdge->right!=0) + { + if(theLevel->face[theEdge->right]->isSub) + { + theSubLevel->vertex[theEdge->middle]->position+=theSubLevel->vertex[theFace->center]->position; + } + else + { + theSubLevel->vertex[theEdge->middle]->position+=theSubLevel->vertex[theLevel->face[theEdge->right]->center]->position+theSubLevel->vertex[theFace->center]->position; + theSubLevel->vertex[theEdge->middle]->position/=4; + } + } + else + { + theSubLevel->vertex[theEdge->middle]->position/=2; + } + } + else + { + //Èç¹û²»ÊǵÚÒ»´Î¼ÆËã + theSubLevel->vertex[theEdge->middle]->position+=theSubLevel->vertex[theFace->center]->position; + theSubLevel->vertex[theEdge->middle]->position/=4; + } + } + } +} + +void Object::buildPSCacheFast(std::vector &faceToBeSub) +{ + if(subdivideLevelSize>0) + { + size_t subCount=faceToBeSub.size(); + PSFaceCache.reserve(subCount*2); + for(size_t i=0;iisSub=true; + } + expandSubFace(faceToBeSub); + subCount=PSFaceCache.size(); + size_t level=subdivideLevelSize-1; + PSSubFaceCache[level].reserve(5*subCount); + for(size_t i=0;isubdivideFace.size(); + for(size_t h=0;hface[PSFaceCache[i]->subdivideFace[h]]); + subdivideLevel[level]->face[PSFaceCache[i]->subdivideFace[h]]->isSub=true; + } + } + for(size_t e=level;e>0;--e) + { + size_t subCount=PSSubFaceCache[e].size(); + size_t e2=e-1; + PSSubFaceCache[e2].reserve(subCount*2); + for(size_t i=0;iface[(PSSubFaceCache[level])[i]->subFace[0]]); + subdivideLevel[e2]->face[(PSSubFaceCache[level])[i]->subFace[0]]->isSub=true; + PSSubFaceCache[e2].push_back(subdivideLevel[e2]->face[(PSSubFaceCache[level])[i]->subFace[1]]); + subdivideLevel[e2]->face[(PSSubFaceCache[level])[i]->subFace[1]]->isSub=true; + PSSubFaceCache[e2].push_back(subdivideLevel[e2]->face[(PSSubFaceCache[level])[i]->subFace[2]]); + subdivideLevel[e2]->face[(PSSubFaceCache[level])[i]->subFace[2]]->isSub=true; + PSSubFaceCache[e2].push_back(subdivideLevel[e2]->face[(PSSubFaceCache[level])[i]->subFace[3]]); + subdivideLevel[e2]->face[(PSSubFaceCache[level])[i]->subFace[3]]->isSub=true; + } + } + } +} + +void Object::partialSubdivideFace(Face *theFace,int level) +{ + //Ê×ÏÈÒªµÃµ½Õâ¸öÃæµÄ¶Ëµã + //µÃµ½¶ËµãºÍ±ßµÄÊýÄ¿ + size_t edgeCount=theFace->edge.size(); + SubdivideLevel *theLevel=subdivideLevel[level]; + //н¨´æ·Å¶¥µãµÄÊý×é + Vertex **theVertexList=new Vertex*[edgeCount]; + theLevel->vertex[theFace->center]->position.null(); + theLevel->vertex[theFace->center]->normal.null(); + for(size_t e=0;eedge[e]<0) + { + theVertexList[e]=vertexArray[edgeArray[-theFace->edge[e]]->start]; + } + else + { + theVertexList[e]=vertexArray[edgeArray[theFace->edge[e]]->end]; + } + theLevel->vertex[theFace->center]->position+=theVertexList[e]->position; + theLevel->vertex[theFace->center]->normal+=theVertexList[e]->normal; + } + //¼ÆËãÕâ¸öÃæµÄÖеã + theLevel->vertex[theFace->center]->position/=(float)edgeCount; + theLevel->vertex[theFace->center]->normal/=(float)edgeCount; + //¼ÆËãеĶ¥µã + for(size_t i=0;isubdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î¼ÆËãµ½Õâ¸öµã + //³õʼ»¯Ï¸·Ö²½Êý + theV->subdivideId=subdivideId; + theV->subdivideStep=0; + //Éú³ÉÕâ¸öµãµÄϸ·Öµã + //Ê×ÏȼÆËãÏàÁÚµãµÄ×ø±êºÍEv + theLevel->vertex[theV->nextLevel]->position.null(); + theLevel->vertex[theV->nextLevel]->position+=EAdjacentVertex(theV); + if(theV->edgeVertex) + { + theLevel->vertex[theV->nextLevel]->position+=theV->position*6; + theLevel->vertex[theV->nextLevel]->position/=8; + } + else + { + //¼ÓÉÏÕâ¸öÃæµÄÖеã + theLevel->vertex[theV->nextLevel]->position+=theLevel->vertex[theFace->center]->position; + theV->subdivideStep++; + size_t adjEdgeCount=theV->adjacentEdge.size(); + for(size_t h=0;hadjacentEdge[h]]->end==theV->index) + { + if(!faceArray[edgeArray[theV->adjacentEdge[h]]->left]->isSub) + { + theLevel->vertex[theV->nextLevel]->position+=theLevel->vertex[faceArray[edgeArray[theV->adjacentEdge[h]]->left]->center]->position; + ++(theV->subdivideStep); + } + } + else + { + if(!faceArray[edgeArray[theV->adjacentEdge[h]]->right]->isSub) + { + theLevel->vertex[theV->nextLevel]->position+=theLevel->vertex[faceArray[edgeArray[theV->adjacentEdge[h]]->right]->center]->position; + ++(theV->subdivideStep); + } + } + } + size_t n=theV->adjacentEdge.size(); + if(n==(size_t)(theV->subdivideStep)) + { + theLevel->vertex[theV->nextLevel]->position+=theV->position*(float)(n*n-2*n); + theLevel->vertex[theV->nextLevel]->position/=(float)(n*n); + } + } + } + else + { + if(!theV->edgeVertex) + { + theLevel->vertex[theV->nextLevel]->position+=theLevel->vertex[theFace->center]->position; + ++(theV->subdivideStep); + size_t n=theV->adjacentEdge.size(); + if(n==(size_t)(theV->subdivideStep)) + { + theLevel->vertex[theV->nextLevel]->position+=theVertexList[i]->position*(float)(n*n-2*n); + theLevel->vertex[theV->nextLevel]->position/=(float)(n*n); + } + } + } + } + delete theVertexList; + //Ö®ºó´¦Àíÿһ¸ö±ß + for(size_t i=0;iedge[i]>0) + { + theEdge=edgeArray[theFace->edge[i]]; + if(theEdge->subdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î´¦ÀíÕâ¸ö±ß + theEdge->subdivideId=subdivideId; + theLevel->vertex[theEdge->middle]->position.null(); + theLevel->vertex[theEdge->middle]->position+=vertexArray[theEdge->start]->position+vertexArray[theEdge->end]->position; + if(theEdge->left) + { + if(faceArray[theEdge->left]->isSub) + { + //Èç¹ûÕâ¸ö±ßµÄÁ½±ß¶¼ÔÚ¾Ö²¿Ï¸·ÖµÄ·¶Î§Ö®ÄÚ + theLevel->vertex[theEdge->middle]->position+=theLevel->vertex[theFace->center]->position; + } + else + { + theLevel->vertex[theEdge->middle]->position+=theLevel->vertex[faceArray[theEdge->left]->center]->position+theLevel->vertex[theFace->center]->position; + theLevel->vertex[theEdge->middle]->position/=4; + } + } + else + { + theLevel->vertex[theEdge->middle]->position/=2; + } + } + else + { + //Èç¹û²»ÊǵÚÒ»´Î¼ÆËã + theLevel->vertex[theEdge->middle]->position+=theLevel->vertex[theFace->center]->position; + theLevel->vertex[theEdge->middle]->position/=4; + } + } + else + { + theEdge=edgeArray[-theFace->edge[i]]; + if(theEdge->subdivideId!=subdivideId) + { + //Èç¹ûÊǵÚÒ»´Î´¦ÀíÕâ¸ö±ß + theEdge->subdivideId=subdivideId; + theLevel->vertex[theEdge->middle]->position.null(); + theLevel->vertex[theEdge->middle]->position+=vertexArray[theEdge->start]->position+vertexArray[theEdge->end]->position; + if(theEdge->right) + { + if(faceArray[theEdge->right]->isSub) + { + theLevel->vertex[theEdge->middle]->position+=theLevel->vertex[theFace->center]->position; + } + else + { + theLevel->vertex[theEdge->middle]->position+=theLevel->vertex[faceArray[theEdge->right]->center]->position+theLevel->vertex[theFace->center]->position; + theLevel->vertex[theEdge->middle]->position/=4; + } + } + else + { + theLevel->vertex[theEdge->middle]->position/=2; + } + } + else + { + //Èç¹û²»ÊǵÚÒ»´Î¼ÆËã + theLevel->vertex[theEdge->middle]->position+=theLevel->vertex[theFace->center]->position; + theLevel->vertex[theEdge->middle]->position/=4; + } + } + } +} + + +Object::~Object(void) +{ +} \ No newline at end of file diff --git a/Object.h b/Object.h new file mode 100755 index 0000000..ef1590e --- /dev/null +++ b/Object.h @@ -0,0 +1,337 @@ +#pragma once + +#include +#include +#include +#include "SubdivideLevel.h" +#include "IndexArray.h" +#include "Vertex.h" +#include "Edge.h" +#include "Face.h" + +#include +#include + +#include "Log_VertexPositionChange.h" +#include "Log_VertexNormalChange.h" +#include "Log_VertexAdjacentPush.h" +#include "Log_VertexAdjacentChange.h" +#include "Log_VertexAdjacentPop.h" +#include "Log_VertexAdjacentSwap.h" +#include "Log_VertexAdjacentRemove.h" +#include "Log_VertexAdjacentInsert.h" + +#include "Log_EdgeStartChange.h" +#include "Log_EdgeEndChange.h" +#include "Log_EdgeLeftChange.h" +#include "Log_EdgeRightChange.h" + +#include "Log_FaceEdgePush.h" +#include "Log_FaceEdgeChange.h" +#include "Log_FaceEdgePop.h" +#include "Log_FaceEdgeSwap.h" +#include "Log_FaceEdgeRemove.h" +#include "Log_FaceEdgeInsert.h" + +#include "Log_ObjectPositionChange.h" +#include "Log_ObjectRotationChange.h" +#include "Log_ObjectScaleChange.h" +#include "Log_ObjectColorChange.h" +#include "Log_ObjectVertexAdd.h" +#include "Log_ObjectVertexRemove.h" +#include "Log_ObjectEdgeAdd.h" +#include "Log_ObjectEdgeRemove.h" +#include "Log_ObjectFaceAdd.h" +#include "Log_ObjectFaceRemove.h" +#include "HistoryManager.h" + +//ÀúÊ·¼Ç¼¹ÜÀíÆ÷ +extern HistoryManager *historyManager; + +//äÖȾÀàÐÍ +DECLARE_ENUM(RenderType) + //´øÏß¿òƽ»¬äÖȾ + Wireframe=234, + //´øÏß¿ò·Çƽ»¬äÖȾ + WireframeFaced, + //Ïß¿òäÖȾ + Wire, + //ÎÞÏß¿òƽ»¬äÖȾ + Smooth, + //ÎÞÏß¿ò·Çƽ»¬äÖȾ + Faced +END_ENUM() + +//¾µÏñ¶Ô³ÆÃæ +DECLARE_ENUM(MirrorMode) + MirrorXY=345, + MirrorYZ, + MirrorXZ, + Nothing +END_ENUM() + +//ÎïÌåÀàµÄÊôÐÔ,ÓÃÓÚ´æ´¢³ÉÎļþ +struct ObjectInfo +{ + size_t index; + float centerX; + float centerY; + float centerZ; + float positionX; + float positionY; + float positionZ; + float rotationX; + float rotationY; + float rotationZ; + float scaleX; + float scaleY; + float scaleZ; + GLfloat mat_ambient[4]; + GLfloat mat_diffuse[4]; + GLfloat mat_specular[4]; + GLfloat mat_emission[4]; + GLfloat mat_shininess[4]; + size_t vertexCount; + size_t edgeCount; + size_t faceCount; +}; + +//¶¨ÒåÎïÌåµÄÀà +class Object : public ElementBase +{ +public: + //ÎïÌåµÄÃû³Æ + std::string name; + //ÎïÌåµÄÖÐÐÄλÖà + Vector center; + //ÎïÌåλÖÃÆ«ÒÆÁ¿ + Vector position; + //ÎïÌåµÄÐýתƫÒÆÁ¿ + Vector rotation; + //ÎïÌåµÄËõ·Å³ß¶È + Vector scale; + //ÊÇ·ñÐèÒªäÖȾ¾µÏñÎïÌå + bool isMirror; + //¾µÏñÎïÌåµÄ¶Ô³ÆÃæ + MirrorMode theMirrorMode; + //¾µÏñÎïÌåÏà¶ÔÔ­ÎïÌåÖÐÐĵÄλÖà + Vector mirrorPosition; + //ÊÇ·ñ±»Òþ²ØÁË + bool isHide; + //²ÄÖÊ + GLfloat mat_ambient[4]; + GLfloat mat_diffuse[4]; + GLfloat mat_specular[4]; + GLfloat mat_emission[4]; + GLfloat mat_shininess[4]; + //äÖȾģʽ + RenderType renderMode; + +private: + //¶¥µãÁбí + IndexArray vertexArray; + //±ßÁбí + IndexArray edgeArray; + //ÃæÁбí + IndexArray faceArray; + //¾Ö²¿Ï¸·ÖÃ滺³åÇø + std::vector PSFaceCache; + std::vector PSSubFaceCache[5]; + +private: + //ϸ·Ö²ã´Î,ÏÞÖÆÔÚ5²ã + SubdivideLevel *subdivideLevel[5]; + //µ±Ç°ÓÐϸ·Ö²ã´ÎÊýÄ¿ + int subdivideLevelSize; + //µ±Ç°µÄϸ·Ö±àºÅ + int subdivideId; + +public: + Object(char *theName); + //Ôö¼ÓеĶ¥µã,·µ»ØÌí¼ÓµÄµã±àºÅ + size_t addVertex(float p1,float p2,float p3); + size_t addVertex(float p1,float p2,float p3,float n1,float n2,float n3); + size_t addVertex(Vector &pos); + size_t addVertex(size_t ei,Vertex *theV); + size_t addVertex(Vector &pos,Vector &nor); + + //Ôö¼Óеıß,·µ»ØÌí¼ÓµÄµã±àºÅ + size_t addEdge(int start,int end); + //Ö±½ÓÔÚÖ¸¶¨µÄλÖÃÌí¼ÓÐÂµÄ±ß + size_t addEdge(size_t ei,Edge *theE); + + //µÃµ½Ö¸¶¨Î»ÖõĶ¥µã + Vertex * vertex(size_t index); + //µÃµ½Ö¸¶¨Î»ÖÃµÄ±ß + Edge * edge(size_t index); + //µÃµ½Ö¸¶¨Î»ÖõÄÃæ + Face * face(size_t index); + + //Ìí¼ÓÒ»¸öÃæ,·µ»ØÌí¼ÓµÄÃæµÄ±àºÅ + size_t addFace(size_t theEdgeArray[],size_t size); + //Ö±½ÓÌí¼ÓÒ»¸öÃæ + size_t addFace(size_t ei,Face *theF); + + //½«ÎļþÊä³ö³Éobj¸ñʽ,ÓÃÓÚ²âÊÔ + void testOut(char *fileName); + //½«Ö¸¶¨µÄϸ·Ö²ã´ÎÊä³ö³Éobj¸ñʽ,ÓÃÓÚ²âÊÔ + void SubTestOut(char *fileName,int level); + //½«×îÍâ²ãµÄϸ·Ö²ã´ÎÊä³ö + void SubTestOut(char *fileName); + //½«µ±Ç°ÎïÌåϸ·Ö + void subdivide(); + //Çå¿Õ¾Ö²¿Ï¸·ÖÃ滺³åÇø + void clearPSCache(); + //ͨ¹ý¾Ö²¿Ï¸·ÖÃ漯À´½¨Á¢¾Ö²¿Ï¸·Ö»º³åÇø + void buildPSCache(std::vector &faceToBeSub); + //¿ìËÙ½¨Á¢¾Ö²¿Ï¸·Ö»º³å,¾«È·ÐÔ»¹ÐèҪ̽ÌÖ + void buildPSCacheFast(std::vector &faceToBeSub); + //¾Ö²¿Ï¸·Ö + void partialSubdivision(); + //¼õÉÙϸ·ÖµÄ²ã´Î + void unSubdivide(); + + //ͨ¹ý¶¥µã±àºÅ¼¯Éú³É¾Ö²¿Ï¸·ÖÃ滺³å + void buildPSCacheFromVID(std::vector &vertexToBeSub); + //ͨ¹ý±ß±àºÅ¼¯Éú³É¾Ö²¿Ï¸·ÖÃ滺³å + void buildPSCacheFromEID(std::vector &edgeToBeSub); + //ͨ¹ýÃæ±àºÅ¼¯Éú³É¾Ö²¿Ï¸·ÖÃ滺³å + void buildPSCacheFromFID(std::vector &faceToBeSub); + + //ÏÔʾ¾µÏñÎïÌå + //type Ϊ¾µÏñÃæÀàÐÍ + //theMirrorPosition ÎÒ¾µÏñÎïÌåÖÐÐÄÏà¶ÔÓÚÔ­ÎïÌåÖÐÐĵÄλÖà + void mirror(MirrorMode type,Vector &theMirrorPosition); + //È¡Ïû¾µÏñÎïÌå + void unMirror(); + //¸üÐÂϸ·Ö + void updateSubdivision(); + + //µÃµ½µ±Ç°ÎïÌåµÄÊôÐÔ,ÓÃÓÚ´æ´¢ + struct ObjectInfo getObjectInfo(); + //Ö±½ÓÌí¼Ó¶¥µã,ÓÃÓÚ´ÓÎļþÖжÁÈ¡ + void directPushVertex(Vertex *theVertex); + //Ö±½ÓÌí¼Ó±ß + void directPushEdge(Edge *theEdge); + //Ö±½ÓÌí¼ÓÃæ + void directPushFace(Face *theFace); + + //»æÖÆÏß¿ò·Çƽ»¬ÎïÌå + void drawWireframeFaced(); + //Ϊѡȡ»æÖÆÎïÌå + void selectionRenderObject(); + //äÖȾÏß¿òƽ»¬ÎïÌå + void drawWireframe(); + //äÖȾÏß¿ò + void drawWire(GLuint r=0,GLuint g=0,GLuint b=0); + //äÖȾƽ»¬ÎïÌå + void drawSmooth(); + //»æÖÆÎïÌåµÄ·¨Ïß,ÓÃÓÚ²âÊÔ + void drawNormal(); + //»æÖÆ·Çƽ»¬µÄÎïÌå + void drawFaced(); + void drawWireEdgeSelected(); + void drawWireFaceSelected(); + void drawWireObjectSelected(); + void drawWireVertexSelected(); + //»æÖÆ·Çƽ»¬±ßÑ¡Ôñģʽ + void drawFacedEdgeSelected(); + //»æÖÆ·Çƽ»¬ÃæÑ¡Ôñģʽ + void drawFacedFaceSelected(); + //»æÖÆ·Çƽ»¬¶¥µãÑ¡Ôñģʽ + void drawFacedVertexSelected(); + //»æÖÆ·Çƽ»¬ÎïÌåÑ¡Ôñģʽ + void drawFacedObjectSelected(); + //»æÖÆƽ»¬ÎïÌåÑ¡Ôñģʽ + void drawSmoothObjectSelected(); + //»æÖÆÏß¿òÎïÌåÑ¡Ôñģʽ +// void drawWireObjectSelected(); + //»æÖÆÎïÌåÑ¡Ôñģʽ + void drawObjectSelected(); + //»æÖÆÎïÌåµÄ¾µÏñ + void drawMirror(); + //»æÖÆÎïÌå + void draw(); + //½«ËùÓж¥µãµÄ·¨Ïßµ¥Î»»¯ + void normalizeVertexNormal(); + //¸üж¥µãµÄ·¨Ïß + void updateVNormal(SubdivideVertex *theVertex,size_t level); + //¸üж¥µãµÄ·¨Ïß + void updateVNormal(Vertex *theVertex); + //¸üÐÂÃæµÄ·¨Ïß + void updateFNormal(Face *theFace); + //¸üÐÂÃæµÄ·¨Ïß + void updateFNormal(SubdivideFace *theFace,size_t level); + //¸üÐÂËùÓеķ¨Ïß + void updateAllNormal(); + //¸üÐÂ×îÍâ²ãϸ·ÖÃæµÄ·¨Ïß + void updateAllSubNormal(); + //µÃµ½±ßµÄÊýÄ¿ + size_t edgeCount(); + //µÃµ½¶¥µãµÄÊýÄ¿ + size_t vertexCount(); + //µÃµ½ÃæµÄÊýÄ¿ + size_t faceCount(); + //¸üж¥µãλÖõ½Ò»¸ö¾ø¶ÔÖµ + void vertexPositionChangeA(size_t vertexID,float nx,float ny,float nz); + //¸üж¥µãλÖõ½Ò»¸öÏà¶ÔÖµ + void vertexPositionChangeR(size_t vertexID,float nx,float ny,float nz); + //¸üж¥µã·¨Ïß + void vertexNormalChange(size_t vertexID,float nx,float ny,float nz); + //ɾ³ýÃæ + void objectFaceRemove(size_t faceID); + //ɾ³ý±ß + void objectEdgeRemove(size_t edgeID); + //ɾ³ý¶¥µã + void objectVertexRemove(size_t vertexID); + //¸Ä±ä±ßµÄÓÒÃæ + void edgeRightChange(size_t edgeID,size_t nr); + //¸Ä±ä±ßµÄ×óÃæ + void edgeLeftChange(size_t edgeID,size_t nl); + //¸Ä±ä±ßµÄÆðʼµã + void edgeStartChange(size_t edgeID,size_t ns); + //¸Ä±ä±ßµÄÖÕÖ¹µã + void edgeEndChange(size_t edgeID,size_t ne); + //ɾ³ýµãµÄÒ»¸öÁÚ½Ó±ß + void vertexAdjacentRemove(size_t vertexID,size_t adjID); + //²åÈëµãµÄÒ»¸öÁÚ½Ó±ß + void vertexAdjacentInsert(size_t vertexID,size_t adjID,size_t ne); + //ĩβ²åÈëÒ»¸öÃæµÄ±ß + void faceEdgePush(size_t faceID,int nEdge); + //µ¯³öÃæµÄÒ»¸ö±ß + void faceEdgePop(size_t faceID); + //¸Ä±äÃæµÄÒ»¸ö±ß + void faceEdgeChange(size_t faceID,size_t edgeID,int nEdge); + //²åÈëÒ»¸öÃæµÄ±ß + void faceEdgeInsert(size_t faceID,size_t edgeID,int nEdge); + //²åÈëÒ»¸ö¶¥µãµÄÁÚ½Ó±ß + void vertexAdjacentPush(size_t vertexID,size_t ne); + //¸Ä±äÒ»¸ö¶¥µãµÄÁÚ½Ó±ß + void vertexAdjacentChange(size_t vertexID,size_t edgeID,size_t ne); + //µ¯³öÒ»¸ö¶¥µãµÄÁÚ½Ó±ß + void vertexAdjacentPop(size_t vertexID); + //½»»»Ò»¸ö¶¥µãµÄÁÚ½Ó±ß + void vertexAdjacentSwap(size_t vertexID,size_t i1,size_t i2); + //½»»»Ò»¸öÃæµÄÁÚ½Ó±ß + void faceEdgeSwap(size_t faceID,size_t i1,size_t i2); + //ɾ³ýÒ»¸öÃæµÄÁÚ½Ó±ß + void faceEdgeRemove(size_t faceID,size_t edgeID); + //Êä³ö²âÊÔxml + void testXMLOut(char *fileName); + //´Óж¨Òå¿ØÖƵã + void redefineControlPoint(); + +private: + Vector EAdjacentVertex(Vertex *theVertex); + Vector EAdjacentVertex(SubdivideVertex *theVertex,int level); + Vector EAdjacentVertex(SubdivideVertex *theVertex); + void subdivideFace(Face *theFace); + void subdivideFace(SubdivideFace *theFace); + void expandSubFace(std::vector &originalList,size_t level); + void expandSubFace(std::vector &originalList); + void partialSubdivideFace(SubdivideFace *theFace,int level); + void partialSubdivideFace(Face *theFace,int level); + +public: + ~Object(void); +}; diff --git a/OpenGLCanvas.cpp b/OpenGLCanvas.cpp new file mode 100755 index 0000000..82b0fec --- /dev/null +++ b/OpenGLCanvas.cpp @@ -0,0 +1,282 @@ +#include +#include +#include +#include "OpenGLCanvas.h" +#include "wx/wxprec.h" +#include "wx/wx.h" +#include +#include "Global.h" + +BEGIN_EVENT_TABLE(OpenGLCanvas, wxGLCanvas) + EVT_SIZE(OpenGLCanvas::onSize) + EVT_PAINT(OpenGLCanvas::onPaint) + EVT_ERASE_BACKGROUND(OpenGLCanvas::onEraseBackground) + EVT_ENTER_WINDOW(OpenGLCanvas::onEnterWindow) + EVT_MOUSE_EVENTS(OpenGLCanvas::onMouse) + EVT_KEY_DOWN(OpenGLCanvas::onKeyDown) + EVT_KEY_UP(OpenGLCanvas::onKeyUp) +END_EVENT_TABLE() + +OpenGLCanvas::OpenGLCanvas(wxWindow *parent, wxWindowID id,const wxPoint& pos, const wxSize& size, long style, const wxString& name) +:parent(parent),wxGLCanvas(parent, (wxGLCanvas*) NULL, id, pos, size, style|wxFULL_REPAINT_ON_RESIZE , name ) +{ + InitGL(); +} + +void OpenGLCanvas::initScreen() +{ + theScreen=new Screen(parent); + theScreen->initialize(); + int w, h; + GetClientSize(&w, &h); + { + SetCurrent(); + theScreen->width=w; + theScreen->height=h; + theScreen->updateScreen(w,h); + } + Refresh(false); +} + +OpenGLCanvas::OpenGLCanvas(wxWindow *parent, const OpenGLCanvas *other,wxWindowID id, const wxPoint& pos, const wxSize& size, long style,const wxString& name) +:wxGLCanvas(parent, other->GetContext(), id, pos, size, style|wxFULL_REPAINT_ON_RESIZE , name),isALT(false) +{ + InitGL(); +} + +OpenGLCanvas::~OpenGLCanvas() +{ +} + +void OpenGLCanvas::Render() +{ + wxPaintDC dc(this); + SetCurrent(); + theScreen->onPaint(); + glFlush(); + SwapBuffers(); +} + +void OpenGLCanvas::onEnterWindow( wxMouseEvent& WXUNUSED(event) ) +{ + SetFocus(); +} + +void OpenGLCanvas::onKeyDown(wxKeyEvent& event) +{ + + if(event.GetKeyCode()==WXK_ALT) + { + theScreen->onAltDown(); + } + else if(event.GetKeyCode()==WXK_CONTROL) + { + theScreen->onCtrlDown(); + } + else if(event.GetKeyCode()==90)//z + { + theScreen->onExtrudePress(); + } +} + +void OpenGLCanvas::onKeyUp(wxKeyEvent& event) +{ + int keyCode=event.GetKeyCode(); + if(keyCode==WXK_ALT) + { + theScreen->onAltUp(); + } + else if(keyCode==WXK_CONTROL) + { + theScreen->onCtrlUp(); + } + else if(keyCode==87) //w + { + theScene->changeAxisCursorMode(AxisCursorMode::MoveAxis); + } + else if(keyCode==69) //e + { + theScene->changeAxisCursorMode(AxisCursorMode::RotateAxis); + } + else if(keyCode==82) //r + { + theScene->changeAxisCursorMode(AxisCursorMode::ScaleAxis); + } + else if(keyCode==67) //c + { + theScene->subdivide(); + } + else if(keyCode==86) //v + { + theScene->unSubdivide(); + } + else if(keyCode==90) //z + { + theScreen->onExtrudeRelease(); + } + else if(keyCode==127) + { + theScene->onDelete(); + } + else if(keyCode==49) + { + theScreen->changeCamera(CameraMode::Top); + } + else if(keyCode==50) + { + theScreen->changeCamera(CameraMode::Bottom); + } + else if(keyCode==51) + { + theScreen->changeCamera(CameraMode::Front); + } + else if(keyCode==52) + { + theScreen->changeCamera(CameraMode::Back); + } + else if(keyCode==53) + { + theScreen->changeCamera(CameraMode::Left); + } + else if(keyCode==54) + { + theScreen->changeCamera(CameraMode::Right); + } + else if(keyCode==55) + { + theScreen->changeCamera(CameraMode::Perspective); + } + Refresh(false); +} + + +void OpenGLCanvas::onPaint( wxPaintEvent& WXUNUSED(event) ) +{ + Render(); +} + +void OpenGLCanvas::onSize(wxSizeEvent& event) +{ + // this is also necessary to update the context on some platforms + wxGLCanvas::OnSize(event); + // set GL viewport (not called by wxGLCanvas::OnSize on all platforms...) + int w, h; + GetClientSize(&w, &h); + { + SetCurrent(); + theScreen->width=w; + theScreen->height=h; + theScreen->updateScreen(w,h); + } + Refresh(false); +} + +void OpenGLCanvas::onEraseBackground(wxEraseEvent& WXUNUSED(event)) +{ +} + +void OpenGLCanvas::onMouse( wxMouseEvent& event ) +{ + long x=0; + long y=0; + int wheel=0; + event.GetPosition(&x,&y); + if(event.Dragging()) + { + if(event.m_leftDown) + { + if(theScreen->onLeftDrag(x,y)) + { + Refresh(false); + } + } + else + if(event.m_middleDown) + { + if(theScreen->onMiddleDrag(x,y)) + { + Refresh(false); + } + } + } + else + if(event.ButtonDown(wxMOUSE_BTN_LEFT)) + { + if(theScreen->onLeftPress(x,y)) + { + Refresh(false); + } + } + else + if(event.ButtonDown(wxMOUSE_BTN_MIDDLE)) + { + if(theScreen->onMiddlePress(x,y)) + { + Refresh(false); + } + } + else + if(event.ButtonUp(wxMOUSE_BTN_MIDDLE)) + { + if(theScreen->onMiddleRelease(event.m_shiftDown)) + { + Refresh(false); + } + } + else + if(event.ButtonUp(wxMOUSE_BTN_LEFT)) + { + if(theScreen->onLeftRelease(event.m_shiftDown)) + { + Refresh(false); + } + } + else if(event.ButtonUp(wxMOUSE_BTN_RIGHT)) + { + if(theScene->splitVertexID==0) + { + theScene->endSplit(); + } + else + { + theScene->changeSelectionMode(SelectionMode::Edge); + } + Refresh(false); + } + else + if((wheel=event.GetWheelRotation())!=0) + { + if(theScreen->onWheel(wheel,x,y)) + { + Refresh(false); + } + } + else if(event.Moving()) + { + if(theScreen->onMoving(x,y)) + { + Refresh(false); + } + } +} + +void OpenGLCanvas::InitGL() +{ + SetCurrent(); + int w, h; + GetClientSize(&w, &h); + { + SetCurrent(); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(25,(float)w/(float)h,1,8000); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(100,100,100,0,0,0,0,0,1); + glViewport(0, 0, (GLint) w, (GLint) h); + } + glLineWidth(3); + glEnable(GL_DEPTH_TEST); + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); +} \ No newline at end of file diff --git a/OpenGLCanvas.h b/OpenGLCanvas.h new file mode 100755 index 0000000..605985c --- /dev/null +++ b/OpenGLCanvas.h @@ -0,0 +1,46 @@ +#pragma once +#include "wx/glcanvas.h" +#include "Screen.h" +extern Screen *theScreen; +class OpenGLCanvas : + public wxGLCanvas +{ + friend class MyFrame; + wxWindow *parent; +public: + OpenGLCanvas(void); +public: + ~OpenGLCanvas(void); + bool isALT; + +public: + OpenGLCanvas( wxWindow *parent, wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, const wxString& name = _T("OpenGLCanvas") ); + + OpenGLCanvas( wxWindow *parent, const OpenGLCanvas *other, + wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = 0, + const wxString& name = _T("OpenGLCanvas") ); + + void onPaint(wxPaintEvent& event); + void onSize(wxSizeEvent& event); + void onEraseBackground(wxEraseEvent& event); + void onKeyDown(wxKeyEvent& event); + void onKeyUp(wxKeyEvent& event); + void onEnterWindow(wxMouseEvent& event); + void onMouse( wxMouseEvent& event ); + void initScreen(); + + void Render(); + void InitGL(); + + +DECLARE_EVENT_TABLE() + +}; + + + + diff --git a/Ortho.cpp b/Ortho.cpp new file mode 100755 index 0000000..9d816f6 --- /dev/null +++ b/Ortho.cpp @@ -0,0 +1,9 @@ +#include "Ortho.h" + +Ortho::Ortho(void) +{ +} + +Ortho::~Ortho(void) +{ +} diff --git a/Ortho.h b/Ortho.h new file mode 100755 index 0000000..49f1f0f --- /dev/null +++ b/Ortho.h @@ -0,0 +1,11 @@ +#pragma once +#include "camera.h" + +class Ortho : + public Camera +{ +public: + Ortho(void); +public: + ~Ortho(void); +}; diff --git a/PerspectiveCamera.cpp b/PerspectiveCamera.cpp new file mode 100755 index 0000000..75e88f1 --- /dev/null +++ b/PerspectiveCamera.cpp @@ -0,0 +1,32 @@ +#include "PerspectiveCamera.h" + +PerspectiveCamera::PerspectiveCamera(float angle,float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up): +angle(angle),Camera(CameraMode::Perspective,width,height,nearPlane,farPlane,startX,startY,target,eye,up) +{ + light_ambient[0]=0.4f; + light_ambient[1]=0.4f; + light_ambient[2]=0.4f; + light_ambient[3]=1; + + light_diffuse[0]=0.6f; + light_diffuse[1]=0.6f; + light_diffuse[2]=0.6f; + light_diffuse[3]=1; + + light_specular[0]=0.7f; + light_specular[1]=0.7f; + light_specular[2]=0.7f; + light_specular[3]=1; + + light_position[0]=500; + light_position[1]=500; + light_position[2]=500; + light_position[3]=1; + + rotate45V(); +} + + +PerspectiveCamera::~PerspectiveCamera(void) +{ +} diff --git a/PerspectiveCamera.h b/PerspectiveCamera.h new file mode 100755 index 0000000..35e23e7 --- /dev/null +++ b/PerspectiveCamera.h @@ -0,0 +1,254 @@ +#pragma once + +#include "camera.h" + + +class PerspectiveCamera:public Camera +{ +public: + float angle; + +public: + void zoom(float step) + { + Vector cameraDirection(0); + cameraDirection=this->target-this->eye; + cameraDirection.normalize(); + //this->target+=cameraDirection*step; + this->eye+=cameraDirection*step; + }; + + void onPanPress(int x,int y) + { + this->isDraging=true; + this->old.x=(float)x; + this->old.y=(float)y; + }; + + void onRotatePress(int x,int y) + { + this->isDraging=true; + this->old.x=(float)x; + this->old.y=(float)y; + //this->old=this->mapToSphere(x,y); + //this->old.normalize(); + }; + + void drawGird() + { + if(showGird) + { + theGird->drawXY(); + } + else + { + glDisable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D,0); + } + }; + + void rotate45V() + { + + Vector perp=perpendicular(this->eye-this->target,this->up); + perp.normalize(); + Quaternion rotateQuaternion((float)-10.0f,perp); + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + Vector cameraDirection=this->eye-this->target; + Vector upDirection=cameraDirection+this->up; + cameraDirection=(rotateMatrix)*(cameraDirection); + upDirection=(rotateMatrix)*upDirection; + this->eye=cameraDirection+this->target; + light_position[0]=cameraDirection.x; + light_position[1]=cameraDirection.y; + light_position[2]=cameraDirection.z; + light_position[3]=1; + this->up=upDirection-cameraDirection; + + }; + + void rotate(int x,int y) + { + //Vector newRotation(0); + //newRotation=mapToSphere(x,y); + int dx=(int)(this->old.x-(float)x); + int dy=(int)(this->old.y-(float)y); + //newRotation.normalize(); + + if(dy!=0) + { + Vector perp=perpendicular(this->eye-this->target,this->up); + perp.normalize(); + Quaternion rotateQuaternion((float)dy,perp); + // Matrix *rotateMatrix=new Matrix(); + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + Vector cameraDirection=this->eye-this->target; + Vector upDirection=cameraDirection+this->up; + cameraDirection=(rotateMatrix)*(cameraDirection); + upDirection=(rotateMatrix)*upDirection; + this->eye=cameraDirection+this->target; + light_position[0]=cameraDirection.x; + light_position[1]=cameraDirection.y; + light_position[2]=cameraDirection.z; + light_position[3]=1; + this->up=upDirection-cameraDirection; + //delete rotateMatrix; + } + if(dx!=0) + { + Vector perp(0,0,1); + //perp.normalize(); + Quaternion rotateQuaternion((float)dx,perp); + Matrix *rotateMatrix=new Matrix(); + rotateQuaternion.getMatrix(*rotateMatrix); + Vector cameraDirection=this->eye-this->target; + Vector upDirection=cameraDirection+this->up; + cameraDirection=(*rotateMatrix)*(cameraDirection); + upDirection=(*rotateMatrix)*upDirection; + this->eye=cameraDirection+this->target; + light_position[0]=cameraDirection.x; + light_position[1]=cameraDirection.y; + light_position[2]=cameraDirection.z; + light_position[3]=1; + this->up=upDirection-cameraDirection; + delete rotateMatrix; + } + this->old.x=(float)x; + this->old.y=(float)y; + }; + + Vector getEye() + { + return eye; + } + + Vector rotateFromP2P(int x1,int y1,int x2,int y2) + { + if(y1==y2) + return 0; + Vector oldRotation(0); + Vector newRotation(0); + oldRotation=mapToSphere(x1,y1); + newRotation=mapToSphere(x2,y2); + oldRotation.normalize(); + newRotation.normalize(); + Vector perp=perpendicular(this->target-this->eye,this->up); + if (perp.length2() > Epsilon) + { + Quaternion rotateQuaternion(acos(psVECDOT(oldRotation,newRotation)),perp); + Matrix *rotateMatrix=new Matrix(); + rotateQuaternion.getMatrix(*rotateMatrix); + Vector cameraDirection=this->eye-this->target; + Vector upDirection=cameraDirection+this->up; + cameraDirection=(*rotateMatrix)*(cameraDirection); + upDirection=(*rotateMatrix)*upDirection; + this->eye=cameraDirection+this->target; + this->up=upDirection-cameraDirection; + delete rotateMatrix; + return rotateQuaternion; + } + }; + + void onRotateRelease() + { + this->isDraging=false; + this->old.null(); + }; + + void onPanRelease(int x,int y) + { + x; + y; + isDraging=false; + old.null(); + }; + + void setCamera() + { + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(this->eye.x,this->eye.y,this->eye.z,this->target.x,this->target.y,this->target.z,this->up.x,this->up.y,this->up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(this->angle,this->width/this->height,this->nearPlane,this->farPlane); + glViewport((GLint)this->startX,(GLint)this->startY,(GLint)this->width,(GLint)this->height); + drawGird(); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + + }; + + void setCameraForSelectionD(size_t x1,size_t y1,size_t x2,size_t y2,size_t h) + { + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + GLint viewport[4]; + glGetIntegerv (GL_VIEWPORT, viewport); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + gluPickMatrix((GLdouble) (x1+x2)/2,(GLdouble) (h - (y1+y2)/2), (GLdouble)sw,(GLdouble)sh, viewport); + gluPerspective(angle,width/height,nearPlane,farPlane); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,eye.y,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + }; + + void setCameraForSelectionS() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(this->eye.x,this->eye.y,this->eye.z,this->target.x,this->target.y,this->target.z,this->up.x,this->up.y,this->up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(this->angle,this->width/this->height,this->nearPlane,this->farPlane); + glViewport((GLint)this->startX,(GLint)this->startY,(GLint)this->width,(GLint)this->height); + }; + + void pan(int x,int y) + { + int dx=x-(int)old.x; + int dy=y-(int)old.y; + old.x=(float)x; + old.y=(float)y; + Vector cameraDirection(0); + cameraDirection=target-eye; + Vector horizontalDirection(0); + horizontalDirection=perpendicular(cameraDirection,up); + horizontalDirection.normalize(); + this->target+=horizontalDirection*(float)dx*0.5f+this->up*(float)dy*0.5f; + }; + + Vector getHorizontalDir() + { + Vector cameraDirection(target-eye); + Vector horizontalDirection(perpendicular(cameraDirection,up)); + horizontalDirection.normalize(); + return horizontalDirection; + } + + PerspectiveCamera(float angle,float width,float height,float nearPlane,float farPlane,float startX,float startY,Vector target,Vector eye,Vector up); + +private: + Vector mapToSphere(const int x,const int y) const + { + float tempX; + float tempY; + tempX=((float)x/this->width-0.5f)*1.414213562f; + tempY=((float)y/this->height-0.5f)*1.414213562f; + Vector result(0); + result.x = 0; + result.z = sqrtf(1.0f - tempY*tempY); + result.y = tempY; + return result; + }; + +public: + ~PerspectiveCamera(void); +}; diff --git a/Quaternion.cpp b/Quaternion.cpp new file mode 100755 index 0000000..d21e893 --- /dev/null +++ b/Quaternion.cpp @@ -0,0 +1,171 @@ +#include "Quaternion.h" +#include "TheMath.h" + +Quaternion::Quaternion(const Matrix &mat) +{ + + float tr,s,q[4]; + int i,j,k; + + int nxt[3] = {1, 2, 0}; + + tr = mat.m[0][0] + mat.m[1][1] + mat.m[2][2]; + + // check the diagonal + if (tr > 0.0) + { + s = sqrtf(tr + 1.0f); + w = s/2.0f; + s = 0.5f/s; + x = (mat.m[1][2] - mat.m[2][1]) * s; + y = (mat.m[2][0] - mat.m[0][2]) * s; + z = (mat.m[0][1] - mat.m[1][0]) * s; + } + else + { + // diagonal is negative + i = 0; + if (mat.m[1][1] > mat.m[0][0]) i = 1; + if (mat.m[2][2] > mat.m[i][i]) i = 2; + j = nxt[i]; + k = nxt[j]; + + s=sqrtf((mat.m[i][i]-(mat.m[j][j] + mat.m[k][k])) + 1.0f); + + q[i]=s*0.5f; + + if(s!=0.0f) s = 0.5f/s; + + q[3] = (mat.m[j][k] - mat.m[k][j]) * s; + q[j] = (mat.m[i][j] + mat.m[j][i]) * s; + q[k] = (mat.m[i][k] + mat.m[k][i]) * s; + + x = q[0]; + y = q[1]; + z = q[2]; + w = q[3]; + } +} + +void Quaternion::getMatrix(Matrix &mat) const +{ + float wx, wy, wz, xx, yy, yz, xy, xz, zz, x2, y2, z2; + + // calculate coefficients + x2 = x + x; + y2 = y + y; + z2 = z + z; + xx = x * x2; + xy = x * y2; + xz = x * z2; + yy = y * y2; + yz = y * z2; + zz = z * z2; + wx = w * x2; + wy = w * y2; + wz = w * z2; + + mat.m[0][0] = 1.0f-(yy+zz); + mat.m[1][0] = xy - wz; + mat.m[2][0] = xz + wy; + mat.m[3][0] = 0.0; + + mat.m[0][1] = xy + wz; + mat.m[1][1] = 1.0f-(xx + zz); + mat.m[2][1] = yz - wx; + mat.m[3][1] = 0.0; + + mat.m[0][2] = xz - wy; + mat.m[1][2] = yz + wx; + mat.m[2][2] = 1.0f - (xx + yy); + mat.m[3][2] = 0.0; + + mat.m[0][3] = 0; + mat.m[1][3] = 0; + mat.m[2][3] = 0; + mat.m[3][3] = 1; +} + +Quaternion Quaternion::operator +(const Quaternion& q) +{ + Quaternion res; + res.x=x+q.x; + res.y=y+q.y; + res.z=z+q.z; + res.w=w+q.w; + return res; +} + +Quaternion Quaternion::operator*(const Quaternion &q) +{ + Quaternion result; + + result.w = w * q.w - x * q.x - y * q.y - z * q.z; + result.x = w * q.x + x * q.w + y * q.z - z * q.y; + result.y = w * q.y + y * q.w + z * q.x - x * q.z; + result.z = w * q.z + z * q.w + x * q.y - y * q.x; + + return result; +} + +void Quaternion::normalize() +{ + float factor = 1.0f/sqrtf(x*x+y*y+z*z+w*w); + + x*=factor; + y*=factor; + z*=factor; + w*=factor; +} + +void Quaternion::getRotate(float &angle, Vector &axis) const +{ + angle=acosf(w)*2*psPIUNDER180; + + float f=sinf(angle*psPIOVER180*0.5f); + + axis.x=x/f; + axis.y=y/f; + axis.z=z/f; +} + +void Quaternion::lerp(const Quaternion& q1, const Quaternion& q2,float t) +{ + float v; // complement to t + float o; // complement to v (t) + float theta; // angle between q1 & q2 + float sin_t; // sin(theta) + float cos_t; // cos(theta) + float phi; // spins added to theta + int flip; // flag for negating q2 + + cos_t = q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w; + + if (cos_t < 0.0) + { + cos_t = -cos_t; + flip = 1; + } + else + flip = 0; + + if (1.0 - cos_t < 1e-6) + { + v = 1.0f - t; + o = t; + } + else + { + theta = acosf(cos_t); + phi = theta; + sin_t = sinf(theta); + v = sinf(theta - t * phi) / sin_t; + o = sinf(t * phi) / sin_t; + } + if (flip) o = -o; + + x = v * q1.x + o * q2.x; + y = v * q1.y + o * q2.y; + z = v * q1.z + o * q2.z; + w = v * q1.w + o * q2.w; +} diff --git a/Quaternion.h b/Quaternion.h new file mode 100755 index 0000000..3d55b54 --- /dev/null +++ b/Quaternion.h @@ -0,0 +1,44 @@ +#pragma once +#include "TheMath.h" +#include "Vector.h" +#include "Matrix.h" + +class Quaternion : public Vector +{ +public: + //! Copy-constructor + Quaternion(const Quaternion& in) : Vector(in) + { }; + + //! Default constructor + Quaternion() : Vector() + { }; +Quaternion(float initial) : Vector(initial) + { }; + //! Construct the quaternion from a matrix + Quaternion(const Matrix &mat); + + //! Construct the quaternion from the angle and axis + Quaternion(float angle, const Vector &axis) + { + float f=sinf(angle*psPIOVER180*0.5f); + x=axis.x*f; + y=axis.y*f; + z=axis.z*f; + w=cosf(angle*psPIOVER180*0.5f); + } + + //! Normalize the quaternion + void normalize(); + //! Converts the quaternion into a matrix + void getMatrix(Matrix &) const; + //! Get the rotation angle and axis + void getRotate(float &angle, Vector &axis) const; + //! Interpolate two quaternions + void lerp(const Quaternion& q1,const Quaternion& q2,float t); + + //! Multiplication between quaternions + Quaternion operator *(const Quaternion& q); + //! Addition between quaternions + Quaternion operator +(const Quaternion& q); +}; diff --git a/ReferenceImageDialog.cpp b/ReferenceImageDialog.cpp new file mode 100755 index 0000000..63b5b24 --- /dev/null +++ b/ReferenceImageDialog.cpp @@ -0,0 +1,187 @@ + + +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP +#include +#endif //WX_PRECOMP +#include +#include "ReferenceImageDialog.h" +#include "Screen.h" +/////////////////////////////////////////////////////////////////////////// + +BEGIN_EVENT_TABLE(ReferenceImageDialog, wxDialog) + EVT_BUTTON(onOpenButtonPressReferenceImage, ReferenceImageDialog::onOpenButton) + EVT_BUTTON(onOKButtonPressReferenceImage, ReferenceImageDialog::onOKButton) + EVT_BUTTON(onCancelButtonPressReferenceImage,ReferenceImageDialog::onCancelButton) +END_EVENT_TABLE() + +ReferenceImageDialog::ReferenceImageDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ),referenceID(0),width(0),height(0) +{ + wxBoxSizer* mainBoxSizer; + mainBoxSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* mainStaticBoxSizer; + mainStaticBoxSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("Reference Image:") ), wxVERTICAL ); + + wxBoxSizer* settingSizer; + settingSizer = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* fileBoxSizer; + fileBoxSizer = new wxBoxSizer( wxHORIZONTAL ); + + pathTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_READONLY ); + fileBoxSizer->Add( pathTextCtrl, 1, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + openButton = new wxButton( this, onOpenButtonPressReferenceImage, wxT("Open"), wxDefaultPosition, wxDefaultSize, 0 ); + fileBoxSizer->Add( openButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + settingSizer->Add( fileBoxSizer, 0, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + mainStaticLine = new wxStaticLine( this, ID_DEFAULT, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + settingSizer->Add( mainStaticLine, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + wxGridSizer* settingGirdSizer; + settingGirdSizer = new wxGridSizer( 2, 2, 0, 0 ); + + xStaticText = new wxStaticText( this, ID_DEFAULT, wxT("x:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( xStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + xTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingGirdSizer->Add( xTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + yStaticText = new wxStaticText( this, ID_DEFAULT, wxT("y:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( yStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + yTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingGirdSizer->Add( yTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + zStaticText = new wxStaticText( this, ID_DEFAULT, wxT("z:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( zStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + zTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingGirdSizer->Add( zTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + widthStaticText = new wxStaticText( this, ID_DEFAULT, wxT("width:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( widthStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + widthTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingGirdSizer->Add( widthTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + heightStaticText = new wxStaticText( this, ID_DEFAULT, wxT("height:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( heightStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + heightTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ,wxTextValidator(wxFILTER_NUMERIC,NULL)); + settingGirdSizer->Add( heightTextCtrl, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + settingSizer->Add( settingGirdSizer, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainStaticBoxSizer->Add( settingSizer, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainBoxSizer->Add( mainStaticBoxSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + wxBoxSizer* buttonSizer; + buttonSizer = new wxBoxSizer( wxHORIZONTAL ); + + OKButton = new wxButton( this, onOKButtonPressReferenceImage, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( OKButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + CancelButton = new wxButton( this, onCancelButtonPressReferenceImage, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( CancelButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainBoxSizer->Add( buttonSizer, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 ); + + this->SetSizer( mainBoxSizer ); + this->Layout(); + Fit(); + initialize(); +} + +void ReferenceImageDialog::initialize() +{ + Vector position; + std::string path; + theScreen->getViewportImage(referenceID,path,position,this->width,this->height); + (*pathTextCtrl)<GetValue(); + wxString xString=xTextCtrl->GetValue(); + wxString yString=yTextCtrl->GetValue(); + wxString zString=zTextCtrl->GetValue(); + + if(referenceID>0) + { + if(xString.ToDouble(&x) && yString.ToDouble(&y) && zString.ToDouble(&z)) + { + Vector position(x,y,z); + theScreen->setViewportImage(pathString.c_str(),referenceID,position,width,height); + Close(); + } + else + { + wxMessageBox(wxT("Wrong parameters!"),wxT("Wrong Parameters"),wxICON_ERROR | wxOK, this); + return; + } + } + Close(); + event; +} + +void ReferenceImageDialog::onCancelButton(wxCommandEvent& event) +{ + Close(); + event; +} \ No newline at end of file diff --git a/ReferenceImageDialog.h b/ReferenceImageDialog.h new file mode 100755 index 0000000..c8aef9d --- /dev/null +++ b/ReferenceImageDialog.h @@ -0,0 +1,92 @@ +#pragma once + +#include +#include +#include + +#ifdef WX_GCH +#include +#else +#include +#endif +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + +/** + * Class referenceImageDialog + */ +class ReferenceImageDialog : public wxDialog +{ + private: + GLuint referenceID; + size_t width; + size_t height; + protected: + wxTextCtrl* pathTextCtrl; + wxButton* openButton; + wxStaticLine* mainStaticLine; + wxStaticText* xStaticText; + wxTextCtrl* xTextCtrl; + wxStaticText* yStaticText; + wxTextCtrl* yTextCtrl; + wxStaticText* zStaticText; + wxTextCtrl* zTextCtrl; + wxStaticText* widthStaticText; + wxTextCtrl* widthTextCtrl; + wxStaticText* heightStaticText; + wxTextCtrl* heightTextCtrl; + wxButton* OKButton; + wxButton* CancelButton; + + public: + ReferenceImageDialog( wxWindow* parent, int id = -1, wxString title = wxT(""), wxPoint pos = wxDefaultPosition, wxSize size = wxDefaultSize, int style = wxDEFAULT_DIALOG_STYLE ); + void initialize(); + void onOpenButton(wxCommandEvent& event); + void onOKButton(wxCommandEvent& event); + void onCancelButton(wxCommandEvent& event); + + + + GLuint loadTexture(const char *fileName,enum wxBitmapType theType) + { + GLuint txtnumber; + wxImage texture(_T(fileName),theType,-1); + int theHeight=texture.GetHeight(); + int theWidth=texture.GetWidth(); + unsigned char *RGBData=texture.GetData(); + unsigned char *alphaData=texture.GetAlpha(); + size_t pixelCount=theHeight*theWidth; + size_t dataSize=pixelCount*4; + unsigned char *data=new unsigned char[dataSize]; + for(size_t i=0;iangle,this->width/this->height,this->nearPlane,this->farPlane); + glOrtho(-width*(eye.x)*0.005f,width*(eye.x)*0.005f,-height*(eye.x)*0.005f,height*(eye.x)*0.005f,nearPlane,farPlane); + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + drawGird(); + if(rightReference && rightReference->isShow) + { + rightReference->onPaint(); + } + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + }; + void zoom(float step) + { + Vector cameraDirection(-1,0,0); + + //cameraDirection.normalize(); + //this->target+=cameraDirection*step; + eye+=cameraDirection*((float)step*0.1f); + if(eye.x<2) eye.x=2; + }; + + void setReferenceImage(const char *path,GLuint imageID,Vector &position,size_t width,size_t height) + { + if(rightReference) + { + delete rightReference; + } + + rightReference=new ViewportImage(path,imageID,width,height,type._value,position); + rightReference->initialize(); + rightReference->isShow=true; + }; + + void getViewportImage(GLuint &texID,std::string &path,Vector &position,size_t &width,size_t &height) + { + if(rightReference) + { + texID=rightReference->imageID; + path=rightReference->path; + position=rightReference->position; + width=rightReference->width; + height=rightReference->height; + } + else + { + texID=0; + path=""; + position.vec(0); + width=0; + height=0; + } + }; + + void disableReference() + { + rightReference->isShow=false; + } + + void setCameraForSelectionS() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(990,eye.y,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + //gluPerspective(this->angle,this->width/this->height,this->nearPlane,this->farPlane); + glOrtho(-width*(eye.x)*0.005f,width*(eye.x)*0.005f,-height*(eye.x)*0.005f,height*(eye.x)*0.005f,nearPlane,farPlane); + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + }; + + void setCameraForSelectionD(size_t x1,size_t y1,size_t x2,size_t y2,size_t h) + { + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + GLint viewport[4]; + glGetIntegerv (GL_VIEWPORT, viewport); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + gluPickMatrix((GLdouble) (x1+x2)/2,(GLdouble) (h- (y1+y2)/2), (GLdouble)sw,(GLdouble)sh, viewport); + glOrtho(-width*(eye.x)*0.005f,width*(eye.x)*0.005f,-height*(eye.x)*0.005f,height*(eye.x)*0.005f,nearPlane,farPlane); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(990,eye.y,eye.z,target.x,target.y,target.z,up.x,up.y,up.z); + }; + Vector getEye() + { + return eye*10.0f; + } + Vector getHorizontalDir() + { + return Vector(0,-1,0); + }; + + void drawGird() + { + if(showGird) + { + theGird->drawYZ(); + } + }; + void onPanPress(int x,int y) + { + this->isDraging=true; + this->old.x=(float)x; + this->old.y=(float)y; + }; + + void onPanRelease(int x,int y) + { + x; + y; + isDraging=false; + old.null(); + }; + + void pan(int x,int y) + { + float dy=(float)(old.x-x)*eye.x*0.01f; + float dz=(float)(y-old.y)*eye.x*0.01f; + old.x=(float)x; + old.y=(float)y; + //dx=10; + eye.y+=dy; + eye.z+=dz; + target.y+=dy; + target.z+=dz; + }; +public: + ~RightCamera(void); +}; diff --git a/Scene.cpp b/Scene.cpp new file mode 100755 index 0000000..fe5086e --- /dev/null +++ b/Scene.cpp @@ -0,0 +1,3049 @@ +#include "Scene.h" +#include + +Vector positionAAxis(AxisMode::__Enum axis,float x,float y,float z,float ax,float ay,float az) +{ + Vector result(x,y,z); + if(axis==AxisMode::axisZ) + { + Vector add(ax,ay,az); + result+=add; + } + else if(axis==AxisMode::axisX) + { + Vector add(az,ax,ay); + result+=add; + } + else if(axis==AxisMode::axisY) + { + Vector add(ax,az,ay); + result+=add; + } + return result; +} + +void Scene::initialize() +{ + isInCache.reserve(1000); + theAxisCursor=new AxisCursor(); + theAxisCursor->initialize(); +} + +void Scene::changeAxisCursorMode(AxisCursorMode::__Enum newMode) +{ + currentACMode=newMode; + if(theAxisCursor->mode!=AxisCursorMode::NoAxis) + { + theAxisCursor->rotation.null(); + theAxisCursor->mode=currentACMode; + } +} + +void Scene::clearDualEdge(size_t tt,size_t vertexID) + { + if(tt && vertexID) + { + //Ê×ÏȱéÀúÕâ¸öµãµÄÁÚ½ÓÃ棬½«edgeµÄ´óСΪ2µÄɾ³ý + Vertex *theVertex=theObjectList[tt]->vertex(vertexID); + size_t adjEdgeCount=theVertex->adjacentEdge.size(); + for(size_t e=0;eedge(theVertex->adjacentEdge[e])->start==theVertex->index) + { + if(theObjectList[tt]->edge(theVertex->adjacentEdge[e])->left>0 && theObjectList[tt]->face(theObjectList[tt]->edge(theVertex->adjacentEdge[e])->left)->edge.size()<3) + { + Face *theFace=theObjectList[tt]->face(theObjectList[tt]->edge(theVertex->adjacentEdge[e])->left); + if(theFace->edge[0]>0) + { + theObjectList[tt]->edgeRightChange(theFace->edge[0],0); + } + else + { + theObjectList[tt]->edgeLeftChange(theFace->edge[0],0); + } + if(theFace->edge[1]>0) + { + theObjectList[tt]->edgeRightChange(theFace->edge[1],0); + } + else + { + theObjectList[tt]->edgeLeftChange(theFace->edge[1],0); + } + theObjectList[tt]->objectFaceRemove(theFace->index); + } + } + else + { + if(theObjectList[tt]->edge(theVertex->adjacentEdge[e])->right>0 && theObjectList[tt]->face(theObjectList[tt]->edge(theVertex->adjacentEdge[e])->right)->edge.size()<3) + { + Face *theFace=theObjectList[tt]->face(theObjectList[tt]->edge(theVertex->adjacentEdge[e])->right); + if(theFace->edge[0]>0) + { + theObjectList[tt]->edgeRightChange(theFace->edge[0],0); + } + else + { + theObjectList[tt]->edgeLeftChange(theFace->edge[0],0); + } + if(theFace->edge[1]>0) + { + theObjectList[tt]->edgeRightChange(theFace->edge[1],0); + } + else + { + theObjectList[tt]->edgeLeftChange(theFace->edge[1],0); + } + theObjectList[tt]->objectFaceRemove(theFace->index); + } + } + } + //µ½ÕâÒ»²½Ó¦¸Ã°ÑË«Öر߼еÄÃ涼ɾ³ýÁË + //È»ºó±éÀúËùÓÐµÄ±ß ÕÒµ½Ò»×édual±ßµÄʱºò£¬½øÐкϲ¢ + for(size_t e=0;eadjacentEdge.size()-1;++e) + { + Edge *currentEdge=theObjectList[tt]->edge(theVertex->adjacentEdge[e]); + if(currentEdge->start==theVertex->index) + { + for(size_t i=e+1;iadjacentEdge.size();++i) + { + Edge *tempEdge=theObjectList[tt]->edge(theVertex->adjacentEdge[i]); + if(tempEdge->end==theVertex->index && currentEdge->end==tempEdge->start) + { + if(currentEdge->left>0 && currentEdge->right==0 && tempEdge->left>0 && tempEdge->right==0) + { + Face *theLeft=theObjectList[tt]->face(tempEdge->left); + size_t fEdgeCount=theLeft->edge.size(); + for(size_t h=0;hedge[h]==-((int)(tempEdge->index))) + { + theObjectList[tt]->faceEdgeChange(theLeft->index,h,currentEdge->index); + } + } + deleteEdgeH(tt,tempEdge->index); + } + else + if(currentEdge->right>0 && currentEdge->left==0 && tempEdge->right>0 && tempEdge->left==0) + { + Face *theRight=theObjectList[tt]->face(tempEdge->right); + size_t fEdgeCount=theRight->edge.size(); + for(size_t h=0;hedge[h]==((int)tempEdge->index)) + { + theObjectList[tt]->faceEdgeChange(theRight->index,h,-((int)currentEdge->index)); + } + } + deleteEdgeH(tt,tempEdge->index); + tempEdge->index; + } + else + { + if(tempEdge->left==0 && tempEdge->right==0) + { + deleteEdgeH(tt,tempEdge->index); + } + if(currentEdge->left==0 && currentEdge->left==0) + { + deleteEdgeH(tt,currentEdge->index); + } + } + } + else + if(tempEdge->start==theVertex->index && currentEdge->end==tempEdge->end) + { + if(currentEdge->left>0 && currentEdge->right==0 && tempEdge->right>0 && tempEdge->left==0) + { + Face *theRight=theObjectList[tt]->face(tempEdge->right); + size_t fEdgeCount=theRight->edge.size(); + for(size_t h=0;hedge[h]==((int)tempEdge->index)) + { + theObjectList[tt]->faceEdgeChange(theRight->index,h,-((int)currentEdge->index)); + } + } + deleteEdgeH(tt,tempEdge->index); + } + else + if(currentEdge->right>0 && currentEdge->left==0 && tempEdge->left>0 && tempEdge->right==0) + { + Face *theLeft=theObjectList[tt]->face(tempEdge->left); + size_t fEdgeCount=theLeft->edge.size(); + for(size_t h=0;hedge[h]==-((int)tempEdge->index)) + { + theObjectList[tt]->faceEdgeChange(theLeft->index,h,-((int)currentEdge->index)); + } + } + deleteEdgeH(tt,tempEdge->index); + } + else + { + if(tempEdge->left==0 && tempEdge->right==0) + { + deleteEdgeH(tt,tempEdge->index); + } + if(currentEdge->left==0 && currentEdge->left==0) + { + deleteEdgeH(tt,currentEdge->index); + } + } + } + } + } + else + { + for(size_t i=e+1;iadjacentEdge.size();++i) + { + Edge *tempEdge=theObjectList[tt]->edge(theVertex->adjacentEdge[i]); + if(tempEdge->end==theVertex->index && currentEdge->start==tempEdge->start) + { + if(currentEdge->right>0 && currentEdge->left==0 && tempEdge->left>0 && tempEdge->right==0) + { + Face *theLeft=theObjectList[tt]->face(tempEdge->left); + size_t fEdgeCount=theLeft->edge.size(); + for(size_t h=0;hedge[h]==-((int)tempEdge->index)) + { + theObjectList[tt]->faceEdgeChange(theLeft->index,h,currentEdge->index); + } + } + deleteEdgeH(tt,tempEdge->index); + } + else + if(currentEdge->left>0 && currentEdge->right==0 && tempEdge->right>0 && tempEdge->left==0) + { + Face *theRight=theObjectList[tt]->face(tempEdge->right); + size_t fEdgeCount=theRight->edge.size(); + for(size_t h=0;hedge[h]==(int)tempEdge->index) + { + theObjectList[tt]->faceEdgeChange(theRight->index,h,currentEdge->index); + } + } + deleteEdgeH(tt,tempEdge->index); + } + else + { + if(tempEdge->left==0 && tempEdge->right==0) + { + deleteEdgeH(tt,tempEdge->index); + } + if(currentEdge->left==0 && currentEdge->left==0) + { + deleteEdgeH(tt,currentEdge->index); + } + } + + } + else + if(tempEdge->start==theVertex->index && currentEdge->start==tempEdge->end) + { + if(currentEdge->right>0 && currentEdge->left==0 && tempEdge->right>0 && tempEdge->left==0) + { + Face *theRight=theObjectList[tt]->face(tempEdge->right); + size_t fEdgeCount=theRight->edge.size(); + for(size_t h=0;hedge[h]==(int)tempEdge->index) + { + theObjectList[tt]->faceEdgeChange(theRight->index,h,currentEdge->index); + } + } + deleteEdgeH(tt,tempEdge->index); + } + else + if(currentEdge->left>0 && currentEdge->right==0 && tempEdge->left>0 && tempEdge->right==0) + { + Face *theLeft=theObjectList[tt]->face(tempEdge->left); + size_t fEdgeCount=theLeft->edge.size(); + for(size_t h=0;hedge[h]==-((int)tempEdge->index)) + { + theObjectList[tt]->faceEdgeChange(theLeft->index,h,currentEdge->index); + } + } + deleteEdgeH(tt,tempEdge->index); + } + else + { + if(tempEdge->left==0 && tempEdge->right==0) + { + deleteEdgeH(tt,tempEdge->index); + } + if(currentEdge->left==0 && currentEdge->left==0) + { + deleteEdgeH(tt,currentEdge->index); + } + } + } + } + } + } + } + } + + +Scene::Scene(void):mode(SelectionMode::Object),target(0),currentACMode(AxisCursorMode::MoveAxis),isSplitMode(false),splitVertexID(0) +{ + +} + +size_t Scene::newCube(float x,float y,float z,float lx,float ly,float lz,size_t sx,size_t sy,size_t sz) +{ + Object *theCube=new Object("Cube"); + newCube(theCube,x,y,z,lx,ly,lz,sx,sy,sz); + theObjectList.add(theCube); + return theCube->index; +} + +size_t Scene::newPlane(float x,float y,float z,float length,float width,AxisMode::__Enum axis,size_t sl,size_t sw) +{ + Object *thePlane=new Object("Plane"); + newPlane(thePlane,x,y,z,length,width,axis,sl,sw); + theObjectList.add(thePlane); + return thePlane->index; +} + +void Scene::newPlane(Object *thePlane,float x,float y,float z,float length,float width,AxisMode::__Enum axis,size_t sl,size_t sw) +{ + thePlane->center.x=x; + thePlane->center.y=y; + thePlane->center.z=z; + + { + //Ê×ÏȼÆËãÆðʼµãµÄλÖà + float halfLength=length*0.5f; + float halfWidth=width*0.5f; + float segmentL=length/sl; + float segmentW=length/sw; + + size_t *tempVertexListRight=new size_t[sl+1]; + size_t *tempVertexListLeft=new size_t[sl+1]; + size_t *rightEdge=new size_t[sl]; + size_t *leftEdge=new size_t[sl]; + + //Ê×ÏȼÆËãµÚÒ»ÐÐ + Vector positionAAxisV(positionAAxis(axis,x,y,z,-halfLength,-halfWidth,0)); + tempVertexListRight[0]=thePlane->addVertex(positionAAxisV); + for(size_t e=1;e<=sl;++e) + { + positionAAxisV=positionAAxis(axis,x,y,z,-halfLength+e*segmentL,-halfWidth,0); + tempVertexListRight[e]=thePlane->addVertex(positionAAxisV); + rightEdge[e-1]=thePlane->addEdge(tempVertexListRight[e-1],tempVertexListRight[e]); + } + + for(size_t i=1;i<=sw;++i) + { + //µÃµ½ÕâÒ»ÐеĵÚÒ»¸ö + positionAAxisV=positionAAxis(axis,x,y,z,-halfLength,-halfWidth+i*segmentW,0); + tempVertexListLeft[0]=thePlane->addVertex(positionAAxisV); + for(size_t e=1;e<=sl;++e) + { + positionAAxisV=positionAAxis(axis,x,y,z,-halfLength+e*segmentL,-halfWidth+i*segmentW,0); + tempVertexListLeft[e]=thePlane->addVertex(positionAAxisV); + leftEdge[e-1]=thePlane->addEdge(tempVertexListLeft[e-1],tempVertexListLeft[e]); + } + + //Éú³ÉµÚÒ»¸öµ×±ß + size_t bottomEdge=thePlane->addEdge(tempVertexListRight[0],tempVertexListLeft[0]); + //Éú³ÉµÚÒ»¸ö¶¥±ß + for(size_t e=0;eaddEdge(tempVertexListRight[e+1],tempVertexListLeft[e+1]); + size_t tempEdges[4]; + tempEdges[0]=bottomEdge; + tempEdges[1]=leftEdge[e]; + tempEdges[2]=topEdge; + tempEdges[3]=rightEdge[e]; + + thePlane->addFace(tempEdges,4); + bottomEdge=topEdge; + } + + for(size_t e=0;ecenter.x=x; + theCube->center.y=y; + theCube->center.z=z; + + //¼ÆËã°ë±ß³¤ + float hlx=lx/2; + float hly=ly/2; + float hlz=lz/2; + //¼ÆËãÿһ¶ÎµÄ±ß³¤ + float slx=lx/sx; + float sly=ly/sy; + float slz=lz/sz; + //Ê×ÏÈÉùÃ÷±ßºÍ±ßÉϵĵãÁбí + size_t *edge1=new size_t[sz]; + size_t *vertex1=new size_t[sz+1]; + size_t *edge2=new size_t[sz]; + size_t *vertex2=new size_t[sz+1]; + size_t *edge3=new size_t[sz]; + size_t *vertex3=new size_t[sz+1]; + size_t *edge4=new size_t[sz]; + size_t *vertex4=new size_t[sz+1]; + size_t *edge5=new size_t[sy]; + size_t *vertex5=new size_t[sy+1]; + size_t *edge6=new size_t[sy]; + size_t *vertex6=new size_t[sy+1]; + size_t *edge7=new size_t[sx]; + size_t *vertex7=new size_t[sx+1]; + size_t *edge8=new size_t[sx]; + size_t *vertex8=new size_t[sx+1]; + size_t *edge9=new size_t[sy]; + size_t *vertex9=new size_t[sy+1]; + size_t *edge10=new size_t[sy]; + size_t *vertex10=new size_t[sy+1]; + + size_t *edge11=new size_t[sx]; + size_t *vertex11=new size_t[sx+1]; + size_t *edge12=new size_t[sx]; + size_t *vertex12=new size_t[sx+1]; + + //È»ºó¼ÆËã¸÷¸ö¶¥µã + vertex12[sx]=vertex1[0]=vertex6[0]=theCube->addVertex(x+hlx,y+hly,z-hlz); + vertex6[sy]=vertex8[0]=vertex2[0]=theCube->addVertex(x+hlx,y-hly,z-hlz); + vertex8[sx]=vertex10[0]=vertex3[0]=theCube->addVertex(x-hlx,y-hly,z-hlz); + vertex10[sy]=vertex12[0]=vertex4[0]=theCube->addVertex(x-hlx,y+hly,z-hlz); + + vertex11[sx]=vertex5[0]=vertex1[sz]=theCube->addVertex(x+hlx,y+hly,z+hlz); + vertex5[sy]=vertex7[0]=vertex2[sz]=theCube->addVertex(x+hlx,y-hly,z+hlz); + vertex7[sx]=vertex9[0]=vertex3[sz]=theCube->addVertex(x-hlx,y-hly,z+hlz); + vertex9[sy]=vertex11[0]=vertex4[sz]=theCube->addVertex(x-hlx,y+hly,z+hlz); + + //²¹È«¶¥µãÁбíÉÏÃæµÄÊý¾Ý + for(size_t i=1;iaddVertex(x+hlx,y+hly,z-hlz+i*slz); + vertex2[i]=theCube->addVertex(x+hlx,y-hly,z-hlz+i*slz); + vertex3[i]=theCube->addVertex(x-hlx,y-hly,z-hlz+i*slz); + vertex4[i]=theCube->addVertex(x-hlx,y+hly,z-hlz+i*slz); + } + + for(size_t i=1;iaddVertex(x+hlx,y+hly-i*sly,z+hlz); + vertex6[i]=theCube->addVertex(x+hlx,y+hly-i*sly,z-hlz); + vertex9[i]=theCube->addVertex(x-hlx,y-hly+i*sly,z+hlz); + vertex10[i]=theCube->addVertex(x-hlx,y-hly+i*sly,z-hlz); + } + + for(size_t i=1;iaddVertex(x+hlx-i*slx,y-hly,z+hlz); + vertex8[i]=theCube->addVertex(x+hlx-i*slx,y-hly,z-hlz); + vertex11[i]=theCube->addVertex(x-hlx+i*slx,y+hly,z+hlz); + vertex12[i]=theCube->addVertex(x-hlx+i*slx,y+hly,z-hlz); + } + + //È»ºó¿ªÊ¼Éú³ÉËùÓеıßÁбí + for(size_t i=0;iaddEdge(vertex1[i],vertex1[i+1]); + edge2[i]=theCube->addEdge(vertex2[i],vertex2[i+1]); + edge3[i]=theCube->addEdge(vertex3[i],vertex3[i+1]); + edge4[i]=theCube->addEdge(vertex4[i],vertex4[i+1]); + } + + for(size_t i=0;iaddEdge(vertex7[i],vertex7[i+1]); + edge8[i]=theCube->addEdge(vertex8[i],vertex8[i+1]); + edge11[i]=theCube->addEdge(vertex11[i],vertex11[i+1]); + edge12[i]=theCube->addEdge(vertex12[i],vertex12[i+1]); + } + + for(size_t i=0;iaddEdge(vertex5[i],vertex5[i+1]); + edge6[i]=theCube->addEdge(vertex6[i],vertex6[i+1]); + edge9[i]=theCube->addEdge(vertex9[i],vertex9[i+1]); + edge10[i]=theCube->addEdge(vertex10[i],vertex10[i+1]); + } + + //È»ºó¿ªÊ¼ÕýʽÉú³ÉÃæ + { + //Éú³ÉÃæ1ºÍÃæ3 + size_t *rightEdge1=new size_t[sz]; + size_t *rightEdge3=new size_t[sz]; + size_t *rightVertex1=new size_t[sz]; + size_t *rightVertex3=new size_t[sz]; + for(size_t i=0;iaddVertex(x+hlx,y+hly-(i+1)*sly,z-hlz+(e+1)*slz); + size_t newVertex3=theCube->addVertex(x-hlx,y-hly+(i+1)*sly,z-hlz+(e+1)*slz); + leftEdge1[e]=theCube->addEdge(lowLeftVertex1,newVertex1); + leftEdge3[e]=theCube->addEdge(lowLeftVertex3,newVertex3); + size_t topEdge1=theCube->addEdge(newVertex1,rightVertex1[e]); + size_t topEdge3=theCube->addEdge(newVertex3,rightVertex3[e]); + size_t edgeList1[4]={0}; + size_t edgeList3[4]={0}; + edgeList1[0]=leftEdge1[e]; + edgeList3[0]=leftEdge3[e]; + edgeList1[1]=topEdge1; + edgeList3[1]=topEdge3; + edgeList1[2]=rightEdge1[e]; + edgeList3[2]=rightEdge3[e]; + edgeList1[3]=lowEdge1; + edgeList3[3]=lowEdge3; + theCube->addFace(edgeList1,4); + theCube->addFace(edgeList3,4); + lowEdge1=topEdge1; + lowEdge3=topEdge3; + lowLeftVertex1=newVertex1; + lowLeftVertex3=newVertex3; + rightVertex1[e]=newVertex1; + rightVertex3[e]=newVertex3; + } + { + //¼ÆËã×îÉÏÃæÒ»¸ñ + leftEdge1[sz-1]=theCube->addEdge(lowLeftVertex1,vertex5[i+1]); + leftEdge3[sz-1]=theCube->addEdge(lowLeftVertex3,vertex9[i+1]); + size_t topEdge1=edge5[i]; + size_t topEdge3=edge9[i]; + size_t edgeList1[4]={0}; + size_t edgeList3[4]={0}; + edgeList1[0]=leftEdge1[sz-1]; + edgeList3[0]=leftEdge3[sz-1]; + edgeList1[1]=topEdge1; + edgeList3[1]=topEdge3; + edgeList1[2]=rightEdge1[sz-1]; + edgeList3[2]=rightEdge3[sz-1]; + edgeList1[3]=lowEdge1; + edgeList3[3]=lowEdge3; + theCube->addFace(edgeList1,4); + theCube->addFace(edgeList3,4); + rightVertex1[sz-1]=vertex5[i+1]; + rightVertex3[sz-1]=vertex9[i+1]; + } + for(size_t e=0;eaddEdge(newVertex1,rightVertex1[e]); + size_t topEdge3=theCube->addEdge(newVertex3,rightVertex3[e]); + size_t edgeList1[4]={0}; + size_t edgeList3[4]={0}; + edgeList1[0]=edge2[e]; + edgeList3[0]=edge4[e]; + edgeList1[1]=topEdge1; + edgeList3[1]=topEdge3; + edgeList1[2]=rightEdge1[e]; + edgeList3[2]=rightEdge3[e]; + edgeList1[3]=lowEdge1; + edgeList3[3]=lowEdge3; + theCube->addFace(edgeList1,4); + theCube->addFace(edgeList3,4); + lowEdge1=topEdge1; + lowEdge3=topEdge3; + lowLeftVertex1=newVertex1; + lowLeftVertex3=newVertex3; + } + //¼ÆËã×îÉÏÃæµÄ·½¸ñ + { + size_t edgeList1[4]={0}; + size_t edgeList3[4]={0}; + edgeList1[0]=edge2[sz-1]; + edgeList3[0]=edge4[sz-1]; + edgeList1[1]=edge5[sy-1]; + edgeList3[1]=edge9[sy-1]; + edgeList1[2]=rightEdge1[sz-1]; + edgeList3[2]=rightEdge3[sz-1]; + edgeList1[3]=lowEdge1; + edgeList3[3]=lowEdge3; + theCube->addFace(edgeList1,4); + theCube->addFace(edgeList3,4); + } + delete rightEdge1; + delete rightEdge3; + delete rightVertex1; + delete rightVertex3; + } + { + //Éú³ÉÃæ2ºÍÃæ4 + size_t *rightEdge2=new size_t[sz]; + size_t *rightEdge4=new size_t[sz]; + size_t *rightVertex2=new size_t[sz]; + size_t *rightVertex4=new size_t[sz]; + for(size_t i=0;iaddVertex(x+hlx-(i+1)*slx,y-hly,z-hlz+(e+1)*slz); + size_t newVertex4=theCube->addVertex(x-hlx+(i+1)*slx,y+hly,z-hlz+(e+1)*slz); + leftEdge2[e]=theCube->addEdge(lowLeftVertex2,newVertex2); + leftEdge4[e]=theCube->addEdge(lowLeftVertex4,newVertex4); + size_t topEdge2=theCube->addEdge(newVertex2,rightVertex2[e]); + size_t topEdge4=theCube->addEdge(newVertex4,rightVertex4[e]); + size_t edgeList2[4]={0}; + size_t edgeList4[4]={0}; + edgeList2[0]=leftEdge2[e]; + edgeList4[0]=leftEdge4[e]; + edgeList2[1]=topEdge2; + edgeList4[1]=topEdge4; + edgeList2[2]=rightEdge2[e]; + edgeList4[2]=rightEdge4[e]; + edgeList2[3]=lowEdge2; + edgeList4[3]=lowEdge4; + theCube->addFace(edgeList2,4); + theCube->addFace(edgeList4,4); + lowEdge2=topEdge2; + lowEdge4=topEdge4; + lowLeftVertex2=newVertex2; + lowLeftVertex4=newVertex4; + rightVertex2[e]=newVertex2; + rightVertex4[e]=newVertex4; + } + { + //¼ÆËã×îÉÏÃæÒ»¸ñ + leftEdge2[sz-1]=theCube->addEdge(lowLeftVertex2,vertex7[i+1]); + leftEdge4[sz-1]=theCube->addEdge(lowLeftVertex4,vertex11[i+1]); + size_t topEdge2=edge7[i]; + size_t topEdge4=edge11[i]; + size_t edgeList2[4]={0}; + size_t edgeList4[4]={0}; + edgeList2[0]=leftEdge2[sz-1]; + edgeList4[0]=leftEdge4[sz-1]; + edgeList2[1]=topEdge2; + edgeList4[1]=topEdge4; + edgeList2[2]=rightEdge2[sz-1]; + edgeList4[2]=rightEdge4[sz-1]; + edgeList2[3]=lowEdge2; + edgeList4[3]=lowEdge4; + theCube->addFace(edgeList2,4); + theCube->addFace(edgeList4,4); + rightVertex2[sz-1]=vertex7[i+1]; + rightVertex4[sz-1]=vertex11[i+1]; + } + for(size_t e=0;eaddEdge(newVertex2,rightVertex2[e]); + size_t topEdge4=theCube->addEdge(newVertex4,rightVertex4[e]); + size_t edgeList2[4]={0}; + size_t edgeList4[4]={0}; + edgeList2[0]=edge3[e]; + edgeList4[0]=edge1[e]; + edgeList2[1]=topEdge2; + edgeList4[1]=topEdge4; + edgeList2[2]=rightEdge2[e]; + edgeList4[2]=rightEdge4[e]; + edgeList2[3]=lowEdge2; + edgeList4[3]=lowEdge4; + theCube->addFace(edgeList2,4); + theCube->addFace(edgeList4,4); + lowEdge2=topEdge2; + lowEdge4=topEdge4; + lowLeftVertex2=newVertex2; + lowLeftVertex4=newVertex4; + } + //¼ÆËã×îÉÏÃæµÄ·½¸ñ + { + size_t edgeList2[4]={0}; + size_t edgeList4[4]={0}; + edgeList2[0]=edge3[sz-1]; + edgeList4[0]=edge1[sz-1]; + edgeList2[1]=edge7[sx-1]; + edgeList4[1]=edge11[sx-1]; + edgeList2[2]=rightEdge2[sz-1]; + edgeList4[2]=rightEdge4[sz-1]; + edgeList2[3]=lowEdge2; + edgeList4[3]=lowEdge4; + theCube->addFace(edgeList2,4); + theCube->addFace(edgeList4,4); + } + delete rightEdge2; + delete rightEdge4; + delete rightVertex2; + delete rightVertex4; + } + { + //Éú³ÉÃæ5,ÉÏÃæµÄÃæÊÇ5 + size_t *rightEdge5=new size_t[sx]; + size_t *rightVertex5=new size_t[sx]; + for(size_t i=0;iaddVertex(x+hlx-(e+1)*slx,y-hly+(i+1)*sly,z+hlz); + leftEdge5[e]=theCube->addEdge(lowLeftVertex5,newVertex5); + size_t topEdge5=theCube->addEdge(newVertex5,rightVertex5[e]); + size_t edgeList5[4]={0}; + edgeList5[3]=leftEdge5[e]; + edgeList5[2]=topEdge5; + edgeList5[1]=rightEdge5[e]; + edgeList5[0]=lowEdge5; + theCube->addFace(edgeList5,4); + lowEdge5=topEdge5; + lowLeftVertex5=newVertex5; + rightVertex5[e]=newVertex5; + } + { + //¼ÆËã×îÉÏÃæÒ»¸ñ + leftEdge5[sx-1]=theCube->addEdge(lowLeftVertex5,vertex9[i+1]); + size_t topEdge5=edge9[i]; + size_t edgeList5[4]={0}; + edgeList5[3]=leftEdge5[sx-1]; + edgeList5[2]=topEdge5; + edgeList5[1]=rightEdge5[sx-1]; + edgeList5[0]=lowEdge5; + theCube->addFace(edgeList5,4); + rightVertex5[sx-1]=vertex9[i+1]; + } + for(size_t e=0;eaddEdge(newVertex5,rightVertex5[e]); + size_t edgeList5[4]={0}; + edgeList5[3]=edge11[sx-1-e]; + edgeList5[2]=topEdge5; + edgeList5[1]=rightEdge5[e]; + edgeList5[0]=lowEdge5; + theCube->addFace(edgeList5,4); + lowEdge5=topEdge5; + lowLeftVertex5=newVertex5; + } + //¼ÆËã×îÉÏÃæµÄ·½¸ñ + { + size_t edgeList5[4]={0}; + edgeList5[3]=edge11[0]; + edgeList5[2]=edge9[sy-1]; + edgeList5[1]=rightEdge5[sx-1]; + edgeList5[0]=lowEdge5; + theCube->addFace(edgeList5,4); + } + delete rightEdge5; + delete rightVertex5; + } + { + //Éú³ÉÃæ6,ÉÏÃæµÄÃæÊÇ5 + size_t *rightEdge6=new size_t[sy]; + size_t *rightVertex6=new size_t[sy]; + for(size_t i=0;iaddVertex(x+hlx-(i+1)*slx,y+hly-(e+1)*sly,z-hlz); + leftEdge6[e]=theCube->addEdge(lowLeftVertex6,newVertex6); + size_t topEdge6=theCube->addEdge(newVertex6,rightVertex6[e]); + size_t edgeList6[4]={0}; + edgeList6[0]=leftEdge6[e]; + edgeList6[1]=topEdge6; + edgeList6[2]=rightEdge6[e]; + edgeList6[3]=lowEdge6; + theCube->addFace(edgeList6,4); + lowEdge6=topEdge6; + lowLeftVertex6=newVertex6; + rightVertex6[e]=newVertex6; + } + { + //¼ÆËã×îÉÏÃæÒ»¸ñ + leftEdge6[sy-1]=theCube->addEdge(lowLeftVertex6,vertex8[i+1]); + size_t topEdge6=edge8[i]; + size_t edgeList6[4]={0}; + edgeList6[0]=leftEdge6[sy-1]; + edgeList6[1]=topEdge6; + edgeList6[2]=rightEdge6[sy-1]; + edgeList6[3]=lowEdge6; + theCube->addFace(edgeList6,4); + rightVertex6[sy-1]=vertex8[i+1]; + } + for(size_t e=0;eaddEdge(newVertex6,rightVertex6[e]); + size_t edgeList6[4]={0}; + edgeList6[0]=edge10[sy-1-e]; + edgeList6[1]=topEdge6; + edgeList6[2]=rightEdge6[e]; + edgeList6[3]=lowEdge6; + theCube->addFace(edgeList6,4); + lowEdge6=topEdge6; + lowLeftVertex6=newVertex6; + } + //¼ÆËã×îÉÏÃæµÄ·½¸ñ + { + size_t edgeList6[4]={0}; + edgeList6[0]=edge10[0]; + edgeList6[1]=edge8[sx-1]; + edgeList6[2]=rightEdge6[sy-1]; + edgeList6[3]=lowEdge6; + theCube->addFace(edgeList6,4); + } + delete rightEdge6; + delete rightVertex6; + } + //ÊÍ·Å¿Õ¼ä + delete edge1; + delete vertex1; + delete edge2; + delete vertex2; + delete edge3; + delete vertex3; + delete edge4; + delete vertex4; + + delete edge5; + delete vertex5; + delete edge6; + delete vertex6; + + delete edge7; + delete vertex7; + delete edge8; + delete vertex8; + + delete edge9; + delete vertex9; + delete edge10; + delete vertex10; + + delete edge11; + delete vertex11; + delete edge12; + delete vertex12; +} + +size_t Scene::newCylinder(float x,float y,float z,float r,float h,AxisMode::__Enum axis,size_t sa,size_t sr,size_t sh) +{ + Object *theCylinder=new Object("Clinder"); + newCylinder(theCylinder,x,y,z,r,h,axis,sa,sr,sh); + theObjectList.add(theCylinder); + return theCylinder->index; +} +void Scene::newCylinder(Object *theCylinder,float x,float y,float z,float r,float h,AxisMode::__Enum axis,size_t sa,size_t sr,size_t sh) +{ + //Ê×ÏÈÉú³ÉÒ»¸öÎïÌå + theCylinder->center.x=x; + theCylinder->center.y=y; + theCylinder->center.z=z; + + { + //Ê×ÏÈÉú³ÉÖáÉϵÄÁ½¸öµã + Vector positionAAxisV(positionAAxis(axis,x,y,z,0,0,0)); + size_t center=theCylinder->addVertex(positionAAxisV); + positionAAxisV=positionAAxis(axis,x,y,z,0,0,h); + size_t centerH=theCylinder->addVertex(positionAAxisV); + + //¼ÆË㻡¶È¼ä¸ô + float da=ps2PI/sa; + //¼ÆËã°ë¾¶µÝÔö¼ä¸ô + float dr=r/sr; + //¼ÆËã¸ß¶ÈµÝÔö¼ä¸ô + float dh=h/sh; + + size_t *startHEdge=new size_t[sh]; + size_t *startHVertex=new size_t[sh+1]; + + size_t *startUEdge=new size_t[sr]; + size_t *startUVertex=new size_t[sr+1]; + + size_t *startLEdge=new size_t[sr]; + size_t *startLVertex=new size_t[sr+1]; + + //³õʼ»¯ÕâЩÐÅÏ¢ + + startUVertex[0]=centerH; + startLVertex[0]=center; + + positionAAxisV=positionAAxis(axis,x,y,z,r,0,h); + startUVertex[sr]=startHVertex[sh]=theCylinder->addVertex(positionAAxisV); + positionAAxisV=positionAAxis(axis,x,y,z,r,0,0); + startLVertex[sr]=startHVertex[0]=theCylinder->addVertex(positionAAxisV); + + //³õʼ»¯ÆðʼÏß + for(size_t i=1;iaddVertex(positionAAxisV); + startUEdge[i-1]=theCylinder->addEdge(startUVertex[i-1],startUVertex[i]); + positionAAxisV=positionAAxis(axis,x,y,z,dr*i,0,0); + startLVertex[i]=theCylinder->addVertex(positionAAxisV); + startLEdge[i-1]=theCylinder->addEdge(startLVertex[i-1],startLVertex[i]); + } + startUEdge[sr-1]=theCylinder->addEdge(startUVertex[sr-1],startUVertex[sr]); + startLEdge[sr-1]=theCylinder->addEdge(startLVertex[sr-1],startLVertex[sr]); + + for(size_t i=1;iaddVertex(positionAAxisV); + startHEdge[i-1]=theCylinder->addEdge(startHVertex[i-1],startHVertex[i]); + } + startHEdge[sh-1]=theCylinder->addEdge(startHVertex[sh-1],startHVertex[sh]); + + size_t *endHEdgeC=new size_t[sh]; + size_t *endHVertexC=new size_t[sh+1]; + + for(size_t i=0;iaddVertex(positionAAxisV); + positionAAxisV=positionAAxis(axis,x,y,z,r*cos(da*e),r*sin(da*e),0); + endLVertex[sr]=endHVertex[0]=theCylinder->addVertex(positionAAxisV); + + //³õʼ»¯ÆðʼÏß + for(size_t i=1;iaddVertex(positionAAxisV); + endUEdge[i-1]=theCylinder->addEdge(endUVertex[i-1],endUVertex[i]); + positionAAxisV=positionAAxis(axis,x,y,z,dr*i*cos(da*e),dr*i*sin(da*e),0); + endLVertex[i]=theCylinder->addVertex(positionAAxisV); + endLEdge[i-1]=theCylinder->addEdge(endLVertex[i-1],endLVertex[i]); + } + endUEdge[sr-1]=theCylinder->addEdge(endUVertex[sr-1],endUVertex[sr]); + endLEdge[sr-1]=theCylinder->addEdge(endLVertex[sr-1],endLVertex[sr]); + + for(size_t i=1;iaddVertex(positionAAxisV); + endHEdge[i-1]=theCylinder->addEdge(endHVertex[i-1],endHVertex[i]); + } + endHEdge[sh-1]=theCylinder->addEdge(endHVertex[sh-1],endHVertex[sh]); + + //ÕýʽÉú³ÉÃ棬Ê×ÏÈÊÇÉÏÏÂÃæ + size_t LEdge=theCylinder->addEdge(endHVertex[0],startHVertex[0]); + size_t UEdge=theCylinder->addEdge(endHVertex[sh],startHVertex[sh]); + size_t HLEdge=LEdge; + size_t HUEdge=UEdge; + for(size_t i=sr-1;i>0;--i) + { + size_t tempLEdge=theCylinder->addEdge(endLVertex[i],startLVertex[i]); + size_t tempUEdge=theCylinder->addEdge(endUVertex[i],startUVertex[i]); + + size_t edgeListL[4]={0}; + edgeListL[3]=tempLEdge; + edgeListL[2]=endLEdge[i]; + edgeListL[1]=LEdge; + edgeListL[0]=startLEdge[i]; + theCylinder->addFace(edgeListL,4); + + size_t edgeListU[4]={0}; + edgeListU[3]=tempUEdge; + edgeListU[2]=startUEdge[i]; + edgeListU[1]=UEdge; + edgeListU[0]=endUEdge[i]; + theCylinder->addFace(edgeListU,4); + + LEdge=tempLEdge; + UEdge=tempUEdge; + } + //²¹È«Èý½ÇÃæ + size_t edgeListL[3]={0}; + edgeListL[2]=endLEdge[0]; + edgeListL[1]=LEdge; + edgeListL[0]=startLEdge[0]; + theCylinder->addFace(edgeListL,3); + + size_t edgeListU[3]={0}; + edgeListU[2]=startUEdge[0]; + edgeListU[1]=UEdge; + edgeListU[0]=endUEdge[0]; + theCylinder->addFace(edgeListU,3); + + //Éú³É×ÝÏòµÄÃæ + for(size_t i=1;iaddEdge(endHVertex[i],startHVertex[i]); + size_t edgeListH[4]={0}; + edgeListH[3]=tempHLEdge; + edgeListH[2]=startHEdge[i-1]; + edgeListH[1]=HLEdge; + edgeListH[0]=endHEdge[i-1]; + theCylinder->addFace(edgeListH,4); + HLEdge=tempHLEdge; + } + size_t edgeListH[4]={0}; + edgeListH[3]=HUEdge; + edgeListH[2]=startHEdge[sh-1]; + edgeListH[1]=HLEdge; + edgeListH[0]=endHEdge[sh-1]; + theCylinder->addFace(edgeListH,4); + + delete startHEdge; + delete startHVertex; + delete startUEdge; + delete startUVertex; + delete startLEdge; + delete startLVertex; + + startHEdge=endHEdge; + startHVertex=endHVertex; + startUEdge=endUEdge; + startUVertex=endUVertex; + startLEdge=endLEdge; + startLVertex=endLVertex; + } + + size_t LEdge=theCylinder->addEdge(endHVertexC[0],startHVertex[0]); + size_t UEdge=theCylinder->addEdge(endHVertexC[sh],startHVertex[sh]); + size_t HLEdge=LEdge; + size_t HUEdge=UEdge; + for(size_t i=sr-1;i>0;--i) + { + size_t tempLEdge=theCylinder->addEdge(endLVertexC[i],startLVertex[i]); + size_t tempUEdge=theCylinder->addEdge(endUVertexC[i],startUVertex[i]); + + size_t edgeListL[4]={0}; + edgeListL[3]=tempLEdge; + edgeListL[2]=endLEdgeC[i]; + edgeListL[1]=LEdge; + edgeListL[0]=startLEdge[i]; + theCylinder->addFace(edgeListL,4); + + size_t edgeListU[4]={0}; + edgeListU[3]=tempUEdge; + edgeListU[2]=startUEdge[i]; + edgeListU[1]=UEdge; + edgeListU[0]=endUEdgeC[i]; + theCylinder->addFace(edgeListU,4); + + LEdge=tempLEdge; + UEdge=tempUEdge; + } + //²¹È«Èý½ÇÃæ + size_t edgeListL[3]={0}; + edgeListL[2]=endLEdgeC[0]; + edgeListL[1]=LEdge; + edgeListL[0]=startLEdge[0]; + theCylinder->addFace(edgeListL,3); + + size_t edgeListU[3]={0}; + edgeListU[2]=startUEdge[0]; + edgeListU[1]=UEdge; + edgeListU[0]=endUEdgeC[0]; + theCylinder->addFace(edgeListU,3); + + //Éú³É×ÝÏòµÄÃæ + for(size_t i=1;iaddEdge(endHVertexC[i],startHVertex[i]); + size_t edgeListH[4]={0}; + edgeListH[3]=tempHLEdge; + edgeListH[2]=startHEdge[i-1]; + edgeListH[1]=HLEdge; + edgeListH[0]=endHEdgeC[i-1]; + theCylinder->addFace(edgeListH,4); + HLEdge=tempHLEdge; + } + size_t edgeListH[4]={0}; + edgeListH[3]=HUEdge; + edgeListH[2]=startHEdge[sh-1]; + edgeListH[1]=HLEdge; + edgeListH[0]=endHEdgeC[sh-1]; + theCylinder->addFace(edgeListH,4); + + delete startHEdge; + delete startHVertex; + delete startUEdge; + delete startUVertex; + delete startLEdge; + delete startLVertex; + + delete endHEdgeC; + delete endHVertexC; + delete endUEdgeC; + delete endUVertexC; + delete endLEdgeC; + delete endLVertexC; + } + +} + +size_t Scene::newSphere(float x,float y,float z,float r,AxisMode::__Enum axis,size_t sa,size_t sr) +{ + Object *theSphere=new Object("Sphere"); + newSphere(theSphere,x,y,z,r,axis,sa,sr); + theObjectList.add(theSphere); + return theSphere->index; +} + +void Scene::newSphere(Object *theSphere,float x,float y,float z,float r,AxisMode::__Enum axis,size_t sa,size_t sr) +{ + theSphere->center.x=x; + theSphere->center.y=y; + theSphere->center.z=z; + //Ê×ÏȼÆËãÉÏÏÂÁ½¸ö¶¥µã + Vector positionAAxisV(positionAAxis(axis,x,y,z,0,0,r)); + size_t centerU=theSphere->addVertex(positionAAxisV); + positionAAxisV=positionAAxis(axis,x,y,z,0,0,-r); + size_t centerL=theSphere->addVertex(positionAAxisV); + //¼ÆËã¼ä¸ô + float dr=psPI2/sr; + float da=ps2PI/sa; + + size_t *startUEdge=new size_t[sr]; + size_t *startUVertex=new size_t[sr+1]; + + size_t *startLEdge=new size_t[sr]; + size_t *startLVertex=new size_t[sr+1]; + + size_t *endUEdgeC=new size_t[sr]; + size_t *endUVertexC=new size_t[sr+1]; + + size_t *endLEdgeC=new size_t[sr]; + size_t *endLVertexC=new size_t[sr+1]; + + startUVertex[0]=endUVertexC[0]=centerU; + startLVertex[0]=endLVertexC[0]=centerL; + + positionAAxisV=positionAAxis(axis,x,y,z,r,0,0); + startUVertex[sr]=endUVertexC[sr]=startLVertex[sr]=endLVertexC[sr]=theSphere->addVertex(positionAAxisV); + + for(size_t i=1;iaddVertex(positionAAxisV); + positionAAxisV=positionAAxis(axis,x,y,z,r*cos((sr-i)*dr),0,-r*sin((sr-i)*dr)); + startLVertex[i]=endLVertexC[i]=theSphere->addVertex(positionAAxisV); + } + //½¨Á¢µÚÒ»Ìõ±ß + for(size_t i=0;iaddEdge(startUVertex[i],startUVertex[i+1]); + startLEdge[i]=endLEdgeC[i]=theSphere->addEdge(startLVertex[i],startLVertex[i+1]); + } + //¿ªÊ¼Ñ­»·»æÖÆ + for(size_t e=0;eaddVertex(positionAAxisV); + + for(size_t i=1;iaddVertex(positionAAxisV); + positionAAxisV=positionAAxis(axis,x,y,z,r*cos((sr-i)*dr)*cos((e+1)*da),r*cos((sr-i)*dr)*sin((e+1)*da),-r*sin((sr-i)*dr)); + endLVertex[i]=theSphere->addVertex(positionAAxisV); + } + + for(size_t i=0;iaddEdge(endUVertex[i],endUVertex[i+1]); + endLEdge[i]=theSphere->addEdge(endLVertex[i],endLVertex[i+1]); + } + + //ÕýʽÉú³ÉÃæ + size_t middleEdge=theSphere->addEdge(endUVertex[sr],startUVertex[sr]); + size_t upEdge=theSphere->addEdge(endUVertex[1],startUVertex[1]); + size_t lowEdge=theSphere->addEdge(endLVertex[1],startLVertex[1]); + size_t tempUpEdge=upEdge; + size_t tempLowEdge=lowEdge; + for(size_t i=1;iaddEdge(endUVertex[i+1],startUVertex[i+1]); + size_t edgeListU[4]={0}; + edgeListU[3]=endUEdge[i]; + edgeListU[2]=tempUpEdge; + edgeListU[1]=startUEdge[i]; + edgeListU[0]=tempEdgeU; + theSphere->addFace(edgeListU,4); + + size_t tempEdgeL=theSphere->addEdge(endLVertex[i+1],startLVertex[i+1]); + size_t edgeListL[4]={0}; + edgeListL[3]=endLEdge[i]; + edgeListL[2]=tempEdgeL; + edgeListL[1]=startLEdge[i]; + edgeListL[0]=tempLowEdge; + theSphere->addFace(edgeListL,4); + + tempUpEdge=tempEdgeU; + tempLowEdge=tempEdgeL; + } + + size_t edgeListU[4]={0}; + edgeListU[3]=endUEdge[sr-1]; + edgeListU[2]=tempUpEdge; + edgeListU[1]=startUEdge[sr-1]; + edgeListU[0]=middleEdge; + theSphere->addFace(edgeListU,4); + + size_t edgeListL[4]={0}; + edgeListL[3]=endLEdge[sr-1]; + edgeListL[2]=middleEdge; + edgeListL[1]=startLEdge[sr-1]; + edgeListL[0]=tempLowEdge; + theSphere->addFace(edgeListL,4); + + edgeListU[2]=endUEdge[0]; + edgeListU[1]=startUEdge[0]; + edgeListU[0]=upEdge; + theSphere->addFace(edgeListU,3); + + edgeListL[2]=endLEdge[0]; + edgeListL[1]=lowEdge; + edgeListL[0]=startLEdge[0]; + theSphere->addFace(edgeListL,3); + + delete startUEdge; + delete startUVertex; + delete startLEdge; + delete startLVertex; + + startUEdge=endUEdge; + startUVertex=endUVertex; + startLEdge=endLEdge; + startLVertex=endLVertex; + } + + //Éú³É×îºóÒ»Ìõ + + size_t middleEdge=theSphere->addEdge(endUVertexC[sr],startUVertex[sr]); + size_t upEdge=theSphere->addEdge(endUVertexC[1],startUVertex[1]); + size_t lowEdge=theSphere->addEdge(endLVertexC[1],startLVertex[1]); + size_t tempUpEdge=upEdge; + size_t tempLowEdge=lowEdge; + for(size_t i=1;iaddEdge(endUVertexC[i+1],startUVertex[i+1]); + size_t edgeListU[4]={0}; + edgeListU[3]=endUEdgeC[i]; + edgeListU[2]=tempUpEdge; + edgeListU[1]=startUEdge[i]; + edgeListU[0]=tempEdgeU; + theSphere->addFace(edgeListU,4); + + size_t tempEdgeL=theSphere->addEdge(endLVertexC[i+1],startLVertex[i+1]); + size_t edgeListL[4]={0}; + edgeListL[3]=endLEdgeC[i]; + edgeListL[2]=tempEdgeL; + edgeListL[1]=startLEdge[i]; + edgeListL[0]=tempLowEdge; + theSphere->addFace(edgeListL,4); + + tempUpEdge=tempEdgeU; + tempLowEdge=tempEdgeL; + } + + size_t edgeListU[4]={0}; + edgeListU[3]=endUEdgeC[sr-1]; + edgeListU[2]=tempUpEdge; + edgeListU[1]=startUEdge[sr-1]; + edgeListU[0]=middleEdge; + theSphere->addFace(edgeListU,4); + + size_t edgeListL[4]={0}; + edgeListL[3]=endLEdgeC[sr-1]; + edgeListL[2]=middleEdge; + edgeListL[1]=startLEdge[sr-1]; + edgeListL[0]=tempLowEdge; + theSphere->addFace(edgeListL,4); + + edgeListU[2]=endUEdgeC[0]; + edgeListU[1]=startUEdge[0]; + edgeListU[0]=upEdge; + theSphere->addFace(edgeListU,3); + + edgeListL[2]=endLEdgeC[0]; + edgeListL[1]=lowEdge; + edgeListL[0]=startLEdge[0]; + theSphere->addFace(edgeListL,3); + + delete startUEdge; + delete startUVertex; + delete startLEdge; + delete startLVertex; + + delete endUEdgeC; + delete endUVertexC; + delete endLEdgeC; + delete endLVertexC; +} + +void Scene::moveVertex(float x,float y,float z) +{ + //ÕâÀïÓ¦¸Ã¼ÓÉÏһЩºÏ·¨ÐÔµÄÅжϣ¬±ÈÈ統ǰµÄÑ¡ÔñģʽÊÇ·ñÊǶ¥µãģʽ¡£ + //Ê×ÏȽøÐкϷ¨ÐÔµÄÅÐ¶Ï + if(mode==SelectionMode::Vertex && target) + { + //±éÀúËùÓÐÑ¡ÔñµÄµã +// size_t selectionSize=selection.size(); + for(size_t e=0;evertex(selection[e]); + //ÔÚµ±Ç°µÄλÖÃÉÏÔö¼Ó + theObjectList[target]->vertexPositionChangeR(selection[e],x,y,z); + } + } +} + +void Scene::moveEdge(float x,float y,float z) +{ + if(mode==SelectionMode::Edge && target) + { + + size_t edgeCount=selection.size(); + for(size_t e=0;evertex(theObjectList[target]->edge(selection[e])->end); + if(!theVertex->isIn) + { + theVertex->isIn=true; + isInCache.push_back(theVertex); + theObjectList[target]->vertexPositionChangeR(theVertex->index,x,y,z); + } + theVertex=theObjectList[target]->vertex(theObjectList[target]->edge(selection[e])->start); + if(!theVertex->isIn) + { + theVertex->isIn=true; + isInCache.push_back(theVertex); + theObjectList[target]->vertexPositionChangeR(theVertex->index,x,y,z); + } + } + //ÕâÀïÒªÇå¿ÕisInCache + clearIsInCache(); + } +} + +void Scene::moveFace(float x,float y,float z) +{ + //Ê×ÏÈÒªµÃµ½±»Òƶ¯µÄµã¼¯ + if(mode==SelectionMode::Face && target) + { + + size_t selectionCount=selection.size(); + for(size_t i=0;iface(selection[i]); + size_t edgeCount=theFace->edge.size(); + for(size_t e=0;eedge[e]>0) + { + if(!theObjectList[target]->vertex(theObjectList[target]->edge(theFace->edge[e])->end)->isIn) + { + Vertex *theVertex=theObjectList[target]->vertex(theObjectList[target]->edge(theFace->edge[e])->end); + theVertex->isIn=true; + isInCache.push_back(theVertex); + theObjectList[target]->vertexPositionChangeR(theVertex->index,x,y,z); + } + } + else + { + if(!theObjectList[target]->vertex(theObjectList[target]->edge(-theFace->edge[e])->start)->isIn) + { + Vertex *theVertex=theObjectList[target]->vertex(theObjectList[target]->edge(-theFace->edge[e])->start); + theVertex->isIn=true; + isInCache.push_back(theVertex); + theObjectList[target]->vertexPositionChangeR(theVertex->index,x,y,z); + } + } + } + } + clearIsInCache(); + + } +} + +//×¢Ò⣬Çå³þÎÞÓõĶ˵㵫ûÓбߵÄ×óÓÒÃæ!!!!!!!!!!! +void Scene::deleteEdgeH(size_t t,size_t edgeID) +{ + Edge *theEdge=theObjectList[t]->edge(edgeID); + Vertex *theStart=theObjectList[t]->vertex(theEdge->start); + size_t adjEdgeCount=theStart->adjacentEdge.size(); + for(size_t e=0;eadjacentEdge[e]==(int)theEdge->index) + { + theObjectList[t]->vertexAdjacentRemove(theStart->index,e); + break; + } + } + if(theStart->adjacentEdge.empty()) + { + theObjectList[t]->objectVertexRemove(theStart->index); + } + Vertex *theEnd=theObjectList[t]->vertex(theEdge->end); + adjEdgeCount=theEnd->adjacentEdge.size(); + for(size_t e=0;eadjacentEdge[e]==(int)theEdge->index) + { + theObjectList[t]->vertexAdjacentRemove(theEnd->index,e); + break; + } + } + if(theEnd->adjacentEdge.empty()) + { + theObjectList[t]->objectVertexRemove(theEnd->index); + } + theObjectList[t]->objectEdgeRemove(edgeID); +} + +void Scene::deleteVertex() +{ + if(mode==SelectionMode::Vertex && target) + { + size_t vertexCount=selection.size(); + for(size_t i=0;ivertex(selection[i]); + size_t edgeCount=currentVertex->adjacentEdge.size(); + for(size_t e=0;eedge(currentVertex->adjacentEdge[e])->end==selection[i]) + { + Face *currentFace=theObjectList[target]->face(theObjectList[target]->edge(currentVertex->adjacentEdge[e])->right); + if(currentFace==NULL) + continue; + size_t edgeSize=currentFace->edge.size(); + for(size_t h=0;hedge[h]>0) + { + theObjectList[target]->edgeRightChange(currentFace->edge[h],0); + } + else + { + theObjectList[target]->edgeLeftChange(-currentFace->edge[h],0); + } + } + theObjectList[target]->objectFaceRemove(currentFace->index); + } + else + if(theObjectList[target]->edge(currentVertex->adjacentEdge[e])->start==selection[i]) + { + Face *currentFace=theObjectList[target]->face(theObjectList[target]->edge(currentVertex->adjacentEdge[e])->left); + if(currentFace==NULL) + continue; + size_t edgeSize=currentFace->edge.size(); + for(size_t h=0;hedge[h]>0) + { + theObjectList[target]->edgeRightChange(currentFace->edge[h],0); + } + else + { + theObjectList[target]->edgeLeftChange(-currentFace->edge[h],0); + } + } + theObjectList[target]->objectFaceRemove(currentFace->index); + } + } + for(int e=edgeCount-1;e>-1;--e) + { + Edge *theEdge=theObjectList[target]->edge(currentVertex->adjacentEdge[e]); + deleteEdgeH(target,theEdge->index); + } + } + clearSelection(); + theObjectList[target]->clearPSCache(); + updateAxisCursor(); + } +} + +void Scene::deleteFace() +{ + if(mode==SelectionMode::Face && target) + { + //Ê×Ïȵõ½ÒªÉ¾³ýµÄÃæÊý + size_t faceCount=selection.size(); + for(size_t i=0;iface(selection[i]); + size_t edgeCount=theFace->edge.size(); + for(size_t e=0;eedge[e]>0) + { + theObjectList[target]->edgeRightChange(theFace->edge[e],0); + if(theObjectList[target]->edge(theFace->edge[e])->left==0) + { + deleteEdgeH(target,theFace->edge[e]); + } + } + else + { + theObjectList[target]->edgeLeftChange(-theFace->edge[e],0); + if(theObjectList[target]->edge(-theFace->edge[e])->right==0) + { + deleteEdgeH(target,-theFace->edge[e]); + } + } + } + theObjectList[target]->objectFaceRemove(theFace->index); + } + } +} + +void Scene::extrudeEdge(float x,float y,float z) +{ + if(mode==SelectionMode::Edge && target) + { + std::vector newSelection; + size_t edgeCount=selection.size(); + newSelection.reserve(edgeCount); + for(size_t e=0;eedge(selection[e]); + if(theEdge->left==0 || theEdge->right==0) + { + Vertex *theEnd=theObjectList[target]->vertex(theEdge->end); + if(!theEnd->isIn) + { + theEnd->clone=theObjectList[target]->addVertex(theEnd->position.x+x,theEnd->position.y+y,theEnd->position.z+z); + theObjectList[target]->vertex(theEnd->clone)->clone=theObjectList[target]->addEdge(theEnd->index,theEnd->clone); + theEnd->isIn=true; + isInCache.push_back(theEnd); + } + Vertex *theStart=theObjectList[target]->vertex(theEdge->start); + if(!theStart->isIn) + { + theStart->clone=theObjectList[target]->addVertex(theStart->position.x+x,theStart->position.y+y,theStart->position.z+z); + theObjectList[target]->vertex(theStart->clone)->clone=theObjectList[target]->addEdge(theStart->index,theStart->clone); + theStart->isIn=true; + isInCache.push_back(theStart); + } + //Éú³ÉÃæ + size_t tempEdge[4]={0}; + if(theEdge->right==0) + { + tempEdge[0]=theEdge->index; + tempEdge[1]=theObjectList[target]->vertex(theEnd->clone)->clone; + tempEdge[2]=theObjectList[target]->addEdge(theEnd->clone,theStart->clone); + newSelection.push_back(tempEdge[2]); + tempEdge[3]=theObjectList[target]->vertex(theStart->clone)->clone; + } + else + { + tempEdge[0]=theEdge->index; + tempEdge[1]=theObjectList[target]->vertex(theStart->clone)->clone; + tempEdge[2]=theObjectList[target]->addEdge(theEnd->clone,theStart->clone); + newSelection.push_back(tempEdge[2]); + tempEdge[3]=theObjectList[target]->vertex(theEnd->clone)->clone; } + theObjectList[target]->addFace(tempEdge,4); + } + } + clearIsInCache(); + + clearSelection(); + for(size_t i=0;iedge(newSelection[i])); + } + } +} + +size_t Scene::insertVertex(int edgeID,float pos) +{ + Edge *theEdge=theObjectList[target]->edge(edgeID); + Vertex *theEnd=theObjectList[target]->vertex(theEdge->end); + Vertex *theStart=theObjectList[target]->vertex(theEdge->start); + size_t newVertex=theObjectList[target]->addVertex(theStart->position.x+(theEnd->position.x-theStart->position.x)*pos,theStart->position.y+(theEnd->position.y-theStart->position.y)*pos,theStart->position.z+(theEnd->position.z-theStart->position.z)*pos); + size_t right=theEdge->right; + size_t left=theEdge->left; + size_t edgeCount=theEnd->adjacentEdge.size(); + size_t removedEdge=theEdge->index; + deleteEdgeH(target,removedEdge); + size_t edgeS=theObjectList[target]->addEdge(theStart->index,newVertex); + size_t edgeE=theObjectList[target]->addEdge(newVertex,theEnd->index); + + Face *theFace=theObjectList[target]->face(right); + if(theFace) + { + edgeCount=theFace->edge.size(); + size_t e; + for(e=0;eedge[e]==(int)removedEdge) + { + theObjectList[target]->faceEdgeChange(theFace->index,e,edgeS); + break; + } + } + theObjectList[target]->faceEdgeInsert(theFace->index,e+1,edgeE); + theObjectList[target]->edgeRightChange(edgeE,right); + theObjectList[target]->edgeRightChange(edgeS,right); + } + + theFace=theObjectList[target]->face(left); + if(theFace) + { + edgeCount=theFace->edge.size(); + size_t e; + for(e=0;eedge[e]==-((int)removedEdge)) + { + theObjectList[target]->faceEdgeChange(theFace->index,e,-((int)edgeE)); + break; + } + } + theObjectList[target]->faceEdgeInsert(theFace->index,e+1,-((int)edgeS)); + theObjectList[target]->edgeLeftChange(edgeE,left); + theObjectList[target]->edgeLeftChange(edgeS,left); + } + + return newVertex; +} + +void Scene::split(int startV,int endV) +{ + //printf("begin\n"); + Vertex *theStart=theObjectList[target]->vertex(startV); + Vertex *theEnd=theObjectList[target]->vertex(endV); + size_t edgeCount=theStart->adjacentEdge.size(); + size_t e; + Face *theFace=NULL; + for(e=0;eedge(theStart->adjacentEdge[e])->start==theEnd->index || theObjectList[target]->edge(theStart->adjacentEdge[e])->end==theEnd->index) + { + //±éÀústartµã£¬¿´ÊDz»ÊǺÍendµãÖ»ÓÐÒ»¸ö±ßÏàÁ¬ + return; + } + if(theObjectList[target]->edge(theStart->adjacentEdge[e])->left && !theObjectList[target]->face(theObjectList[target]->edge(theStart->adjacentEdge[e])->left)->isIn) + { + theFace=theObjectList[target]->face(theObjectList[target]->edge(theStart->adjacentEdge[e])->left); + theFace->isIn=true; + isInCache.push_back(theFace); + } + // else + if(theObjectList[target]->edge(theStart->adjacentEdge[e])->right && !theObjectList[target]->face(theObjectList[target]->edge(theStart->adjacentEdge[e])->right)->isIn) + { + theFace=theObjectList[target]->face(theObjectList[target]->edge(theStart->adjacentEdge[e])->right); + theFace->isIn=true; + isInCache.push_back(theFace); + } + } + edgeCount=theEnd->adjacentEdge.size(); + //Face *theFace=NULL; + for(e=0;eedge(theEnd->adjacentEdge[e])->left && theObjectList[target]->face(theObjectList[target]->edge(theEnd->adjacentEdge[e])->left)->isIn) + { + theFace=theObjectList[target]->face(theObjectList[target]->edge(theEnd->adjacentEdge[e])->left); + break; + } + // else + if(theObjectList[target]->edge(theEnd->adjacentEdge[e])->right && theObjectList[target]->face(theObjectList[target]->edge(theEnd->adjacentEdge[e])->right)->isIn) + { + theFace=theObjectList[target]->face(theObjectList[target]->edge(theEnd->adjacentEdge[e])->right); + break; + } + } + clearIsInCache(); + if(e==edgeCount) + { + //˵Ã÷²»¹²Ãæ + return; + } + //printf("begin2\n"); + //µ½ÕâÒ»²½¿ÉÒÔ˵Ã÷ÕâÁ½¸öµã²»¹²±ß¶øÇÒ¹²Ïíͬһ¸öÃæ + //н¨Ò»¸ö±ß + size_t newEdge=theObjectList[target]->addEdge(theStart->index,theEnd->index); + //printf("begin2.5\n"); + edgeCount=theFace->edge.size(); + size_t edgeS[2]={0}; + size_t edgeE[2]={0}; + for(size_t i=0;iedge[i]>0) + { + if(theObjectList[target]->edge(theFace->edge[i])->end==theStart->index) + { + edgeS[0]=i; + edgeS[1]=(i+1)%edgeCount; + } + if(theObjectList[target]->edge(theFace->edge[i])->end==theEnd->index) + { + edgeE[0]=i; + edgeE[1]=(i+1)%edgeCount; + } + } + else + { + if(theObjectList[target]->edge(-theFace->edge[i])->start==theStart->index) + { + edgeS[0]=i; + edgeS[1]=(i+1)%edgeCount; + } + if(theObjectList[target]->edge(-theFace->edge[i])->start==theEnd->index) + { + edgeE[0]=i; + edgeE[1]=(i+1)%edgeCount; + } + } + } + + //printf("[%d]",theFace->index); + //µÃµ½theStartËùÔڵĵÚÒ»¸ö±ß + //Éú³ÉÁ½¸öеÄÃæ + size_t *tempFace=new size_t[theFace->edge.size()*2]; + size_t b=edgeS[1]; + size_t count=0; + while(b!=edgeE[1]) + { + if(theFace->edge[b]>0) + { + theObjectList[target]->edgeRightChange(theFace->edge[b],0); + tempFace[count]=theFace->edge[b]; + ++count; + } + else + { + theObjectList[target]->edgeLeftChange(-theFace->edge[b],0); + tempFace[count]=-theFace->edge[b]; + ++count; + } + ++b; + b=b%theFace->edge.size(); + } + tempFace[count]=newEdge; + //printf("count:%d,size:%d\n",count+1,theFace->edge.size()*2); + theObjectList[target]->addFace(tempFace,count+1); + delete tempFace; + tempFace=new size_t[theFace->edge.size()*2]; + //printf("begin3\n"); + b=edgeE[1]; + count=0; + while(b!=edgeS[1]) + { + if(theFace->edge[b]>0) + { + theObjectList[target]->edgeRightChange(theFace->edge[b],0); + tempFace[count]=theFace->edge[b]; + ++count; + } + else + { + theObjectList[target]->edgeLeftChange(-theFace->edge[b],0); + tempFace[count]=-theFace->edge[b]; + ++count; + } + ++b; + b=b%theFace->edge.size(); + } + tempFace[count]=newEdge; +// for(size_t i=0;iaddFace(tempFace,count+1); + //printf("begin4\n"); + //printf("[%d]",theFace->index); + + size_t fi=theFace->index; + theFace=NULL; + theObjectList[target]->objectFaceRemove(fi); + delete tempFace; +} + +void Scene::removeEdge() +{ + if(mode==SelectionMode::Edge && target){ + //±éÀúËùÓÐµÄ±ß + size_t removedEdgeCount=selection.size(); + for(size_t i=0;iedge(selection[i]); + if(theEdge==NULL) + { + continue; + } + //ÕâÀïÅжÏÊDZßÔµµÄ±ß»¹ÊÇÄÚ²¿µÄ±ß + if(theEdge->left==0) + { + //±£Ö¤Ã¿¸ö±ß±ØÓÐÁÚ½ÓµÄÃæ + Face *theFace=theObjectList[target]->face(theEdge->right); + size_t adjEdgeCount=theFace->edge.size(); + for(size_t e=0;eedge[e]>0) + { + theObjectList[target]->edgeRightChange(theFace->edge[e],0); + if(!theObjectList[target]->edge(theFace->edge[e])->left) + { + deleteEdgeH(target,theFace->edge[e]); + } + } + else + { + theObjectList[target]->edgeLeftChange(-theFace->edge[e],0); + if(!theObjectList[target]->edge(-theFace->edge[e])->right) + { + deleteEdgeH(target,-theFace->edge[e]); + } + } + } + theObjectList[target]->objectFaceRemove(theFace->index); + } + else + if(theEdge->right==0) + { + Face *theFace=theObjectList[target]->face(theEdge->left); + size_t adjEdgeCount=theFace->edge.size(); + for(size_t e=0;eedge[e]>0) + { + theObjectList[target]->edgeRightChange(theFace->edge[e],0); + if(!theObjectList[target]->edge(theFace->edge[e])->left) + { + deleteEdgeH(target,theFace->edge[e]); + } + } + else + { + theObjectList[target]->edgeLeftChange(-theFace->edge[e],0); + if(!theObjectList[target]->edge(-theFace->edge[e])->right) + { + deleteEdgeH(target,-theFace->edge[e]); + } + } + } + theObjectList[target]->objectFaceRemove(theFace->index); + } + else + { + Face *theLeft=theObjectList[target]->face(theEdge->left); + Face *theRight=theObjectList[target]->face(theEdge->right); + //Ê×ÏÈÔÚÓÒ²àµÄÃæÀïÃæÕÒµ½ÒªÉ¾³ýµÄÕâ¸ö±ß + size_t adjEdgeCount=theRight->edge.size(); + size_t e=0; + for(e=0;eedge[e]>0) + { + if(theEdge->index==(size_t)theRight->edge[e]) + break; + } + else + { + if(theEdge->index==(size_t)(-theRight->edge[e])) + break; + } + } + Vertex *theStart=theObjectList[target]->vertex(theEdge->start); + Vertex *theEnd=theObjectList[target]->vertex(theEdge->end); + deleteEdgeH(target,theEdge->index); + while(theStart->adjacentEdge.size()==1) + { + size_t next=0; + if(theStart->index==theObjectList[target]->edge(theStart->adjacentEdge[0])->end) + { + next=theObjectList[target]->edge(theStart->adjacentEdge[0])->start; + } + else + { + next=theObjectList[target]->edge(theStart->adjacentEdge[0])->end; + } + deleteEdgeH(target,theStart->adjacentEdge[0]); + theStart=theObjectList[target]->vertex(next); + } + + while(theEnd->adjacentEdge.size()==1) + { + size_t next=0; + if(theEnd->index==theObjectList[target]->edge(theEnd->adjacentEdge[0])->end) + { + next=theObjectList[target]->edge(theEnd->adjacentEdge[0])->start; + } + else + { + next=theObjectList[target]->edge(theEnd->adjacentEdge[0])->end; + } + deleteEdgeH(target,theEnd->adjacentEdge[0]); + theEnd=theObjectList[target]->vertex(next); + } + //¿ªÊ¼Éú³ÉеÄÃæÁË; + size_t sEdgeR=0; + size_t eEdgeR=0; + size_t edgeCount=theRight->edge.size(); + for(size_t e=0;eedge[e]>0) + { + if(theObjectList[target]->edge(theRight->edge[e])) + { + if(theObjectList[target]->edge(theRight->edge[e])->start==theEnd->index) + { + sEdgeR=e; + } + if(theObjectList[target]->edge(theRight->edge[e])->end==theStart->index) + { + eEdgeR=e; + } + } + } + else + { + if(theObjectList[target]->edge(-theRight->edge[e])) + { + if(theObjectList[target]->edge(-theRight->edge[e])->end==theEnd->index) + { + sEdgeR=e; + } + if(theObjectList[target]->edge(-theRight->edge[e])->start==theStart->index) + { + eEdgeR=e; + } + } + } + } + + size_t sEdgeL=0; + size_t eEdgeL=0; + edgeCount=theLeft->edge.size(); + for(size_t e=0;eedge[e]>0) + { + if(theObjectList[target]->edge(theLeft->edge[e])) + { + if(theObjectList[target]->edge(theLeft->edge[e])->start==theStart->index) + { + sEdgeL=e; + } + if(theObjectList[target]->edge(theLeft->edge[e])->end==theEnd->index) + { + eEdgeL=e; + } + } + } + else + { + if(theObjectList[target]->edge(-theLeft->edge[e])) + { + if(theObjectList[target]->edge(-theLeft->edge[e])->end==theStart->index) + { + sEdgeL=e; + } + if(theObjectList[target]->edge(-theLeft->edge[e])->start==theEnd->index) + { + eEdgeL=e; + } + } + } + } + //ÕýʽÉú³ÉÁ½¸öеÄÃæ + size_t b=sEdgeR; + size_t count=0; + size_t *tempEdge=new size_t[theRight->edge.size()+theLeft->edge.size()]; + while(b!=eEdgeR) + { + tempEdge[count]=theRight->edge[b]>0?theRight->edge[b]:-theRight->edge[b]; + ++count; + ++b; + b=b%theRight->edge.size(); + } + tempEdge[count]=theRight->edge[eEdgeR]>0?theRight->edge[eEdgeR]:-theRight->edge[eEdgeR]; + ++count; + b=sEdgeL; + while(b!=eEdgeL) + { + tempEdge[count]=theLeft->edge[b]>0?theLeft->edge[b]:-theLeft->edge[b]; + ++count; + ++b; + b=b%theLeft->edge.size(); + } + //ɾ³ýÔ­À´µÄÁ½¸öÃæ + tempEdge[count]=theLeft->edge[eEdgeL]>0?theLeft->edge[eEdgeL]:-theLeft->edge[eEdgeL]; + ++count; + theObjectList[target]->addFace(tempEdge,count); + theObjectList[target]->objectFaceRemove(theLeft->index); + theObjectList[target]->objectFaceRemove(theRight->index); + delete tempEdge; + } + }} +} + +void Scene::clearIsInCache() +{ + size_t cacheSize=isInCache.size(); + for(size_t i=0;iisIn=false; + } + } + isInCache.clear(); +} + +void Scene::targetWeldVertex(size_t vertexA,size_t vertexB) +{ + size_t mode=0; + Vertex *theOriginal=theObjectList[target]->vertex(vertexA); + Vertex *theTarget=theObjectList[target]->vertex(vertexB); + size_t edgeCount=theOriginal->adjacentEdge.size(); + std::vector OAdjEdge; + OAdjEdge.reserve(10); + std::vector OEnd; + OEnd.reserve(10); + //Ê×ÏÈÒª±éÀúµÚÒ»¸öµãµÄÁڽӱߣ¬Òª¼ì²âÕâÁ½¸öµãµÄÁڽӱߣ¬ÅжÏÊÇ·ñÊDZßÔµ±ß£¬ÊÇ·ñÓй²µãµÈ + size_t e=0; + bool isEdge=false; + for(e=0;eedge(theOriginal->adjacentEdge[e]); + OAdjEdge.push_back(theEdge); + if(!theEdge->left || !theEdge->right) + { + isEdge=true; + } + if(theEdge->left) + { + theObjectList[target]->face(theEdge->left)->isIn=true; + isInCache.push_back(theObjectList[target]->face(theEdge->left)); + } + if(theEdge->right) + { + theObjectList[target]->face(theEdge->right)->isIn=true; + isInCache.push_back(theObjectList[target]->face(theEdge->right)); + } + if(theEdge->start==theOriginal->index) + { + if(theEdge->end==theTarget->index) + { + //Õâ˵Ã÷º¸½ÓµÄÁ½¸öµãÔÚͬһ¸ö±ß + mode=1; + break; + } + Vertex *theVertex=theObjectList[target]->vertex(theEdge->end); + OEnd.push_back(theVertex); + theVertex->isIn=true; + isInCache.push_back(theVertex); + } + else + { + if(theEdge->start==theTarget->index) + { + //˵Ã÷º¸½ÓµÄÁ½¸öµãÔÚͬһ¸ö±ßÉÏ + mode=1; + break; + } + Vertex *theVertex=theObjectList[target]->vertex(theEdge->start); + OEnd.push_back(theVertex); + theVertex->isIn=true; + isInCache.push_back(theVertex); + } + } + + if(mode==1) + { + clearIsInCache(); + Edge *theEdge=theObjectList[target]->edge(theOriginal->adjacentEdge[e]); + Vertex *theStart=NULL; + Vertex *theEnd=NULL; + size_t eIndex=theEdge->index; + size_t right=theEdge->right; + size_t left=theEdge->left; + if(theEdge->start==vertexB) + { + theStart=theObjectList[target]->vertex(theEdge->start); + theEnd=theObjectList[target]->vertex(theEdge->end); + } + else + { + theStart=theObjectList[target]->vertex(theEdge->end); + theEnd=theObjectList[target]->vertex(theEdge->start); + } + deleteEdgeH(target,theEdge->index); + size_t edgeCount=theEnd->adjacentEdge.size(); + for(size_t e=0;evertexAdjacentPush(theStart->index,theEnd->adjacentEdge[e]); + //¸üÐÂÕâЩ±ßµÄ¶Ëµã + if(theObjectList[target]->edge(theEnd->adjacentEdge[e])->end==theEnd->index) + { + theObjectList[target]->edgeEndChange(theEnd->adjacentEdge[e],theStart->index); + } + else + { + theObjectList[target]->edgeStartChange(theEnd->adjacentEdge[e],theStart->index); + } + } + theObjectList[target]->objectVertexRemove(theEnd->index); + if(left>0) + { + Face *theFace=theObjectList[target]->face(left); + size_t edgeCount=theFace->edge.size(); + for(size_t i=0;iedge[i]==-((int)eIndex)) + { + theObjectList[target]->faceEdgeRemove(theFace->index,i); + break; + } + + } + } + + if(right>0) + { + + Face *theFace=theObjectList[target]->face(right); + size_t edgeCount=theFace->edge.size(); + for(size_t i=0;iedge[i]==(int)eIndex) + { + theObjectList[target]->faceEdgeRemove(theFace->index,i); + break; + } + } + } + clearDualEdge(target,theTarget->index); + return; + } + + //ÏÖÔÚÊ×ÏȼìÑéµÚÒ»¸öµãÊÇ·ñÊDZßÔµÉ쵀 + if(isEdge) + { + isEdge=false; + size_t edgeCount=theTarget->adjacentEdge.size(); + Edge *edgeS[2]={NULL}; + Edge *edgeE[2]={NULL}; + size_t adjEdgeNum=0; + for(size_t e=0;eedge(theTarget->adjacentEdge[e])->left || !theObjectList[target]->edge(theTarget->adjacentEdge[e])->right) + { + if(theObjectList[target]->edge(theTarget->adjacentEdge[e])->left) + { + if(theObjectList[target]->face(theObjectList[target]->edge(theTarget->adjacentEdge[e])->left)->isIn) + { + //˵Ã÷¹²Ãæ + return; + } + } + if(theObjectList[target]->edge(theTarget->adjacentEdge[e])->right) + { + if(theObjectList[target]->face(theObjectList[target]->edge(theTarget->adjacentEdge[e])->right)->isIn) + { + //˵Ã÷¹²Ãæ + return; + } + } + //Èç¹ûÊDZßÔµµÄ±ß + isEdge=true; + if(theObjectList[target]->edge(theTarget->adjacentEdge[e])->end==theTarget->index) + { + //ÅжÏÊDz»ÊÇÒ»¼¶ÁÚ½Ó + if(theObjectList[target]->vertex(theObjectList[target]->edge(theTarget->adjacentEdge[e])->start)->isIn) + { + //¼Ç¼ÁÚ½Ó±ß + edgeE[adjEdgeNum]=theObjectList[target]->edge(theTarget->adjacentEdge[e]); + size_t OEndCount=OEnd.size(); + for(size_t h=0;hindex==theObjectList[target]->edge(theTarget->adjacentEdge[e])->start) + { + edgeS[adjEdgeNum]=OAdjEdge[h]; + break; + } + } + ++adjEdgeNum; + if(adjEdgeNum==2) + { + break; + } + } + } + else + { + if(theObjectList[target]->vertex(theObjectList[target]->edge(theTarget->adjacentEdge[e])->end)->isIn) + { + edgeE[adjEdgeNum]=theObjectList[target]->edge(theTarget->adjacentEdge[e]); + size_t OEndCount=OEnd.size(); + for(size_t h=0;hindex==theObjectList[target]->edge(theTarget->adjacentEdge[e])->end) + { + edgeS[adjEdgeNum]=OAdjEdge[h]; + break; + } + } + ++adjEdgeNum; + if(adjEdgeNum==2) + { + break; + } + } + } + } + } + clearIsInCache(); + if(isEdge) + { + if(adjEdgeNum==0) + { + //Ö±½Óº¸½Ó + size_t edgeCount=theOriginal->adjacentEdge.size(); + for(size_t h=0;hedge(theOriginal->adjacentEdge[h]); + theObjectList[target]->vertexAdjacentPush(theTarget->index,theEdge->index); + if(theEdge->start==theOriginal->index) + { + theObjectList[target]->edgeStartChange(theEdge->index,theTarget->index); + } + else + { + theObjectList[target]->edgeEndChange(theEdge->index,theTarget->index); + } + } + theObjectList[target]->objectVertexRemove(theOriginal->index); + } + else + if(adjEdgeNum>0) + { + size_t wMode[2]={0}; + for(size_t w=0;wend==edgeE[w]->start) + { + if(edgeS[w]->right && edgeE[w]->right) + { + wMode[w]=1; + } + else + if(edgeS[w]->left && edgeE[w]->left) + { + wMode[w]=2; + } + else + { + + return; + } + } + else + if(edgeS[w]->end==edgeE[w]->end) + { + if(edgeS[w]->right && edgeE[w]->left) + { + wMode[w]=3; + } + else + if(edgeS[w]->left && edgeE[w]->right) + { + wMode[w]=4; + } + else + { + return; + } + } + else + if(edgeS[w]->start==edgeE[w]->start) + { + if(edgeS[w]->left && edgeE[w]->right) + { + wMode[w]=5; + } + else + if(edgeS[w]->right && edgeE[w]->left) + { + wMode[w]=6; + } + else + { + return; + } + } + else + if(edgeS[w]->start==edgeE[w]->end) + { + if(edgeS[w]->left && edgeE[w]->left) + { + wMode[w]=7; + } + else + if(edgeS[w]->right && edgeE[w]->right) + { + wMode[w]=8; + } + else + { + return; + } + } + } + size_t theOriginalIndex=theOriginal->index; + for(size_t w=0;wface(edgeS[w]->right); + size_t edgeCount=theF->edge.size(); + for(size_t h=0;hedge[h]==(int)(edgeS[w]->index)) + { + theObjectList[target]->faceEdgeChange(theF->index,h,-(int)(edgeE[w]->index)); + theObjectList[target]->edgeLeftChange(edgeE[w]->index,theF->index); + deleteEdgeH(target,edgeS[w]->index); + break; + } + } + } + else + if(wMode[w]==2) + { + Face *theF=theObjectList[target]->face(edgeS[w]->left); + size_t edgeCount=theF->edge.size(); + for(size_t h=0;hedge[h]==-((int)edgeS[w]->index)) + { + theObjectList[target]->faceEdgeChange(theF->index,h,edgeE[w]->index); + theObjectList[target]->edgeRightChange(edgeE[w]->index,theF->index); + deleteEdgeH(target,edgeS[w]->index); + break; + } + } + } + else + if(wMode[w]==3) + { + Face *theF=theObjectList[target]->face(edgeS[w]->right); + size_t edgeCount=theF->edge.size(); + for(size_t h=0;hedge[h]==(int)edgeS[w]->index) + { + theObjectList[target]->faceEdgeChange(theF->index,h,edgeE[w]->index); + theObjectList[target]->edgeRightChange(edgeE[w]->index,theF->index); + deleteEdgeH(target,edgeS[w]->index); + break; + } + } + } + else + if(wMode[w]==4) + { + Face *theF=theObjectList[target]->face(edgeS[w]->left); + size_t edgeCount=theF->edge.size(); + for(size_t h=0;hedge[h]==-((int)edgeS[w]->index)) + { + theObjectList[target]->faceEdgeChange(theF->index,h,-((int)edgeE[w]->index)); + theObjectList[target]->edgeLeftChange(edgeE[w]->index,theF->index); + deleteEdgeH(target,edgeS[w]->index); + break; + } + } + } + else + if(wMode[w]==5) + { + Face *theF=theObjectList[target]->face(edgeS[w]->left); + size_t edgeCount=theF->edge.size(); + for(size_t h=0;hedge[h]==-((int)edgeS[w]->index)) + { + theObjectList[target]->faceEdgeChange(theF->index,h,-(int)(edgeE[w]->index)); + theObjectList[target]->edgeLeftChange(edgeE[w]->index,theF->index); + deleteEdgeH(target,edgeS[w]->index); + break; + } + } + } + else + if(wMode[w]==6) + { + Face *theF=theObjectList[target]->face(edgeS[w]->right); + size_t edgeCount=theF->edge.size(); + for(size_t h=0;hedge[h]==(int)(edgeS[w]->index)) + { + theObjectList[target]->faceEdgeChange(theF->index,h,edgeE[w]->index); + theObjectList[target]->edgeRightChange(edgeE[w]->index,theF->index); + deleteEdgeH(target,edgeS[w]->index); + break; + } + } + } + else + if(wMode[w]==7) + { + Face *theF=theObjectList[target]->face(edgeS[w]->left); + size_t edgeCount=theF->edge.size(); + for(size_t h=0;hedge[h]==-((int)edgeS[w]->index)) + { + theObjectList[target]->faceEdgeChange(theF->index,h,edgeE[w]->index); + theObjectList[target]->edgeRightChange(edgeE[w]->index,theF->index); + deleteEdgeH(target,edgeS[w]->index); + break; + } + } + } + else + if(wMode[w]==8) + { + Face *theF=theObjectList[target]->face(edgeS[w]->right); + size_t edgeCount=theF->edge.size(); + for(size_t h=0;hedge[h]==(int)edgeS[w]->index) + { + theObjectList[target]->faceEdgeChange(theF->index,h,-((int)edgeE[w]->index)); + theObjectList[target]->edgeLeftChange(edgeE[w]->index,theF->index); + deleteEdgeH(target,edgeS[w]->index); + break; + } + } + } + } + if(theObjectList[target]->vertex(theOriginalIndex)) + { + theOriginal=theObjectList[target]->vertex(theOriginalIndex); + size_t edgeCount=theOriginal->adjacentEdge.size(); + for(size_t h=0;hvertexAdjacentPush(theTarget->index,theOriginal->adjacentEdge[h]); + if(theObjectList[target]->edge(theOriginal->adjacentEdge[h])->end==theOriginal->index) + { + theObjectList[target]->edgeEndChange(theOriginal->adjacentEdge[h],theTarget->index); + } + else + { + theObjectList[target]->edgeStartChange(theOriginal->adjacentEdge[h],theTarget->index); + } + } + theObjectList[target]->objectVertexRemove(theOriginal->index); + } + } + } + else + { + return; + } + } + else + { + return; + } +} + +void Scene::extrudeFaceGroup(float x,float y,float z) +{ + if(mode==SelectionMode::Face && target) + { + //Ê×ÏÈҪͳ¼Æ×é + std::vector newFaceSelected; + size_t faceCount=selection.size(); + newFaceSelected.reserve(faceCount); + for(size_t i=0;iface(selection[i]) || theObjectList[target]->face(selection[i])->isIn) + { + continue; + } + else + { + std::vector theGroup; + theGroup.reserve(100); + std::deque toBeHandled; + Face *theFace=theObjectList[target]->face(selection[i]); + toBeHandled.push_back(theFace); + while(!toBeHandled.empty()) + { + if(!toBeHandled[0]->isIn) + { + toBeHandled[0]->isIn=true; + isInCache.push_back(toBeHandled[0]); + theGroup.push_back(toBeHandled[0]); + size_t edgeCount=toBeHandled[0]->edge.size(); + for(size_t h=0;hedge[h]>0) + { + Face *theLeft=theObjectList[target]->face(theObjectList[target]->edge(toBeHandled[0]->edge[h])->left); + if(theLeft && theLeft->isSelected) + { + toBeHandled.push_back(theLeft); + } + } + else + { + Face *theRight=theObjectList[target]->face(theObjectList[target]->edge(-toBeHandled[0]->edge[h])->right); + if(theRight && theRight->isSelected) + { + toBeHandled.push_back(theRight); + } + } + } + } + toBeHandled.pop_front(); + } + //ÕâÀï¾ÍÒѾ­µÃµ½Ò»¸ögroupÁË + //Ê×ÏȾÍÊǽ«group¸´ÖƳÉÒ»¸öÐ嵀 + size_t groupSize=theGroup.size(); + std::vector eEdgeList; + eEdgeList.reserve(groupSize*5); + for(size_t e=0;eedge.size(); + size_t *tempEdge=new size_t[edgeCount]; + for(size_t h=0;hedge[h]>0) + { + theEdge=theObjectList[target]->edge(theFace->edge[h]); + if(!theEdge->isIn) + { + Vertex *theStart=theObjectList[target]->vertex(theEdge->start); + Vertex *theEnd=theObjectList[target]->vertex(theEdge->end); + if(!theStart->isIn) + { + theStart->clone=theObjectList[target]->addVertex(theStart->position.x+x,theStart->position.y+y,theStart->position.z+z); + theStart->isIn=true; + isInCache.push_back(theStart); + } + if(!theEnd->isIn) + { + theEnd->clone=theObjectList[target]->addVertex(theEnd->position.x+x,theEnd->position.y+y,theEnd->position.z+z); + theEnd->isIn=true; + isInCache.push_back(theEnd); + } + theEdge->clone=theObjectList[target]->addEdge(theStart->clone,theEnd->clone); + theEdge->isIn=true; + isInCache.push_back(theEdge); + if(theEdge->left==0 ||(theEdge->left>0 && !theObjectList[target]->face(theEdge->left)->isIn)) + { + //˵Ã÷ÊDZßÉ쵀 + eEdgeList.push_back(theEdge->index); + } + } + tempEdge[h]=theEdge->clone; + } + else + { + theEdge=theObjectList[target]->edge(-theFace->edge[h]); + if(!theEdge->isIn) + { + Vertex *theStart=theObjectList[target]->vertex(theEdge->start); + Vertex *theEnd=theObjectList[target]->vertex(theEdge->end); + if(!theStart->isIn) + { + theStart->clone=theObjectList[target]->addVertex(theStart->position.x+x,theStart->position.y+y,theStart->position.z+z); + theStart->isIn=true; + isInCache.push_back(theStart); + } + if(!theEnd->isIn) + { + theEnd->clone=theObjectList[target]->addVertex(theEnd->position.x+x,theEnd->position.y+y,theEnd->position.z+z); + theEnd->isIn=true; + isInCache.push_back(theEnd); + } + theEdge->clone=theObjectList[target]->addEdge(theStart->clone,theEnd->clone); + theEdge->isIn=true; + isInCache.push_back(theEdge); + if(theEdge->right==0 ||(theEdge->right>0 && !theObjectList[target]->face(theEdge->right)->isIn)) + { + //˵Ã÷ÊDZßÉ쵀 + eEdgeList.push_back(-((int)theEdge->index)); + } + } + tempEdge[h]=theEdge->clone; + } + } + //theObjectList[target]->addFace(tempEdge,edgeCount); + newFaceSelected.push_back(theObjectList[target]->addFace(tempEdge,edgeCount)); + delete tempEdge; + } + + //Éú³É²àÃæµÄÃæ + size_t eEdgeListSize=eEdgeList.size(); + for(size_t e=0;e0) + { + Edge *theEdge=theObjectList[target]->edge(eEdgeList[e]); + Vertex *theStart=theObjectList[target]->vertex(theEdge->start); + Vertex *theEnd=theObjectList[target]->vertex(theEdge->end); + size_t tempEdge[4]={0}; + if(!theObjectList[target]->vertex(theStart->clone)->isIn) + { + theObjectList[target]->vertex(theStart->clone)->clone=theObjectList[target]->addEdge(theStart->index,theStart->clone); + theObjectList[target]->vertex(theStart->clone)->isIn=true; + isInCache.push_back(theObjectList[target]->vertex(theStart->clone)); + } + tempEdge[3]=theObjectList[target]->vertex(theStart->clone)->clone; + if(!theObjectList[target]->vertex(theEnd->clone)->isIn) + { + theObjectList[target]->vertex(theEnd->clone)->clone=theObjectList[target]->addEdge(theEnd->index,theEnd->clone); + theObjectList[target]->vertex(theEnd->clone)->isIn=true; + isInCache.push_back(theObjectList[target]->vertex(theEnd->clone)); + } + tempEdge[1]=theObjectList[target]->vertex(theEnd->clone)->clone; + tempEdge[0]=theEdge->index; + tempEdge[2]=theEdge->clone; + theObjectList[target]->addFace(tempEdge,4); + } + else + { + Edge *theEdge=theObjectList[target]->edge(-eEdgeList[e]); + Vertex *theStart=theObjectList[target]->vertex(theEdge->start); + Vertex *theEnd=theObjectList[target]->vertex(theEdge->end); + size_t tempEdge[4]={0}; + if(!theObjectList[target]->vertex(theStart->clone)->isIn) + { + theObjectList[target]->vertex(theStart->clone)->clone=theObjectList[target]->addEdge(theStart->index,theStart->clone); + theObjectList[target]->vertex(theStart->clone)->isIn=true; + isInCache.push_back(theObjectList[target]->vertex(theStart->clone)); + } + tempEdge[1]=theObjectList[target]->vertex(theStart->clone)->clone; + if(!theObjectList[target]->vertex(theEnd->clone)->isIn) + { + theObjectList[target]->vertex(theEnd->clone)->clone=theObjectList[target]->addEdge(theEnd->index,theEnd->clone); + theObjectList[target]->vertex(theEnd->clone)->isIn=true; + isInCache.push_back(theObjectList[target]->vertex(theEnd->clone)); + } + tempEdge[3]=theObjectList[target]->vertex(theEnd->clone)->clone; + tempEdge[0]=theEdge->index; + tempEdge[2]=theEdge->clone; + theObjectList[target]->addFace(tempEdge,4); + } + } + clearIsInCache(); + //ɾ³ýÔ­À´µÄÃæ + for(size_t e=0;eedge.size(); + for(size_t h=0;hedge[h]>0) + { + if(theObjectList[target]->edge(theFace->edge[h])->right==theFace->index) + { + theObjectList[target]->edgeRightChange(theFace->edge[h],0); + if(!theObjectList[target]->edge(theFace->edge[h])->left) + { + deleteEdgeH(target,theFace->edge[h]); + } + } + } + else + { + if(theObjectList[target]->edge(-theFace->edge[h])->left==theFace->index) + { + theObjectList[target]->edgeLeftChange(-theFace->edge[h],0); + if(!theObjectList[target]->edge(-theFace->edge[h])->right) + { + deleteEdgeH(target,-theFace->edge[h]); + } + } + } + } + theObjectList[target]->objectFaceRemove(theFace->index); + } + theGroup.clear(); + + } + } + + clearSelection(); + + for(size_t i=0;iface(newFaceSelected[i]); + if(theFace) + { + selectionPush(theFace); + } + } + } +} + +void Scene::sceneObjectAdd(char *name) + { + historyManager->record(new Log_SceneObjectAdd(theObjectList.add(new Object(name)))); + } +void Scene::sceneObjectAdd(Object *newObject) + { + + historyManager->record(new Log_SceneObjectAdd(theObjectList.add(newObject))); + } +void Scene::detach(Object *newObject) + { + if(mode==SelectionMode::Face && target) + { + sceneObjectAdd(newObject); + + //Ê×ÏÈҪͳ¼Æ×é + size_t faceCount=selection.size(); + for(size_t e=0;eface(selection[e]); + size_t edgeCount=theFace->edge.size(); + size_t *tempEdge=new size_t[edgeCount]; + for(size_t h=0;hedge[h]>0) + { + theEdge=theObjectList[target]->edge(theFace->edge[h]); + } + else + { + theEdge=theObjectList[target]->edge(-theFace->edge[h]); + } + if(!theEdge->isIn) + { + Vertex *theStart=theObjectList[target]->vertex(theEdge->start); + Vertex *theEnd=theObjectList[target]->vertex(theEdge->end); + if(!theStart->isIn) + { + theStart->clone=newObject->addVertex(theStart->position); + theStart->isIn=true; + isInCache.push_back(theStart); + } + if(!theEnd->isIn) + { + theEnd->clone=newObject->addVertex(theEnd->position.x,theEnd->position.y,theEnd->position.z); + theEnd->isIn=true; + isInCache.push_back(theEnd); + } + theEdge->clone=newObject->addEdge(theStart->clone,theEnd->clone); + theEdge->isIn=true; + isInCache.push_back(theEdge); + } + tempEdge[h]=theEdge->clone; + } + + newObject->addFace(tempEdge,edgeCount); + delete tempEdge; + } + clearIsInCache(); +for(size_t e=0;eface(selection[e]); +size_t edgeCount=theFace->edge.size(); + for(size_t h=0;hedge[h]>0) + { + theObjectList[target]->edgeRightChange(theFace->edge[h],0); + if(!theObjectList[target]->edge(theFace->edge[h])->left) + { + deleteEdgeH(target,theFace->edge[h]); + } + } + else + { + theObjectList[target]->edgeLeftChange(-theFace->edge[h],0); + if(!theObjectList[target]->edge(-theFace->edge[h])->right) + { + deleteEdgeH(target,-theFace->edge[h]); + } + } + } + theObjectList[target]->objectFaceRemove(theFace->index); + //printf("sf"); + } + +newObject->center=theObjectList[target]->center; +newObject->rotation=theObjectList[target]->rotation; +newObject->position=theObjectList[target]->position; +newObject->scale=theObjectList[target]->scale; + + } + + + } + +void Scene::attach(size_t original,size_t toBeAttached) + { + if(original && toBeAttached) + { + Vector rotation=theObjectList[toBeAttached]->rotation; + Vector position=theObjectList[toBeAttached]->position; + Vector scale=theObjectList[toBeAttached]->scale; + Vector center=theObjectList[toBeAttached]->center; + + Vector originalRotation=theObjectList[original]->rotation; + Vector originalPosition=theObjectList[original]->position; + Vector originalScale=theObjectList[original]->scale; + Vector originalCenter=theObjectList[original]->center; + + Matrix transform; + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + + + + glTranslatef(-originalCenter.x,-originalCenter.y,-originalCenter.z); +glScalef(originalScale.x,originalScale.y,originalScale.z); +glRotatef(originalRotation.w,originalRotation.x,originalRotation.y,originalRotation.z); +glTranslatef(originalCenter.x,originalCenter.y,originalCenter.z); +glTranslatef(originalPosition.x,originalPosition.y,originalPosition.z); + + + glTranslatef(position.x,position.y,position.z); + glTranslatef(center.x,center.y,center.z); + glRotatef(rotation.w,rotation.x,rotation.y,rotation.z); + glScalef(scale.x,scale.y,scale.z); + glTranslatef(-center.x,-center.y,-center.z); + glGetFloatv(GL_MODELVIEW_MATRIX,(GLfloat*)(&transform.m)); + glPopMatrix(); + + size_t vertexCount=theObjectList[toBeAttached]->vertexCount(); + for(size_t i=0;ivertex(i); + if(theVertex) + { + Vector theNV(transform*(theVertex->position)); + theVertex->clone=theObjectList[original]->addVertex(theNV,theVertex->normal); + } + } + + size_t edgeCount=theObjectList[toBeAttached]->edgeCount(); + for(size_t e=0;eedge(e); + if(e) + { + theEdge->clone=theObjectList[original]->addEdge(theObjectList[toBeAttached]->vertex(theEdge->start)->clone,theObjectList[toBeAttached]->vertex(theEdge->end)->clone); + } + } + + size_t faceCount=theObjectList[toBeAttached]->faceCount(); + for(size_t f=1;fface(f); + if(theFace==NULL) continue; + size_t edgeCount=theFace->edge.size(); + size_t *tempEdge=new size_t[edgeCount]; + for(size_t e=0;eedge[e]>0) + { + tempEdge[e]=theObjectList[toBeAttached]->edge(theFace->edge[e])->clone; + } + else + { + tempEdge[e]=theObjectList[toBeAttached]->edge(-theFace->edge[e])->clone; + } + } + theObjectList[original]->addFace(tempEdge,edgeCount); + delete tempEdge; + } + //ɾ³ýÄ£ÐÍ»¹Ã»ÓÐÄØ; + sceneObjectRemove(toBeAttached); + } + } + +void Scene::clearSelection() + { + size_t selectionSize=selection.size(); + if(mode==SelectionMode::Vertex) + { + for(size_t i=0;ivertex(selection[i])) + { + theObjectList[target]->vertex(selection[i])->isSelected=false; + } + } + } + else + if(mode==SelectionMode::Edge) + { + for(size_t i=0;iedge(selection[i])) + { + theObjectList[target]->edge(selection[i])->isSelected=false; + } + } + } + else + if(mode==SelectionMode::Face) + { + for(size_t i=0;iface(selection[i])) + { + theObjectList[target]->face(selection[i])->isSelected=false; + } + } + } + else + if(mode==SelectionMode::Object) + { + for(size_t i=0;iisSelected=false; + } + } + } + selection.clear(); + }; + +Scene::~Scene(void) +{ + delete theAxisCursor; +} diff --git a/Scene.h b/Scene.h new file mode 100755 index 0000000..5e0b9ff --- /dev/null +++ b/Scene.h @@ -0,0 +1,3882 @@ +#pragma once + #pragma warning(disable : 4996) + +#include "Enum.h" +#include "IndexArray.h" +#include "Object.h" +#include "Log_SceneObjectAdd.h" +#include "Log_SceneObjectRemove.h" +#include "AxisCursor.h" +#include +#include "Matrix.h" +#include "Quaternion.h" +//#include +DECLARE_ENUM(SelectionMode) + Object=234, + Face, + Edge, + Vertex, + Split, + Weld +END_ENUM() + +DECLARE_ENUM(AxisMode) + axisX=678, + axisY, + axisZ +END_ENUM() + +struct SelectionResult +{ + GLuint size; + GLuint zMini; + GLuint zMax; + GLuint id; +}; + +struct ColorID +{ + unsigned char r; + unsigned char g; + unsigned char b; + unsigned char a; +}; + +struct SceneInfo +{ + char ID[4]; + int version; + size_t objectCount; +}; + +class Scene +{ +private: + std::vector isInCache; + AxisCursor *theAxisCursor; + AxisCursorMode currentACMode; + IndexArray theObjectList; + std::vector selection; + size_t target; + SelectionMode mode; + +public: + std::string fileName; + size_t splitVertexID; + bool isSplitMode; + //size_t splitVX; + //size_t splitVY; + + Scene(void); + size_t newCube(float x,float y,float z,float lx,float ly,float lz,size_t sx,size_t sy,size_t sz); + void newCube(Object *theCube,float x,float y,float z,float lx,float ly,float lz,size_t sx,size_t sy,size_t sz); + size_t newCylinder(float x,float y,float z,float r,float h,AxisMode::__Enum axis,size_t sa,size_t sr,size_t sh); + void newCylinder(Object *theCylinder,float x,float y,float z,float r,float h,AxisMode::__Enum axis,size_t sa,size_t sr,size_t sh); + size_t newSphere(float x,float y,float z,float r,AxisMode::__Enum axis,size_t sa,size_t sr); + void newSphere(Object *theSphere,float x,float y,float z,float r,AxisMode::__Enum axis,size_t sa,size_t sr); + void moveVertex(float x,float y,float z); + void moveEdge(float x,float y,float z); + void moveFace(float x,float y,float z); + size_t newPlane(float x,float y,float z,float length,float width,AxisMode::__Enum axis,size_t sl,size_t sw); + void newPlane(Object *thePlane,float x,float y,float z,float length,float width,AxisMode::__Enum axis,size_t sl,size_t sw); + //×¢Ò⣬Çå³ýÎÞÓõĶ˵㵫ûÓбߵÄ×óÓÒÃæ!!!!!!!!!!! + void deleteEdgeH(size_t t,size_t edgeID); + void deleteVertex(); + void deleteFace(); + void extrudeEdge(float x,float y,float z); + size_t insertVertex(int edgeID,float pos); + void split(int startV,int endV); + void removeEdge(); + void clearIsInCache(); + void targetWeldVertex(size_t vertexA,size_t vertexB); + void extrudeFaceGroup(float x,float y,float z); + void sceneObjectAdd(char *name); + void sceneObjectAdd(Object *newObject); + void detach(Object *newObject); + void attach(size_t original,size_t toBeAttached); + void clearSelection(); + void initialize(); + void changeAxisCursorMode(AxisCursorMode::__Enum newMode); + void clearDualEdge(size_t tt,size_t vertexID); + + void mirrorClone() + { + if(mode==SelectionMode::Object) + { + for(size_t i=0;iisMirror && theOriginal->theMirrorMode!=MirrorMode::Nothing) + { + Matrix transform; + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + if(theOriginal->theMirrorMode==MirrorMode::MirrorXY) + { + glScalef(1,1,-1); + } + else if(theOriginal->theMirrorMode==MirrorMode::MirrorYZ) + { + glScalef(-1,1,1); + } + else if(theOriginal->theMirrorMode==MirrorMode::MirrorXZ) + { + glScalef(1,-1,1); + } + glGetFloatv(GL_MODELVIEW_MATRIX,(GLfloat*)(&transform.m)); + glPopMatrix(); + Object *newObject=new Object("Cloned"); + for(size_t e=1;evertexCount();++e) + { + Vertex *theVertex=theOriginal->vertex(e); + if(theVertex) + { + Vector theNV=transform*(theVertex->position); + theVertex->clone=newObject->addVertex(theNV); + } + } + for(size_t e=1;eedgeCount();++e) + { + Edge *theEdge=theOriginal->edge(e); + if(theEdge) + { + theEdge->clone=newObject->addEdge(theOriginal->vertex(theEdge->start)->clone,theOriginal->vertex(theEdge->end)->clone); + } + } + for(size_t e=1;efaceCount();++e) + { + Face *theFace=theOriginal->face(e); + if(theFace) + { + size_t *tempEdgeSet=new size_t[theFace->edge.size()]; + for(size_t h=0;hedge.size();++h) + { + tempEdgeSet[h]=theFace->edge[h]>0?theFace->edge[h]:-theFace->edge[h]; + } + newObject->addFace(tempEdgeSet,theFace->edge.size()); + delete tempEdgeSet; + } + } + sceneObjectAdd(newObject); + } + } + } + } + } + + void clone() + { + if(mode==SelectionMode::Object) + { + for(size_t i=0;ivertexCount();++e) + { + Vertex *theVertex=theOriginal->vertex(e); + if(theVertex) + { + theVertex->clone=newObject->addVertex(theVertex->position); + } + } + + for(size_t e=1;eedgeCount();++e) + { + Edge *theEdge=theOriginal->edge(e); + if(theEdge) + { + theEdge->clone=newObject->addEdge(theOriginal->vertex(theEdge->start)->clone,theOriginal->vertex(theEdge->end)->clone); + } + } + + for(size_t e=1;efaceCount();++e) + { + Face *theFace=theOriginal->face(e); + if(theFace) + { + size_t *tempEdgeSet=new size_t[theFace->edge.size()]; + for(size_t h=0;hedge.size();++h) + { + tempEdgeSet[h]=theFace->edge[h]>0?theFace->edge[h]:-theFace->edge[h]; + } + newObject->addFace(tempEdgeSet,theFace->edge.size()); + delete tempEdgeSet; + } + } + sceneObjectAdd(newObject); + } + } + } + } + + void getSceneInfo(size_t &objectCount,size_t &vertexCount,size_t &edgeCount,size_t &faceCount) + { + objectCount=theObjectList.size(); + for(size_t i=1;ivertexCount()-1; + edgeCount+=theObjectList[i]->edgeCount()-1; + faceCount+=theObjectList[i]->faceCount()-1; + } + } + --objectCount; + } + + void onMerge() + { + if(mode==SelectionMode::Object) + { + for(size_t i=1;i0) + { + detach(newObject); + } + clearSelection(); + } + + void onMirror(MirrorMode type,float x,float y,float z) + { + Vector mirrorPosition(x,y,z); + if(mode==SelectionMode::Object) + { + for(size_t i=0;imirror(type,mirrorPosition); + } + } + } + else if(target) + { + if(theObjectList[target]) + { + theObjectList[target]->mirror(type,mirrorPosition); + } + } + } + + void unMirror() + { + if(mode==SelectionMode::Object) + { + for(size_t i=0;iunMirror(); + } + } + } + else if(target) + { + if(theObjectList[target]) + { + theObjectList[target]->unMirror(); + } + } + } + + void setSelectionMaterial(float ambient[4],float diffuse[4],float specular[4],float emission[4],float shininess) + { + if(mode==SelectionMode::Object) + { + if(selection.size()==1) + { + if(theObjectList[selection[0]]) + { + theObjectList[selection[0]]->mat_ambient[0]=ambient[0]; + theObjectList[selection[0]]->mat_ambient[1]=ambient[1]; + theObjectList[selection[0]]->mat_ambient[2]=ambient[2]; + theObjectList[selection[0]]->mat_ambient[3]=ambient[3]; + theObjectList[selection[0]]->mat_diffuse[0]=diffuse[0]; + theObjectList[selection[0]]->mat_diffuse[1]=diffuse[1]; + theObjectList[selection[0]]->mat_diffuse[2]=diffuse[2]; + theObjectList[selection[0]]->mat_diffuse[3]=diffuse[3]; + theObjectList[selection[0]]->mat_specular[0]=specular[0]; + theObjectList[selection[0]]->mat_specular[1]=specular[1]; + theObjectList[selection[0]]->mat_specular[2]=specular[2]; + theObjectList[selection[0]]->mat_specular[3]=specular[3]; + theObjectList[selection[0]]->mat_emission[0]=emission[0]; + theObjectList[selection[0]]->mat_emission[1]=emission[1]; + theObjectList[selection[0]]->mat_emission[2]=emission[2]; + theObjectList[selection[0]]->mat_emission[3]=emission[3]; + theObjectList[selection[0]]->mat_shininess[0]=shininess; + theObjectList[selection[0]]->mat_shininess[1]=shininess; + theObjectList[selection[0]]->mat_shininess[2]=shininess; + theObjectList[selection[0]]->mat_shininess[3]=shininess; + } + } + } + else if(target>0 && theObjectList[target]) + { + theObjectList[target]->mat_ambient[0]=ambient[0]; + theObjectList[target]->mat_ambient[1]=ambient[1]; + theObjectList[target]->mat_ambient[2]=ambient[2]; + theObjectList[target]->mat_ambient[3]=ambient[3]; + theObjectList[target]->mat_diffuse[0]=diffuse[0]; + theObjectList[target]->mat_diffuse[1]=diffuse[1]; + theObjectList[target]->mat_diffuse[2]=diffuse[2]; + theObjectList[target]->mat_diffuse[3]=diffuse[3]; + theObjectList[target]->mat_specular[0]=specular[0]; + theObjectList[target]->mat_specular[1]=specular[1]; + theObjectList[target]->mat_specular[2]=specular[2]; + theObjectList[target]->mat_specular[3]=specular[3]; + theObjectList[target]->mat_emission[0]=emission[0]; + theObjectList[target]->mat_emission[1]=emission[1]; + theObjectList[target]->mat_emission[2]=emission[2]; + theObjectList[target]->mat_emission[3]=emission[3]; + theObjectList[target]->mat_shininess[0]=shininess; + theObjectList[target]->mat_shininess[1]=shininess; + theObjectList[target]->mat_shininess[2]=shininess; + theObjectList[target]->mat_shininess[3]=shininess; + } + + }; + + void getSelectionMaterial(float *ambient,float *diffuse,float *specular,float *emission,float *shininess) + { + if(mode==SelectionMode::Object) + { + if(selection.size()==1) + { + if(theObjectList[selection[0]]) + { + ambient[0]=theObjectList[selection[0]]->mat_ambient[0]; + ambient[1]=theObjectList[selection[0]]->mat_ambient[1]; + ambient[2]=theObjectList[selection[0]]->mat_ambient[2]; + ambient[3]=theObjectList[selection[0]]->mat_ambient[3]; + diffuse[0]=theObjectList[selection[0]]->mat_diffuse[0]; + diffuse[1]=theObjectList[selection[0]]->mat_diffuse[1]; + diffuse[2]=theObjectList[selection[0]]->mat_diffuse[2]; + diffuse[3]=theObjectList[selection[0]]->mat_diffuse[3]; + specular[0]=theObjectList[selection[0]]->mat_specular[0]; + specular[1]=theObjectList[selection[0]]->mat_specular[1]; + specular[2]=theObjectList[selection[0]]->mat_specular[2]; + specular[3]=theObjectList[selection[0]]->mat_specular[3]; + emission[0]=theObjectList[selection[0]]->mat_emission[0]; + emission[1]=theObjectList[selection[0]]->mat_emission[1]; + emission[2]=theObjectList[selection[0]]->mat_emission[2]; + emission[3]=theObjectList[selection[0]]->mat_emission[3]; + (*shininess)=*(theObjectList[selection[0]]->mat_shininess); + } + } + } + else if(target>0 && theObjectList[target]) + { + ambient[0]=theObjectList[target]->mat_ambient[0]; + ambient[1]=theObjectList[target]->mat_ambient[1]; + ambient[2]=theObjectList[target]->mat_ambient[2]; + ambient[3]=theObjectList[target]->mat_ambient[3]; + diffuse[0]=theObjectList[target]->mat_diffuse[0]; + diffuse[1]=theObjectList[target]->mat_diffuse[1]; + diffuse[2]=theObjectList[target]->mat_diffuse[2]; + diffuse[3]=theObjectList[target]->mat_diffuse[3]; + specular[0]=theObjectList[target]->mat_specular[0]; + specular[1]=theObjectList[target]->mat_specular[1]; + specular[2]=theObjectList[target]->mat_specular[2]; + specular[3]=theObjectList[target]->mat_specular[3]; + emission[0]=theObjectList[target]->mat_emission[0]; + emission[1]=theObjectList[target]->mat_emission[1]; + emission[2]=theObjectList[target]->mat_emission[2]; + emission[3]=theObjectList[target]->mat_emission[3]; + (*shininess)=*(theObjectList[target]->mat_shininess); + } + }; + + void updateNormal() + { + if(mode==SelectionMode::Object) + { + for(size_t i=0;iupdateAllNormal(); + } + } + } + else if(target>0 && theObjectList[target]) + { + theObjectList[target]->updateAllNormal(); + } + } + + void onDelete() + { + if(mode==SelectionMode::Object && target==0) + { + for(size_t i=0;i0) + { + if(mode==SelectionMode::Vertex) + { + for(size_t i=0;ivertex(vertexID)->adjacentEdge.size()==2) + { + Edge *edgeA=theObjectList[tt]->edge(theObjectList[tt]->vertex(vertexID)->adjacentEdge[0]); + Edge *edgeB=theObjectList[tt]->edge(theObjectList[tt]->vertex(vertexID)->adjacentEdge[1]); + if(edgeA->start==vertexID) + { + if(edgeB->end==vertexID) + {//printf("@@@@@@@@1@@@@@@@@@@@@@"); + size_t newEdge=theObjectList[tt]->addEdge(edgeB->start,edgeA->end); + if(edgeA->right>0 && edgeB->right>0 && edgeA->right==edgeB->right) + { + Face *theFace=theObjectList[tt]->face(edgeA->right); + size_t edgeCount=theFace->edge.size(); + for(int e=edgeCount-1;e>-1;--e) + { + if(theFace->edge[e]==(int)(edgeB->index)) + { + theObjectList[tt]->faceEdgeChange(theFace->index,e,newEdge); + } + else + if(theFace->edge[e]==(int)(edgeA->index)) + { + theObjectList[tt]->faceEdgeRemove(theFace->index,e); + } + } + } + if(edgeA->left>0 && edgeB->left>0 && edgeA->left==edgeB->left) + { + Face *theFace=theObjectList[tt]->face(edgeA->left); + size_t edgeCount=theFace->edge.size(); + for(int e=edgeCount-1;e>-1;--e) + { + if(theFace->edge[e]==-(int)(edgeA->index)) + { + theObjectList[tt]->faceEdgeChange(theFace->index,e,-(int)(newEdge)); + } + else + if(theFace->edge[e]==-((int)edgeB->index)) + { + theObjectList[tt]->faceEdgeRemove(theFace->index,e); + } + } + } + deleteEdgeH(tt,edgeA->index); + deleteEdgeH(tt,edgeB->index); + return; + } + else + {//printf("@@@@@@@@@@2@@@@@@@@@@@"); + size_t newEdge=theObjectList[tt]->addEdge(edgeB->end,edgeA->end); + if(edgeA->right>0 && edgeB->left>0 && edgeA->right==edgeB->left) + { + Face *theFace=theObjectList[tt]->face(edgeA->right); + size_t edgeCount=theFace->edge.size(); + for(int e=edgeCount-1;e>-1;--e) + { + if(theFace->edge[e]==-((int)edgeB->index)) + { + theObjectList[tt]->faceEdgeChange(theFace->index,e,newEdge); + } + else + if(theFace->edge[e]==((int)edgeA->index)) + { + theObjectList[tt]->faceEdgeRemove(theFace->index,e); + } + } + } + if(edgeA->left>0 && edgeB->right>0 && edgeA->left==edgeB->right) + { + Face *theFace=theObjectList[tt]->face(edgeA->left); + size_t edgeCount=theFace->edge.size(); + for(int e=edgeCount-1;e>-1;--e) + { + if(theFace->edge[e]==-((int)edgeA->index)) + { + theObjectList[tt]->faceEdgeChange(theFace->index,e,-((int)newEdge)); + } + else + if(theFace->edge[e]==((int)edgeB->index)) + { + theObjectList[tt]->faceEdgeRemove(theFace->index,e); + } + } + } + deleteEdgeH(tt,edgeA->index); + deleteEdgeH(tt,edgeB->index); + return; + } + } + else + { + if(edgeB->end==vertexID) + {//printf("@@@@@@@@@3@@@@@@@@@@@@"); + size_t newEdge=theObjectList[tt]->addEdge(edgeB->start,edgeA->start); + if(edgeA->left>0 && edgeB->right>0 && edgeA->left==edgeB->right) + { + Face *theFace=theObjectList[tt]->face(edgeA->left); + size_t edgeCount=theFace->edge.size(); + for(int e=edgeCount-1;e>-1;--e) + { + if(theFace->edge[e]==((int)edgeB->index)) + { + theObjectList[tt]->faceEdgeChange(theFace->index,e,newEdge); + } + else + if(theFace->edge[e]==-((int)edgeA->index)) + { + theObjectList[tt]->faceEdgeRemove(theFace->index,e); + } + } + } + if(edgeA->right>0 && edgeB->left>0 && edgeA->right==edgeB->left) + { + Face *theFace=theObjectList[tt]->face(edgeA->right); + size_t edgeCount=theFace->edge.size(); + for(int e=edgeCount-1;e>-1;--e) + { + if(theFace->edge[e]==((int)edgeA->index)) + { + theObjectList[tt]->faceEdgeChange(theFace->index,e,-((int)newEdge)); + } + else + if(theFace->edge[e]==-((int)edgeB->index)) + { + theObjectList[tt]->faceEdgeRemove(theFace->index,e); + } + } + } + deleteEdgeH(tt,edgeA->index); + deleteEdgeH(tt,edgeB->index); + return; + } + else + { + //printf("@@@@@@@@@@@4@@@@@@@@@@"); + size_t newEdge=theObjectList[tt]->addEdge(edgeB->end,edgeA->start); + if(edgeA->left>0 && edgeB->left>0 && edgeA->left==edgeB->left) + { + Face *theFace=theObjectList[tt]->face(edgeA->left); + size_t edgeCount=theFace->edge.size(); + for(int e=edgeCount-1;e>-1;--e) + { + if(theFace->edge[e]==-((int)edgeB->index)) + { + theObjectList[tt]->faceEdgeChange(theFace->index,e,-((int)newEdge)); + } + else + if(theFace->edge[e]==-((int)edgeA->index)) + { + theObjectList[tt]->faceEdgeRemove(theFace->index,e); + } + } + } + if(edgeA->right>0 && edgeB->right>0 && edgeA->right==edgeB->right) + {//printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + Face *theFace=theObjectList[tt]->face(edgeA->right); + int edgeCount=theFace->edge.size(); + //printf("#%d#",edgeCount); + for(int e=edgeCount-1;e>-1;--e) + { + //printf("^^^%%%%%%%%%%%%%%%%%%%%%%%^^^^^^^^^^^^^^^^^^^"); + if(theFace->edge[e]==(int)(edgeA->index)) + { + //printf("^^^^^^^^^^^^^^^^^^^^^^^^^"); + theObjectList[tt]->faceEdgeChange(theFace->index,e,-(int)newEdge); + } + else + if(theFace->edge[e]==(int)edgeB->index) + { + theObjectList[tt]->faceEdgeRemove(theFace->index,e); + } + } + } + deleteEdgeH(tt,edgeA->index); + deleteEdgeH(tt,edgeB->index); + return; + } + } + } + else + { + return; + } + } + } + + void redo() + { + HistoryRecord &theRecord=historyManager->redoBegin(); + historyManager->recordBeginR(theRecord.name); + size_t recordSize=theRecord.size(); + for(int i=recordSize-1;i>-1;--i) + { + parseLog(theRecord[i]); + } + historyManager->recordEnd(); + historyManager->redoEnd(); + } + + void undo() + { + HistoryRecord &theRecord=historyManager->undoBegin(); + historyManager->redoRecordBegin(theRecord.name); + size_t recordSize=theRecord.size(); + for(int i=recordSize-1;i>-1;--i) + { + parseLog(theRecord[i]); + } + historyManager->redoRecordEnd(); + historyManager->undoEnd(); + } + + void parseLog(HistoryLog *theLog) + { + + if(theLog->type==LogType::Vertex_Position_Change) + { + Log_VertexPositionChange *original((Log_VertexPositionChange*)theLog); + theObjectList[original->target]->vertexPositionChangeA(original->index,original->x,original->y,original->z); + } + else + if(theLog->type==LogType::Vertex_Normal_Change) + { + Log_VertexNormalChange *original((Log_VertexNormalChange*)theLog); + theObjectList[original->target]->vertexNormalChange(original->index,original->x,original->y,original->z); + } + else + if(theLog->type==LogType::Vertex_Adjacent_Push) + { + Log_VertexAdjacentPush *original((Log_VertexAdjacentPush*)theLog); + theObjectList[original->target]->vertexAdjacentPop(original->index); + } + else + if(theLog->type==LogType::Vertex_Adjacent_Change) + { + Log_VertexAdjacentChange *original((Log_VertexAdjacentChange*)theLog); + theObjectList[original->target]->vertexAdjacentChange(original->index,original->adjIndex,original->original); + } + else + if(theLog->type==LogType::Vertex_Adjacent_Pop) + { + Log_VertexAdjacentPop *original((Log_VertexAdjacentPop*)theLog); + theObjectList[original->target]->vertexAdjacentPush(original->index,original->o); + } + else + if(theLog->type==LogType::Vertex_Adjacent_Swap) + { + Log_VertexAdjacentSwap *original((Log_VertexAdjacentSwap*)theLog); + theObjectList[original->target]->vertexAdjacentSwap(original->index,original->tIndex,original->oIndex); + } + else + if(theLog->type==LogType::Vertex_Adjacent_Remove) + { + Log_VertexAdjacentRemove *original((Log_VertexAdjacentRemove*)theLog); + theObjectList[original->target]->vertexAdjacentInsert(original->index,original->adjIndex,original->o); + } + else + if(theLog->type==LogType::Vertex_Adjacent_Insert) + { + Log_VertexAdjacentInsert *original((Log_VertexAdjacentInsert*)theLog); + theObjectList[original->target]->vertexAdjacentRemove(original->index,original->adjIndex); + } + else + if(theLog->type==LogType::Edge_Start_Change) + { + Log_EdgeStartChange *original((Log_EdgeStartChange*)theLog); + theObjectList[original->target]->edgeStartChange(original->index,original->start); + } + else + if(theLog->type==LogType::Edge_End_Change) + { + Log_EdgeEndChange *original((Log_EdgeEndChange*)theLog); + theObjectList[original->target]->edgeEndChange(original->index,original->end); + } + else + if(theLog->type==LogType::Edge_Left_Change) + { + Log_EdgeLeftChange *original((Log_EdgeLeftChange*)theLog); + theObjectList[original->target]->edgeLeftChange(original->index,original->left); + } + else + if(theLog->type==LogType::Edge_Right_Change) + { + Log_EdgeRightChange *original((Log_EdgeRightChange*)theLog); + theObjectList[original->target]->edgeRightChange(original->index,original->right); + } + else + if(theLog->type==LogType::Face_Edge_Push) + { + Log_FaceEdgePush *original((Log_FaceEdgePush*)theLog); + theObjectList[original->target]->faceEdgePop(original->index); + } + else + if(theLog->type==LogType::Face_Edge_Change) + { + Log_FaceEdgeChange *original((Log_FaceEdgeChange*)theLog); + theObjectList[original->target]->faceEdgeChange(original->index,original->edgeIndex,original->o); + } + else + if(theLog->type==LogType::Face_Edge_Pop) + { + Log_FaceEdgePop *original((Log_FaceEdgePop*)theLog); + theObjectList[original->target]->faceEdgePush(original->index,original->o); + } + else + if(theLog->type==LogType::Face_Edge_Swap) + { + Log_FaceEdgeSwap *original((Log_FaceEdgeSwap*)theLog); + theObjectList[original->target]->faceEdgeSwap(original->index,original->tIndex,original->oIndex); + } + else + if(theLog->type==LogType::Face_Edge_Remove) + { + Log_FaceEdgeRemove *original((Log_FaceEdgeRemove*)theLog); + theObjectList[original->target]->faceEdgeInsert(original->index,original->edgeIndex,original->o); + } + else + if(theLog->type==LogType::Face_Edge_Insert) + { + Log_FaceEdgeInsert *original((Log_FaceEdgeInsert*)theLog); + theObjectList[original->target]->faceEdgeRemove(original->index,original->edgeIndex); + } + else + if(theLog->type==LogType::Object_Position_Change) + { + Log_ObjectPositionChange *original((Log_ObjectPositionChange*)theLog); + original; + } + else + if(theLog->type==LogType::Object_Rotation_Change) + { + Log_ObjectRotationChange *original((Log_ObjectRotationChange*)theLog); + original; + } + else + if(theLog->type==LogType::Object_Scale_Change) + { + Log_ObjectScaleChange *original((Log_ObjectScaleChange*)theLog); + original; + } + else + if(theLog->type==LogType::Object_Color_Change) + { + Log_ObjectColorChange *original((Log_ObjectColorChange*)theLog); + original; + } + else + if(theLog->type==LogType::Object_Vertex_Add) + { + Log_ObjectVertexAdd *original((Log_ObjectVertexAdd*)theLog); + theObjectList[original->target]->objectVertexRemove(original->index); + } + else + if(theLog->type==LogType::Object_Vertex_Remove) + { + Log_ObjectVertexRemove *original((Log_ObjectVertexRemove*)theLog); + theObjectList[original->target]->addVertex(original->index,original->o); + } + else + if(theLog->type==LogType::Object_Edge_Add) + { + Log_ObjectEdgeAdd *original((Log_ObjectEdgeAdd*)theLog); + theObjectList[original->target]->objectEdgeRemove(original->index); + } + else + if(theLog->type==LogType::Object_Edge_Remove) + { + Log_ObjectEdgeRemove *original((Log_ObjectEdgeRemove*)theLog); + theObjectList[original->target]->addEdge(original->index,original->o); + } + else + if(theLog->type==LogType::Object_Face_Add) + { + Log_ObjectFaceAdd *original((Log_ObjectFaceAdd*)theLog); + theObjectList[original->target]->objectFaceRemove(original->index); + } + else + if(theLog->type==LogType::Object_Face_Remove) + { + Log_ObjectFaceRemove *original((Log_ObjectFaceRemove*)theLog); + theObjectList[original->target]->addFace(original->index,original->o); + } + else + if(theLog->type==LogType::Scene_Object_Add) + { + Log_SceneObjectAdd *original((Log_SceneObjectAdd*)theLog); + sceneObjectRemove(original->target); + } + else + if(theLog->type==LogType::Scene_Object_Remove) + { + Log_SceneObjectRemove *original((Log_SceneObjectRemove*)theLog); + sceneObjectAdd(original->target,original->o); + } + else + if(theLog->type==LogType::Scene_Selection_Add) + { + + } + else + if(theLog->type==LogType::Scene_Selection_Remove) + { + } + } + + void sceneObjectRemove(size_t objectID) + { + if(!historyManager->record(new Log_SceneObjectRemove(objectID,theObjectList[objectID]))) + { + delete theObjectList[objectID]; + } + theObjectList.remove(objectID); + }; + + void clearScene() + { + theObjectList.clear(); + }; + + size_t sceneObjectAdd(size_t objectID,Object *theO) + { + theObjectList.addI(objectID,theO); + historyManager->record(new Log_SceneObjectAdd(objectID)); + return objectID; + }; + + + void selectDualSideObject(bool isAppend=false) + { + if(!isAppend) + { + clearSelection(); + } + for(size_t i=1;iselectionRenderObject(); + } + ++i; + ++objectCount; + } + --i; + glFlush(); + GLuint hits = glRenderMode(GL_RENDER); + + for (size_t e=0; eposition.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); +glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + + for(size_t i=1;ivertexCount();++i) + { + struct SelectionResult selectBuffer[512]; + glSelectBuffer(2048, (GLuint*)selectBuffer); + glRenderMode(GL_SELECT); + glInitNames(); + glPushName(0); + size_t objectCount=0; + while(ivertexCount() && objectCount<512) + { + Vertex *theVertex=theObject->vertex(i); + if(theVertex) + { + glLoadName(i); + glBegin(GL_POINTS); + glVertex3f(theVertex->position.x,theVertex->position.y,theVertex->position.z); + glEnd(); + } + ++i; + ++objectCount; + } + --i; + glFlush(); + + GLuint hits = glRenderMode(GL_RENDER); + + for (size_t e=0; evertex(result.id)); + } + } + } + glPopMatrix(); + updateAxisCursor(); + if(!selection.empty()) + { + theObject->buildPSCacheFromVID(selection); + } + }; + + void selectDualSideEdge(bool isAppend=false) + { + if(!isAppend) + { + clearSelection(); + } + Object *theObject=theObjectList[target]; + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); +glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + + for(size_t i=1;iedgeCount();++i) + { + struct SelectionResult selectBuffer[512]; + glSelectBuffer(2048, (GLuint*)selectBuffer); + glRenderMode(GL_SELECT); + glInitNames(); + glPushName(0); + size_t objectCount=0; + while(iedgeCount() && objectCount<512) + { + Edge *theEdge=theObject->edge(i); + if(theEdge) + { + glLoadName(i); + glBegin(GL_LINES); + Vertex *start=theObject->vertex(theEdge->start); + Vertex *end=theObject->vertex(theEdge->end); + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + glEnd(); + } + ++i; + ++objectCount; + } + --i; + glFlush(); + + GLuint hits = glRenderMode(GL_RENDER); + + for (size_t e=0; eedge(result.id)); + } + else + { + return; + } + } + } + glPopMatrix(); + updateAxisCursor(); + if(!selection.empty()) + { + theObject->buildPSCacheFromEID(selection); + } + }; + + void redefineControlPoint() + { + if(mode==SelectionMode::Object) + { + for(size_t i=0;iredefineControlPoint(); + } + } + } + else if(target>0) + { + clearSelection(); + theObjectList[target]->clearPSCache(); + theObjectList[target]->redefineControlPoint(); + } + } + + void selectDualSideFace(bool isAppend=false) + { + if(!isAppend) + { + clearSelection(); + } + Object *theObject=theObjectList[target]; + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); +glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + + for(size_t i=1;ifaceCount();++i) + { + struct SelectionResult selectBuffer[512]; + glSelectBuffer(2048, (GLuint*)selectBuffer); + glRenderMode(GL_SELECT); + glInitNames(); + glPushName(0); + size_t objectCount=0; + while(ifaceCount() && objectCount<512) + { + Face *theFace=theObject->face(i); + if(theFace) + { + glLoadName(i); + glBegin(GL_POLYGON); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=theObject->vertex(theObject->edge(theFace->edge[e])->start); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=theObject->vertex(theObject->edge(-theFace->edge[e])->end); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + ++i; + ++objectCount; + } + --i; + glFlush(); + GLuint hits = glRenderMode(GL_RENDER); + + for (size_t e=0; eface(result.id)); + } + } + } + glPopMatrix(); + updateAxisCursor(); + if(!selection.empty()) + { + theObject->buildPSCacheFromFID(selection); + } + }; + + void selectionPush(ElementBase *theElement) + { + if(!theElement->isSelected) + { + theElement->isSelected=true; + selection.push_back(theElement->index); + } + } + + void selectDualSide(bool isAppend=false) + { + if(mode==SelectionMode::Object && target==0) + { + selectDualSideObject(isAppend); + } + else if(mode==SelectionMode::Face && target) + { + selectDualSideFace(isAppend); + } + else if(mode==SelectionMode::Edge && target) + { + selectDualSideEdge(isAppend); + } + else if(mode==SelectionMode::Vertex && target) + { + selectDualSideVertex(isAppend); + } + }; + + void changeShadeMode(RenderType::__Enum type) + { + if(mode==SelectionMode::Object && target==0) + { + size_t selectionSize=selection.size(); + for(size_t i=0;irenderMode=type; + } + } + } + else + if(target) + { + if(theObjectList[target]) + { + theObjectList[target]->renderMode=type; + } + } + } + + void splitPress(size_t x1,size_t y1,size_t height) + { + Object *theObject=theObjectList[target]; + if(mode==SelectionMode::Split && theObject->vertexCount()<16777215 && theObject->edgeCount()<16777215) + { + size_t newSplitVX; + size_t newSplitVY; + size_t cutVertex=0; + glClearColor(1.0f,1.0f,1.0f,1.0f); + glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); + glDisable(GL_DITHER); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glDisable(GL_ALPHA_TEST); + glDisable(GL_BLEND); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); + glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE); + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;ifaceCount();++i) + { + Face *theFace=theObject->face(i); + if(theFace) + { + struct ColorID colorID=(*(struct ColorID*)&(i)); + glColor4ub(colorID.r, colorID.g,colorID.b,colorID.a); + glBegin(GL_POLYGON); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=theObject->vertex(theObject->edge(theFace->edge[e])->start); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=theObject->vertex(theObject->edge(-theFace->edge[e])->end); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE); + glPointSize(5.0f); + glBegin(GL_POINTS); + for(size_t i=0;ivertexCount();++i) + { + Vertex *theVertex=theObject->vertex(i); + if(theVertex) + { + struct ColorID colorID=(*(struct ColorID*)&(i)); + glColor4ub(colorID.r, colorID.g,colorID.b,colorID.a); + glVertex3f(theVertex->position.x,theVertex->position.y,theVertex->position.z); + } + } + glEnd(); + glFlush(); + glPopMatrix(); + size_t sw=5; + size_t sh=5; + size_t length=sw*sh; + struct ColorID *pixel=new struct ColorID[length]; + glReadPixels(x1,height-y1,sw,sh, GL_RGBA, GL_UNSIGNED_BYTE, pixel); + for(size_t e=0;evertexCount()&&theObject->vertex(result)) + { + //selectionPush(theObject->vertex(result)); + cutVertex=result; + newSplitVX=x1; + newSplitVY=y1; + break; + } + } + } + delete pixel; + glEnable(GL_BLEND); + glEnable(GL_ALPHA_TEST); + glEnable(GL_TEXTURE_2D); + glEnable(GL_LIGHTING); + glEnable(GL_DITHER); + glClearColor(128.0f/255.0f,128.0f/255.0f,128.0f/255.0f,1.0f); + + if(splitVertexID==0 && cutVertex>0) + { + splitVertexID=cutVertex; +// splitVX=newSplitVX; + // splitVY=newSplitVY; + } + else if(splitVertexID>0 && cutVertex>0) + { + split(splitVertexID,cutVertex); + splitVertexID=cutVertex; +// splitVX=newSplitVX; + // splitVY=newSplitVY; + } + else if(cutVertex==0) + { + size_t edgeBeCuted=0; + glClearColor(1.0f,1.0f,1.0f,1.0f); + glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); + glDisable(GL_DITHER); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glDisable(GL_ALPHA_TEST); + glDisable(GL_BLEND); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); + glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE); + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;ifaceCount();++i) + { + Face *theFace=theObject->face(i); + if(theFace) + { + struct ColorID colorID=(*(struct ColorID*)&(i)); + glColor4ub(colorID.r, colorID.g,colorID.b,colorID.a); + glBegin(GL_POLYGON); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=theObject->vertex(theObject->edge(theFace->edge[e])->start); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=theObject->vertex(theObject->edge(-theFace->edge[e])->end); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE); + glBegin(GL_LINES); + for(size_t i=1;iedgeCount();++i) + { + Edge *theEdge=theObject->edge(i); + if(theEdge) + { + struct ColorID colorID=(*(struct ColorID*)&(i)); + glColor4ub(colorID.r, colorID.g,colorID.b,colorID.a); + Vertex *start=theObject->vertex(theEdge->start); + Vertex *end=theObject->vertex(theEdge->end); + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glFlush(); + glPopMatrix(); + size_t sw=5; + size_t sh=5; + size_t length=sw*sh; + struct ColorID *pixel=new struct ColorID[length]; + glReadPixels(x1,height-y1,sw,sh, GL_RGBA, GL_UNSIGNED_BYTE, pixel); + for(size_t e=0;eedgeCount()&&theObject->edge(result)) + { + edgeBeCuted=result; + break; + } + } + } + delete pixel; + glEnable(GL_BLEND); + glEnable(GL_ALPHA_TEST); + glEnable(GL_TEXTURE_2D); + glEnable(GL_LIGHTING); + glEnable(GL_DITHER); + glClearColor(128.0f/255.0f,128.0f/255.0f,128.0f/255.0f,1.0f); + if(edgeBeCuted) + { + cutVertex=insertVertex(edgeBeCuted,0.5f); + if(splitVertexID==0) + { + splitVertexID=cutVertex; + + } + else + { + split(splitVertexID,cutVertex); + splitVertexID=cutVertex; + } + } + } + } + }; + + void weldVertex() + { + if(mode==SelectionMode::Vertex && target && selection.size()>1) + { + size_t targetV=selection[0]; + for(size_t i=selection.size()-1;i>0;--i) + { + targetWeldVertex(selection[i],targetV); + } + clearSelection(); + theObjectList[target]->clearPSCache(); + } + }; + + void beginSplit() + { + isSplitMode=true; + changeSelectionMode(SelectionMode::Split); + }; + + void nextSplit() + { + splitVertexID=0; + }; + + void endSplit() + { + isSplitMode=false; + splitVertexID=0; + }; + + void selectSingleSide(size_t x1,size_t y1,size_t x2,size_t y2,size_t height,bool isAppend=false) + { + if(mode==SelectionMode::Object && target==0) + { + selectSingleSideObject(x1,y1,x2,y2,height,isAppend); + } + else if(mode==SelectionMode::Face && target) + { + selectSingleSideFace(x1,y1,x2,y2,height,isAppend); + } + else if(mode==SelectionMode::Edge && target) + { + selectSingleSideEdge(x1,y1,x2,y2,height,isAppend); + } + else if(mode==SelectionMode::Vertex && target) + { + selectSingleSideVertex(x1,y1,x2,y2,height,isAppend); + } + else if(mode==SelectionMode::Split && target) + { + splitPress(x1,y1,height); + } + }; + + void selectSingleSideVertex(size_t x1,size_t y1,size_t x2,size_t y2,size_t height,bool isAppend=false) + { + if(!isAppend) + { + clearSelection(); + } + Object *theObject=theObjectList[target]; + + if(theObject->vertexCount()<16777215) + { + glClearColor(1.0f,1.0f,1.0f,1.0f); + glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); + glDisable(GL_DITHER); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glDisable(GL_ALPHA_TEST); + glDisable(GL_BLEND); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); +glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + + glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE); + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;ifaceCount();++i) + { + Face *theFace=theObject->face(i); + if(theFace) + { + struct ColorID colorID=(*(struct ColorID*)&(i)); + glColor4ub(colorID.r, colorID.g,colorID.b,colorID.a); + glBegin(GL_POLYGON); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=theObject->vertex(theObject->edge(theFace->edge[e])->start); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=theObject->vertex(theObject->edge(-theFace->edge[e])->end); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE); + glPointSize(5.0f); + glBegin(GL_POINTS); + for(size_t i=0;ivertexCount();++i) + { + Vertex *theVertex=theObject->vertex(i); + if(theVertex) + { + struct ColorID colorID=(*(struct ColorID*)&(i)); + glColor4ub(colorID.r, colorID.g,colorID.b,colorID.a); + glVertex3f(theVertex->position.x,theVertex->position.y,theVertex->position.z); + } + } + glEnd(); + glFlush(); + glPopMatrix(); + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + size_t length=sw*sh; + struct ColorID *pixel=new struct ColorID[length]; + glReadPixels(x1,height-y2,sw,sh, GL_RGBA, GL_UNSIGNED_BYTE, pixel); + for(size_t e=0;evertexCount()&&theObject->vertex(result)) + { + selectionPush(theObject->vertex(result)); + } + } + } + delete pixel; + glEnable(GL_BLEND); + glEnable(GL_ALPHA_TEST); + glEnable(GL_TEXTURE_2D); + glEnable(GL_LIGHTING); + glEnable(GL_DITHER); + glClearColor(128.0f/255.0f,128.0f/255.0f,128.0f/255.0f,1.0f); + updateAxisCursor(); + theObjectList[target]->clearPSCache(); + if(!selection.empty()) + { + theObject->buildPSCacheFromVID(selection); + } + } + }; + + void subdivide() + { + if(mode==SelectionMode::Object && target==0) + { + if(!selection.empty()) + { + for(size_t i=0;isubdivide(); + } + } + } + else + { + if(mode==SelectionMode::Vertex && target) + { + theObjectList[target]->subdivide(); + if(!selection.empty()) + { + theObjectList[target]->clearPSCache(); + theObjectList[target]->buildPSCacheFromVID(selection); + } + } + } + }; + + bool isAxisSelected(CameraMode::__Enum cameraMode,const Vector &eye,const size_t height,const size_t x,const size_t y,float &rx,float &ry,int &cursorMode) + { + if(selection.empty()) + { + return false; + } + else + { + bool result(false); + cursorMode=0; + glClearColor(1.0f,1.0f,1.0f,1.0f); + glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); + glDisable(GL_DITHER); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glDisable(GL_ALPHA_TEST); + glDisable(GL_BLEND); + theAxisCursor->onPaint(eye,cameraMode); + glFlush(); + struct ColorID pixel; + glReadPixels(x,height-y,1,1, GL_RGBA, GL_UNSIGNED_BYTE,&pixel); + if(pixel.r==255 && pixel.g==0 && pixel.b==0) + { + result=true; + cursorMode=1;//xÖá + GLint viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); + GLdouble modelMatrix[16]; + glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix); + GLdouble projMatrix[16]; + glGetDoublev(GL_PROJECTION_MATRIX,projMatrix); + GLdouble ox; + GLdouble oy; + GLdouble oz; + GLdouble winx; + GLdouble winy; + GLdouble winz; + if(theAxisCursor->mode==AxisCursorMode::MoveAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=viewport[3]-(GLint)oy; + gluProject(10,0,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=viewport[3]-(GLint)winy; + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + else if(theAxisCursor->mode==AxisCursorMode::RotateAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=viewport[3]-(GLint)oy; + gluProject(0,10,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=viewport[3]-(GLint)winy; + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + else if(theAxisCursor->mode==AxisCursorMode::ScaleAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=viewport[3]-(GLint)oy; + gluProject(10,0,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=viewport[3]-(GLint)winy; + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + } + else if(pixel.r==0 && pixel.g==0 && pixel.b==255) + { + result=true; + cursorMode=2; + GLint viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); + GLdouble modelMatrix[16]; + glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix); + GLdouble projMatrix[16]; + glGetDoublev(GL_PROJECTION_MATRIX,projMatrix); + GLdouble ox; + GLdouble oy; + GLdouble oz; + GLdouble winx; + GLdouble winy; + GLdouble winz; + if(theAxisCursor->mode==AxisCursorMode::MoveAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=viewport[3]-(GLint)oy; + gluProject(0,10,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=viewport[3]-(GLint)winy; + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + else if(theAxisCursor->mode==AxisCursorMode::RotateAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=viewport[3]-(GLint)oy; + gluProject(0,0,10,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=viewport[3]-(GLint)winy; + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + else if(theAxisCursor->mode==AxisCursorMode::ScaleAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=viewport[3]-(GLint)oy; + gluProject(0,10,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=viewport[3]-(GLint)winy; + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + } + else if(pixel.r==255 && pixel.g==252 && pixel.b==0) + { + result=true; + cursorMode=3; + GLint viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); + GLdouble modelMatrix[16]; + glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix); + GLdouble projMatrix[16]; + glGetDoublev(GL_PROJECTION_MATRIX,projMatrix); + GLdouble ox; + GLdouble oy; + GLdouble oz; + GLdouble winx; + GLdouble winy; + GLdouble winz; + if(theAxisCursor->mode==AxisCursorMode::MoveAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=viewport[3]-(GLint)oy; + gluProject(0,0,10,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=viewport[3]-(GLint)winy; + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + else if(theAxisCursor->mode==AxisCursorMode::RotateAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=viewport[3]-(GLint)oy; + gluProject(10,0,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=viewport[3]-(GLint)winy; + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + else if(theAxisCursor->mode==AxisCursorMode::ScaleAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=viewport[3]-(GLint)oy; + gluProject(0,0,10,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=viewport[3]-(GLint)winy; + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + } + else if(pixel.r==0 && pixel.g==255 && pixel.b==0) + { + result=true; + cursorMode=4; + } + glEnable(GL_BLEND); + glEnable(GL_ALPHA_TEST); + glEnable(GL_TEXTURE_2D); + glEnable(GL_LIGHTING); + glEnable(GL_DITHER); + glClearColor(128.0f/255.0f,128.0f/255.0f,128.0f/255.0f,1.0f); + return result; + } + }; + + void axisXMove(float step) + { + theAxisCursor->position.x+=step; + if(mode==SelectionMode::Object && target==0) + { + for(size_t i=0;iposition.x+=step; + } + } + } + else if(mode==SelectionMode::Vertex && target) + { + Object *theObject=theObjectList[target]; + Quaternion angle(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector xAxis(1,0,0); + xAxis=(xAxis)*(rotateMatrix)*step; + moveVertex(xAxis.x,xAxis.y,xAxis.z); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Edge && target) + { + Object *theObject=theObjectList[target]; + Quaternion angle(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector xAxis(1,0,0); + xAxis=(xAxis)*(rotateMatrix)*step; + moveEdge(xAxis.x,xAxis.y,xAxis.z); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Face && target) + { + Object *theObject=theObjectList[target]; + Quaternion angle(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector xAxis(1,0,0); + xAxis=(xAxis)*(rotateMatrix)*step; + moveFace(xAxis.x,xAxis.y,xAxis.z); + theObject->partialSubdivision(); + } + }; + + void axisXRotate(float step) + { + theAxisCursor->rotation*=theAxisCursor->rotation.w; + theAxisCursor->rotation.z+=step; + float angle=theAxisCursor->rotation.length(); + theAxisCursor->rotation.normalize(); + theAxisCursor->rotation.w=angle; + + Vector rotateAxis=Vector(0,0,1); + Quaternion rotateQuaternion(step,rotateAxis); + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + + if(mode==SelectionMode::Object && target==0) + { + for(size_t i=0;icenter+theObject->position-theAxisCursor->position); + //½«Õâ¸öÏòÁ¿ÑØ×ÅÐýתÖá½øÐÐÐýת + CToR=(rotateMatrix)*(CToR); + //Ðýת֮ºó»¹Ô­ÐµÄÖÐÐĵã + theObject->position=theAxisCursor->position+CToR-theObject->center; + //Ö®ºóÒªÐýתÎïÌåµÄ½Ç¶È + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion add(step,Vector(0,0,1)); + Quaternion result=add*original; + result.getRotate(theObject->rotation.w,theObject->rotation); + /*theObject->rotation*=theObject->rotation.w; + theObject->rotation.z+=step; + float angle=theObject->rotation.length(); + theObject->rotation.normalize(); + theObject->rotation.w=angle;*/ + } + } + } + else if(mode==SelectionMode::Vertex) + { + Object *theObject=theObjectList[target]; + Quaternion original(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + original.getMatrix(originalMatrix); + rotateVertex(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,rotateMatrix); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Edge) + { + Object *theObject=theObjectList[target]; + Quaternion original(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + original.getMatrix(originalMatrix); + rotateEdge(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,rotateMatrix); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Face) + { + Object *theObject=theObjectList[target]; + Quaternion original(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + original.getMatrix(originalMatrix); + rotateFace(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,rotateMatrix); + theObject->partialSubdivision(); + } + }; + + void axisYRotate(float step) + { + theAxisCursor->rotation*=theAxisCursor->rotation.w; + theAxisCursor->rotation.x+=step; + float angle=theAxisCursor->rotation.length(); + theAxisCursor->rotation.normalize(); + theAxisCursor->rotation.w=angle; + + Vector rotateAxis=Vector(1,0,0); + Quaternion rotateQuaternion(step,rotateAxis); + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + + if(mode==SelectionMode::Object && target==0) + { + for(size_t i=0;icenter+theObject->position-theAxisCursor->position); + //½«Õâ¸öÏòÁ¿ÑØ×ÅÐýתÖá½øÐÐÐýת + CToR=(rotateMatrix)*(CToR); + //Ðýת֮ºó»¹Ô­ÐµÄÖÐÐĵã + theObject->position=theAxisCursor->position+CToR-theObject->center; + //Ö®ºóÒªÐýתÎïÌåµÄ½Ç¶È +/* theObject->rotation*=theObject->rotation.w; + theObject->rotation.x+=step; + float angle=theObject->rotation.length(); + theObject->rotation.normalize(); + theObject->rotation.w=angle;*/ + + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion add(step,Vector(1,0,0)); + Quaternion result=add*original; + result.getRotate(theObject->rotation.w,theObject->rotation); + + } + } + } + else if(mode==SelectionMode::Vertex) + { + Object *theObject=theObjectList[target]; + Quaternion original(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + original.getMatrix(originalMatrix); + rotateVertex(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,rotateMatrix); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Edge) + { + Object *theObject=theObjectList[target]; + Quaternion original(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + original.getMatrix(originalMatrix); + rotateEdge(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,rotateMatrix); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Face) + { + Object *theObject=theObjectList[target]; + Quaternion original(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + original.getMatrix(originalMatrix); + rotateFace(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,rotateMatrix); + theObject->partialSubdivision(); + } + }; + + void rotateVertex(const Vector ¢er, Matrix &angle) + { + size_t selectionCount=selection.size(); + for(size_t i=0;ivertex(selection[i]); + if(theVertex) + { + Vector PToC=(theVertex->position-center); + PToC=angle*PToC+center; + theObjectList[target]->vertexPositionChangeA(theVertex->index,PToC.x,PToC.y,PToC.z); + } + } + }; + + void rotateEdge(const Vector ¢er,Matrix &angle) + { + size_t selectionCount=selection.size(); + std::vector vertexToBeRotate; + vertexToBeRotate.reserve(selectionCount*2); + for(size_t i=0;iedge(selection[i]); + if(theEdge) + { + Vertex *theStart=theObjectList[target]->vertex(theEdge->start); + Vertex *theEnd=theObjectList[target]->vertex(theEdge->end); + if(!theStart->isIn) + { + vertexToBeRotate.push_back(theStart); + isInCache.push_back(theStart); + theStart->isIn=true; + } + if(!theEnd->isIn) + { + vertexToBeRotate.push_back(theEnd); + isInCache.push_back(theEnd); + theEnd->isIn=true; + } + } + } + + clearIsInCache(); + + for(size_t i=0;iposition-center); + PToC=angle*PToC+center; + theObjectList[target]->vertexPositionChangeA(theVertex->index,PToC.x,PToC.y,PToC.z); + } + } + }; + + void rotateFace(const Vector ¢er,Matrix &angle) + { + size_t selectionCount=selection.size(); + std::vector vertexToBeRotate; + vertexToBeRotate.reserve(selectionCount*2); + for(size_t i=0;iface(selection[i]); + size_t edgeCount=theFace->edge.size(); + for(size_t e=0;eedge[e]>0) + { + Edge *theEdge=theObjectList[target]->edge(theFace->edge[e]); + Vertex *theVertex=theObjectList[target]->vertex(theEdge->end); + if(!theVertex->isIn) + { + vertexToBeRotate.push_back(theVertex); + theVertex->isIn=true; + isInCache.push_back(theVertex); + } + } + else + { + Edge *theEdge=theObjectList[target]->edge(-theFace->edge[e]); + Vertex *theVertex=theObjectList[target]->vertex(theEdge->start); + if(!theVertex->isIn) + { + vertexToBeRotate.push_back(theVertex); + theVertex->isIn=true; + isInCache.push_back(theVertex); + } + } + } + } + + clearIsInCache(); + + for(size_t i=0;iposition-center); + PToC=angle*PToC+center; + theObjectList[target]->vertexPositionChangeA(theVertex->index,PToC.x,PToC.y,PToC.z); + } + } + } + + void scaleVertex(Vector ¢er,Matrix &forward,Matrix &backward,float scale,int smode) + { + size_t selectionCount=selection.size(); + for(size_t i=0;ivertex(selection[i]); + if(theVertex) + { + Vector newPosition(theVertex->position-theObjectList[target]->center); + newPosition=forward*newPosition; + newPosition=newPosition-(center-theObjectList[target]->center); + if(smode==1) + { + newPosition.x*=scale; + } + else if(smode==2) + { + newPosition.y*=scale; + } + else if(smode==3) + { + newPosition.z*=scale; + } + else if(smode==4) + { + newPosition*=scale; + } + newPosition+=(center-theObjectList[target]->center); + newPosition=backward*newPosition; + newPosition+=theObjectList[target]->center; + theObjectList[target]->vertexPositionChangeA(theVertex->index,newPosition.x,newPosition.y,newPosition.z); + } + } + }; + + void scaleEdge(Vector ¢er,Matrix &forward,Matrix &backward,float scale,int smode) + { + size_t selectionCount=selection.size(); + std::vector vertexToBeScale; + vertexToBeScale.reserve(selectionCount*2); + for(size_t i=0;iedge(selection[i]); + if(theEdge) + { + Vertex *theStart=theObjectList[target]->vertex(theEdge->start); + Vertex *theEnd=theObjectList[target]->vertex(theEdge->end); + if(!theStart->isIn) + { + vertexToBeScale.push_back(theStart); + isInCache.push_back(theStart); + theStart->isIn=true; + } + if(!theEnd->isIn) + { + vertexToBeScale.push_back(theEnd); + isInCache.push_back(theEnd); + theEnd->isIn=true; + } + } + } + + clearIsInCache(); + + size_t vertexCount=vertexToBeScale.size(); + for(size_t i=0;iposition-theObjectList[target]->center); + newPosition=forward*newPosition; + newPosition=newPosition-(center-theObjectList[target]->center); + if(smode==1) + { + newPosition.x*=scale; + } + else if(smode==2) + { + newPosition.y*=scale; + } + else if(smode==3) + { + newPosition.z*=scale; + } + else if(smode==4) + { + newPosition*=scale; + } + newPosition+=(center-theObjectList[target]->center); + newPosition=backward*newPosition; + newPosition+=theObjectList[target]->center; + theObjectList[target]->vertexPositionChangeA(theVertex->index,newPosition.x,newPosition.y,newPosition.z); + } + } + } + + void scaleFace(Vector ¢er,Matrix &forward,Matrix &backward,float scale,int smode) + { + size_t selectionCount=selection.size(); + std::vector vertexToBeScale; + vertexToBeScale.reserve(selectionCount*2); + for(size_t i=0;iface(selection[i]); + size_t edgeCount=theFace->edge.size(); + for(size_t e=0;eedge[e]>0) + { + Edge *theEdge=theObjectList[target]->edge(theFace->edge[e]); + Vertex *theVertex=theObjectList[target]->vertex(theEdge->end); + if(!theVertex->isIn) + { + vertexToBeScale.push_back(theVertex); + theVertex->isIn=true; + isInCache.push_back(theVertex); + } + } + else + { + Edge *theEdge=theObjectList[target]->edge(-theFace->edge[e]); + Vertex *theVertex=theObjectList[target]->vertex(theEdge->start); + if(!theVertex->isIn) + { + vertexToBeScale.push_back(theVertex); + theVertex->isIn=true; + isInCache.push_back(theVertex); + } + } + } + } + + clearIsInCache(); + + size_t vertexCount=vertexToBeScale.size(); + for(size_t i=0;iposition-theObjectList[target]->center); + newPosition=forward*newPosition; + newPosition=newPosition-(center-theObjectList[target]->center); + if(smode==1) + { + newPosition.x*=scale; + } + else if(smode==2) + { + newPosition.y*=scale; + } + else if(smode==3) + { + newPosition.z*=scale; + } + else if(smode==4) + { + newPosition*=scale; + } + newPosition+=(center-theObjectList[target]->center); + newPosition=backward*newPosition; + newPosition+=theObjectList[target]->center; + theObjectList[target]->vertexPositionChangeA(theVertex->index,newPosition.x,newPosition.y,newPosition.z); + } + } + } + + void axisZRotate(float step) + { + theAxisCursor->rotation*=theAxisCursor->rotation.w; + theAxisCursor->rotation.y+=step; + float angle=theAxisCursor->rotation.length(); + theAxisCursor->rotation.normalize(); + theAxisCursor->rotation.w=angle; + + Vector rotateAxis=Vector(0,1,0); + Quaternion rotateQuaternion(step,rotateAxis); + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + + if(mode==SelectionMode::Object && target==0) + { + for(size_t i=0;icenter+theObject->position-theAxisCursor->position); + //½«Õâ¸öÏòÁ¿ÑØ×ÅÐýתÖá½øÐÐÐýת + CToR=(rotateMatrix)*(CToR); + //Ðýת֮ºó»¹Ô­ÐµÄÖÐÐĵã + theObject->position=theAxisCursor->position+CToR-theObject->center; + //Ö®ºóÒªÐýתÎïÌåµÄ½Ç¶È + /* theObject->rotation*=theObject->rotation.w; + theObject->rotation.y+=step; + float angle=theObject->rotation.length(); + theObject->rotation.normalize(); + theObject->rotation.w=angle;*/ + + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion add(step,Vector(0,1,0)); + Quaternion result=add*original; + result.getRotate(theObject->rotation.w,theObject->rotation); + } + } + } + else if(mode==SelectionMode::Vertex) + { + Object *theObject=theObjectList[target]; + Quaternion original(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + original.getMatrix(originalMatrix); + rotateVertex(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,rotateMatrix); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Edge) + { + Object *theObject=theObjectList[target]; + Quaternion original(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + original.getMatrix(originalMatrix); + rotateEdge(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,rotateMatrix); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Face) + { + Object *theObject=theObjectList[target]; + Quaternion original(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + original.getMatrix(originalMatrix); + rotateFace(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,rotateMatrix); + theObject->partialSubdivision(); + } + }; + + void axisYMove(float step) + { + theAxisCursor->position.y+=step; + if(mode==SelectionMode::Object && target==0) + { + for(size_t i=0;iposition.y+=step; + } + } + } + else if(mode==SelectionMode::Vertex && target) + { + Object *theObject=theObjectList[target]; + Quaternion angle(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector xAxis(0,1,0); + xAxis=(xAxis)*(rotateMatrix)*step; + moveVertex(xAxis.x,xAxis.y,xAxis.z); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Edge && target) + { + Object *theObject=theObjectList[target]; + Quaternion angle(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector xAxis(0,1,0); + xAxis=(xAxis)*(rotateMatrix)*step; + moveEdge(xAxis.x,xAxis.y,xAxis.z); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Face && target) + { + Object *theObject=theObjectList[target]; + Quaternion angle(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector xAxis(0,1,0); + xAxis=(xAxis)*(rotateMatrix)*step; + moveFace(xAxis.x,xAxis.y,xAxis.z); + theObject->partialSubdivision(); + } + }; + + void axisZMove(float step) + { + theAxisCursor->position.z+=step; + if(mode==SelectionMode::Object && target==0) + { + for(size_t i=0;iposition.z+=step; + } + } + } + else if(mode==SelectionMode::Vertex && target) + { + Object *theObject=theObjectList[target]; + Quaternion angle(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector xAxis(0,0,1); + xAxis=(xAxis)*(rotateMatrix)*step; + moveVertex(xAxis.x,xAxis.y,xAxis.z); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Edge && target) + { + Object *theObject=theObjectList[target]; + Quaternion angle(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector xAxis(0,0,1); + xAxis=(xAxis)*(rotateMatrix)*step; + moveEdge(xAxis.x,xAxis.y,xAxis.z); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Face && target) + { + Object *theObject=theObjectList[target]; + Quaternion angle(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector xAxis(0,0,1); + xAxis=(xAxis)*(rotateMatrix)*step; + moveFace(xAxis.x,xAxis.y,xAxis.z); + theObject->partialSubdivision(); + } + + }; + + void axisXScale(float step) + { + if(mode==SelectionMode::Object && target==0) + { + for(size_t i=0;irotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector xAxis(1,0,0); + xAxis=(xAxis)*(rotateMatrix); + theObject->scale+=step*xAxis*0.01f; + } + } + } + else if(mode==SelectionMode::Vertex && target) + { + Object *theObject=theObjectList[target]; + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion back(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix backMatrix; + original.getMatrix(originalMatrix); + back.getMatrix(backMatrix); + scaleVertex(theAxisCursor->position,originalMatrix,backMatrix,(1+step*0.1f),1); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Edge && target) + { + Object *theObject=theObjectList[target]; + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion back(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix backMatrix; + original.getMatrix(originalMatrix); + back.getMatrix(backMatrix); + scaleEdge(theAxisCursor->position,originalMatrix,backMatrix,(1+step*0.1f),1); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Face && target) + { + Object *theObject=theObjectList[target]; + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion back(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix backMatrix; + original.getMatrix(originalMatrix); + back.getMatrix(backMatrix); + scaleFace(theAxisCursor->position,originalMatrix,backMatrix,(1+step*0.1f),1); + theObject->partialSubdivision(); + } + }; + + void axisYScale(float step) + { + if(mode==SelectionMode::Object && target==0) + { + for(size_t i=0;irotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector yAxis(0,1,0); + yAxis=(yAxis)*(rotateMatrix); + theObject->scale+=step*yAxis*0.01f; + } + } + } + else if(mode==SelectionMode::Vertex && target) + { + Object *theObject=theObjectList[target]; + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion back(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix backMatrix; + original.getMatrix(originalMatrix); + back.getMatrix(backMatrix); + //scaleVertex(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,xAxis,(step*0.1)); + scaleVertex(theAxisCursor->position,originalMatrix,backMatrix,(1+step*0.1f),2); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Edge && target) + { + Object *theObject=theObjectList[target]; + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion back(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix backMatrix; + original.getMatrix(originalMatrix); + back.getMatrix(backMatrix); + //scaleVertex(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,xAxis,(step*0.1)); + scaleEdge(theAxisCursor->position,originalMatrix,backMatrix,(1+step*0.1f),2); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Face && target) + { + Object *theObject=theObjectList[target]; + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion back(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix backMatrix; + original.getMatrix(originalMatrix); + back.getMatrix(backMatrix); + //scaleVertex(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,xAxis,(step*0.1)); + scaleFace(theAxisCursor->position,originalMatrix,backMatrix,(1+step*0.1f),2); + theObject->partialSubdivision(); + } + }; + + void axisZScale(float step) + { + if(mode==SelectionMode::Object && target==0) + { + for(size_t i=0;irotation.w,Vector(theObject->rotation)); + Matrix rotateMatrix; + angle.getMatrix(rotateMatrix); + Vector zAxis(0,0,1); + zAxis=(zAxis)*(rotateMatrix); + theObject->scale+=step*zAxis*0.01f; + } + } + } + else if(mode==SelectionMode::Vertex && target) + { + Object *theObject=theObjectList[target]; + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion back(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix backMatrix; + original.getMatrix(originalMatrix); + back.getMatrix(backMatrix); + + //scaleVertex(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,xAxis,(step*0.1)); + scaleVertex(theAxisCursor->position,originalMatrix,backMatrix,(1+step*0.1f),3); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Edge && target) + { + Object *theObject=theObjectList[target]; + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion back(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix backMatrix; + original.getMatrix(originalMatrix); + back.getMatrix(backMatrix); + + //scaleVertex(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,xAxis,(step*0.1)); + scaleEdge(theAxisCursor->position,originalMatrix,backMatrix,(1+step*0.1f),3); + theObject->partialSubdivision(); + } + else if(mode==SelectionMode::Face && target) + { + Object *theObject=theObjectList[target]; + Quaternion original(theObject->rotation.w,Vector(theObject->rotation)); + Quaternion back(-theObject->rotation.w,Vector(theObject->rotation)); + Matrix originalMatrix; + Matrix backMatrix; + original.getMatrix(originalMatrix); + back.getMatrix(backMatrix); + + //scaleVertex(originalMatrix*(theAxisCursor->position-theObject->center)+theObject->center,xAxis,(step*0.1)); + scaleFace(theAxisCursor->position,originalMatrix,backMatrix,(1+step*0.1f),3); + theObject->partialSubdivision(); + } + }; + + void axisRelease() + { + theAxisCursor->rotation.null(); + }; + + void ctrlDrag(Vector &horizontal,Vector &vertical,int x,int y,bool isExtrude) + { + if(!selection.empty()) + { + GLdouble ox; + GLdouble oy; + GLdouble oz; + GLdouble winx; + GLdouble winy; + GLdouble winz; + GLint viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); + GLdouble modelMatrix[16]; + glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix); + GLdouble projMatrix[16]; + glGetDoublev(GL_PROJECTION_MATRIX,projMatrix); + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=(GLdouble)viewport[3]-(GLint)oy; + gluProject(horizontal.x,horizontal.y,horizontal.z,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnitX((float)(winx-ox),(float)(winy-oy),0.0f); + gluProject(vertical.x,vertical.y,vertical.z,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnitY((float)(winx-ox),(float)(winy-oy),0.0f); + Vector offset(horizontal*(float)x/projUnitX.length()+vertical*(float)y/projUnitY.length()); + if(mode==SelectionMode::Object) + { + for(size_t i=0;iposition-=offset; + } + } + else if(mode==SelectionMode::Vertex && target) + { + moveVertex(-offset.x,-offset.y,-offset.z); + theObjectList[target]->partialSubdivision(); + } + else if(mode==SelectionMode::Edge && target) + { + if(isExtrude) + { + theObjectList[target]->clearPSCache(); + extrudeEdge(-offset.x,-offset.y,-offset.z); + theObjectList[target]->updateSubdivision(); + theObjectList[target]->buildPSCacheFromEID(selection); + } + else + { + moveEdge(-offset.x,-offset.y,-offset.z); + theObjectList[target]->partialSubdivision(); + } + } + else if(mode==SelectionMode::Face && target) + { + if(isExtrude) + { + theObjectList[target]->clearPSCache(); + extrudeFaceGroup(-offset.x,-offset.y,-offset.z); + theObjectList[target]->updateSubdivision(); + theObjectList[target]->buildPSCacheFromFID(selection); + } + else + { + moveFace(-offset.x,-offset.y,-offset.z); + theObjectList[target]->partialSubdivision(); + } + } + } + } + + void axisDrag(const float &step,const int &cursorMode,float &rx,float &ry) + { + GLint viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); + GLdouble modelMatrix[16]; + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theAxisCursor->position.x,theAxisCursor->position.y,theAxisCursor->position.z); + glRotatef(theAxisCursor->rotation.w,theAxisCursor->rotation.x,theAxisCursor->rotation.y,theAxisCursor->rotation.z); + glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix); + glPopMatrix(); + GLdouble projMatrix[16]; + glGetDoublev(GL_PROJECTION_MATRIX,projMatrix); + GLdouble ox; + GLdouble oy; + GLdouble oz; + GLdouble winx; + GLdouble winy; + GLdouble winz; + if(cursorMode==1) + { + //xÖá + if(theAxisCursor->mode==AxisCursorMode::MoveAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=(GLdouble)viewport[3]-(GLint)oy; + gluProject(1,0,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnit((float)(winx-ox),(float)(winy-oy),0.0f); + axisXMove(step/projUnit.length()); + } + else if(theAxisCursor->mode==AxisCursorMode::RotateAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=(GLdouble)viewport[3]-(GLint)oy; + gluProject(0,1,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnit((float)(winx-ox),(float)(winy-oy),0.0f); + axisXRotate(step/projUnit.length()); + //ÕâÀïÐÞ¸ÄÐÂÏòÁ¿ + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + else if(theAxisCursor->mode==AxisCursorMode::ScaleAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=(GLdouble)viewport[3]-(GLint)oy; + gluProject(1,0,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnit((float)(winx-ox),(float)(winy-oy),0.0f); + //theAxisCursor->position.x+=step/projUnit.length(); + axisXScale(step/projUnit.length()); + } + } + else if(cursorMode==2) + { + if(theAxisCursor->mode==AxisCursorMode::MoveAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=(GLdouble)viewport[3]-oy; + gluProject(0,1,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnit((float)(winx-ox),(float)(winy-oy),0.0f); + axisYMove(step/projUnit.length()); + } + else if(theAxisCursor->mode==AxisCursorMode::RotateAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=(GLdouble)viewport[3]-(GLint)oy; + gluProject(0,0,1,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnit((float)(winx-ox),(float)(winy-oy),0.0f); + axisYRotate(step/projUnit.length()); + //ÕâÀïÐÞ¸ÄÐÂÏòÁ¿ + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + else if(theAxisCursor->mode==AxisCursorMode::ScaleAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=(GLdouble)viewport[3]-(GLint)oy; + gluProject(0,1,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnit((float)(winx-ox),(float)(winy-oy),0.0f); + //theAxisCursor->position.y+=step/projUnit.length(); + axisYScale(step/projUnit.length()); + } + } + else if(cursorMode==3) + { + if(theAxisCursor->mode==AxisCursorMode::MoveAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=(GLdouble)viewport[3]-oy; + gluProject(0,0,1,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnit((float)(winx-ox),(float)(winy-oy),0.0f); + axisZMove(step/projUnit.length()); + } + else if(theAxisCursor->mode==AxisCursorMode::RotateAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=(GLdouble)viewport[3]-(GLint)oy; + gluProject(1,0,0,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnit((float)(winx-ox),(float)(winy-oy),0.0f); + axisZRotate(step/projUnit.length()); + //ÕâÀïÐÞ¸ÄÐÂÏòÁ¿ + rx=(float)(winx-ox); + ry=(float)(winy-oy); + } + else if(theAxisCursor->mode==AxisCursorMode::ScaleAxis) + { + gluProject(0,0,0,modelMatrix,projMatrix,viewport,&ox,&oy,&oz); + oy=(GLdouble)viewport[3]-(GLint)oy; + gluProject(0,0,1,modelMatrix,projMatrix,viewport,&winx,&winy,&winz); + winy=(GLdouble)viewport[3]-winy; + Vector projUnit((float)(winx-ox),(float)(winy-oy),0.0f); + //theAxisCursor->position.z+=step/projUnit.length(); + axisZScale(step/projUnit.length()); + } + } + else if(cursorMode==4) + { + + } + }; + + void unSubdivide() + { + if(mode==SelectionMode::Object && target==0) + { + if(!selection.empty()) + { + for(size_t i=0;iunSubdivide(); + } + } + } + else + { + if(mode==SelectionMode::Vertex && target) + { + theObjectList[target]->clearPSCache(); + theObjectList[target]->unSubdivide(); + if(!selection.empty()) + { + theObjectList[target]->buildPSCacheFromVID(selection); + } + } + } + } + + void selectSingleSideEdge(size_t x1,size_t y1,size_t x2,size_t y2,size_t height,bool isAppend=false) + { + if(!isAppend) + { + clearSelection(); + } + Object *theObject=theObjectList[target]; + if(theObject->edgeCount()<16777215) + { + glClearColor(1.0f,1.0f,1.0f,1.0f); + glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); + glDisable(GL_DITHER); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glDisable(GL_ALPHA_TEST); + glDisable(GL_BLEND); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); + glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + + + glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE); + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + for(size_t i=1;ifaceCount();++i) + { + Face *theFace=theObject->face(i); + if(theFace) + { + struct ColorID colorID=(*(struct ColorID*)&(i)); + glColor4ub(colorID.r, colorID.g,colorID.b,colorID.a); + glBegin(GL_POLYGON); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=theObject->vertex(theObject->edge(theFace->edge[e])->start); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=theObject->vertex(theObject->edge(-theFace->edge[e])->end); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glDisable(GL_POLYGON_OFFSET_FILL); + glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE); + glBegin(GL_LINES); + for(size_t i=1;iedgeCount();++i) + { + Edge *theEdge=theObject->edge(i); + if(theEdge) + { + struct ColorID colorID=(*(struct ColorID*)&(i)); + glColor4ub(colorID.r, colorID.g,colorID.b,colorID.a); + Vertex *start=theObject->vertex(theEdge->start); + Vertex *end=theObject->vertex(theEdge->end); + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glFlush(); + glPopMatrix(); + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + size_t length=sw*sh; + struct ColorID *pixel=new struct ColorID[length]; + glReadPixels(x1,height-y2,sw,sh, GL_RGBA, GL_UNSIGNED_BYTE, pixel); + for(size_t e=0;eedgeCount()&&theObject->edge(result)) + { + selectionPush(theObject->edge(result)); + } + } + } + delete pixel; + glEnable(GL_BLEND); + glEnable(GL_ALPHA_TEST); + glEnable(GL_TEXTURE_2D); + glEnable(GL_LIGHTING); + glEnable(GL_DITHER); + glClearColor(128.0f/255.0f,128.0f/255.0f,128.0f/255.0f,1.0f); + updateAxisCursor(); + if(!selection.empty()) + { + theObject->buildPSCacheFromEID(selection); + } + } + }; + + void selectSingleSideFace(size_t x1,size_t y1,size_t x2,size_t y2,size_t height,bool isAppend=false) + { + if(!isAppend) + { + clearSelection(); + } + Object *theObject=theObjectList[target]; + if(theObject->faceCount()<16777215) + { + glClearColor(1.0f,1.0f,1.0f,1.0f); + glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); + glDisable(GL_DITHER); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glDisable(GL_ALPHA_TEST); + glDisable(GL_BLEND); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); +glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + + for(size_t i=1;ifaceCount();++i) + { + Face *theFace=theObject->face(i); + if(theFace) + { + struct ColorID colorID=(*(struct ColorID*)&(i)); + glColor4ub(colorID.r, colorID.g,colorID.b,colorID.a); + glBegin(GL_POLYGON); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=theObject->vertex(theObject->edge(theFace->edge[e])->start); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=theObject->vertex(theObject->edge(-theFace->edge[e])->end); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + glFlush(); + glPopMatrix(); + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + size_t length=sw*sh; + struct ColorID *pixel=new struct ColorID[length]; + glReadPixels(x1,height-y2,sw,sh, GL_RGBA, GL_UNSIGNED_BYTE, pixel); + for(size_t e=0;efaceCount()&&theObject->face(result)) + { + selectionPush(theObject->face(result)); + } + } + } + delete pixel; + glEnable(GL_BLEND); + glEnable(GL_ALPHA_TEST); + glEnable(GL_TEXTURE_2D); + glEnable(GL_LIGHTING); + glEnable(GL_DITHER); + glClearColor(128.0f/255.0f,128.0f/255.0f,128.0f/255.0f,1.0f); + updateAxisCursor(); + if(!selection.empty()) + { + theObject->buildPSCacheFromFID(selection); + } + } + }; + + void selectSingleSideObject(size_t x1,size_t y1,size_t x2,size_t y2,size_t height,bool isAppend=false) + { + if(!isAppend) + { + clearSelection(); + } + if(theObjectList.size()<16777215) + { + glClearColor(1.0f,1.0f,1.0f,1.0f); + glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); + glDisable(GL_DITHER); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glDisable(GL_ALPHA_TEST); + glDisable(GL_BLEND); + for(size_t i=1;iselectionRenderObject(); + } + } + glFlush(); + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + size_t length=sw*sh; + struct ColorID *pixel=new struct ColorID[length]; + glReadPixels(x1,height-y2,sw,sh, GL_RGBA, GL_UNSIGNED_BYTE, pixel); + for(size_t e=0;eclearPSCache(); + if((mode=theMode)==SelectionMode::Object) + { + target=0; + } + } + else + { + + } + } + updateAxisCursor(); + } + + void unhideAll() + { + for(size_t i=1;iisHide=false; + } + } + } + + void selectAll() + { + if(mode==SelectionMode::Object) + { + clearSelection(); + for(size_t i=1;iisSelected)) + { + theObjectList[i]->isHide=true; + } + } + } + else if(target>0) + { + for(size_t i=1;iisHide=true; + } + } + + if(theObjectList[target]) + { + theObjectList[target]->isHide=false; + } + } + } + + void hideSelection() + { + if(mode==SelectionMode::Object) + { + for(size_t i=0;iisHide=true; + } + } + clearSelection(); + } + else if(target>0 && theObjectList[target]) + { + theObjectList[target]->isHide=true; + clearSelection(); + theObjectList[target]->clearPSCache(); + changeSelectionMode(SelectionMode::Object); + } + } + + void onPaint() + { + if(mode==SelectionMode::Object) + { + for(size_t i=1;iisSelected) + { + + theObjectList[i]->drawObjectSelected(); + theObjectList[i]->drawMirror(); + } + else + { + theObjectList[i]->draw(); + theObjectList[i]->drawMirror(); + } + } + } + } + else + { + for(size_t i=1;idraw(); + theObjectList[i]->drawMirror(); + } + else + { + if(mode==SelectionMode::Face) + { + if(theObjectList[target]->renderMode==RenderType::Wire) + { + theObjectList[target]->drawWireFaceSelected(); + } + else + { + theObjectList[target]->drawFacedFaceSelected(); + } + drawSelectedFace(); + theObjectList[i]->drawMirror(); + } + else if(mode==SelectionMode::Edge) + { + if(theObjectList[target]->renderMode==RenderType::Wire) + { + theObjectList[target]->drawWireEdgeSelected(); + } + else + { + theObjectList[target]->drawFacedEdgeSelected(); + } + drawSelectedEdge(); + theObjectList[i]->drawMirror(); + } + else if(mode==SelectionMode::Vertex) + { + if(theObjectList[target]->renderMode==RenderType::Wire) + { + theObjectList[target]->drawWireVertexSelected(); + } + else + { + theObjectList[target]->drawFacedVertexSelected(); + } + drawSelectedVertex(); + theObjectList[i]->drawMirror(); + } + else if(mode==SelectionMode::Split) + { + if(theObjectList[target]->renderMode==RenderType::Wire) + { + theObjectList[target]->drawWireVertexSelected(); + } + else + { + theObjectList[target]->drawFacedVertexSelected(); + } + drawCutVertex(); + theObjectList[i]->drawMirror(); + } + } + } + } + } + }; + + + void drawCutVertex() + { + if(target && mode==SelectionMode::Split) + { + Object *theObject=theObjectList[target]; + if(theObject) + { + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); + glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + glDisable(GL_LIGHTING); + glColor3ub(255,0,255); + glPointSize(8.0f); + glBegin(GL_POINTS); + Vertex *theVertex=theObject->vertex(splitVertexID); + if(theVertex) + { + glVertex3f(theVertex->position.x,theVertex->position.y,theVertex->position.z); + } + glEnd(); + glEnable(GL_LIGHTING); + glPopMatrix(); + } + } + }; + + void updateAxisCursor() + { + theAxisCursor->rotation.null(); + if(mode==SelectionMode::Object && target==0) + { + if(selection.empty()) + { + theAxisCursor->mode=AxisCursorMode::NoAxis; + theAxisCursor->position.null(); + } + else + { + Vector *center=new Vector(); + size_t selectionSize=selection.size(); + for(size_t i=0;icenter+theObject->position; + } + (*center)/=(float)selectionSize; + theAxisCursor->position=*center; + delete center; + theAxisCursor->mode=currentACMode; + } + } + else if(mode==SelectionMode::Vertex && target) + { + if(selection.empty()) + { + theAxisCursor->mode=AxisCursorMode::NoAxis; + theAxisCursor->position.null(); + } + else + { + Vector *center=new Vector(); + size_t selectionSize=selection.size(); + Object *theObject=theObjectList[target]; + for(size_t i=0;ivertex(selection[i]); + if(theVertex) + (*center)+=theVertex->position; + } + (*center)/=(float)selectionSize; + //ÕâÀïÐýת + Vector rotateAxis=Vector(theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); + Quaternion rotateQuaternion(theObject->rotation.w,rotateAxis); + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + *center=rotateMatrix*(*center-theObject->center); + //ÕâÀïƽÒÆ + theAxisCursor->position=*center+theObject->position+theObject->center; + delete center; + theAxisCursor->mode=currentACMode; + } + } + else if(mode==SelectionMode::Edge && target) + { + if(selection.empty()) + { + theAxisCursor->mode=AxisCursorMode::NoAxis; + theAxisCursor->position.null(); + } + else + { + Vector *center=new Vector(); + size_t selectionSize=selection.size(); + Object *theObject=theObjectList[target]; + for(size_t i=0;iedge(selection[i]); + if(theEdge) + { + if(!theObject->vertex(theEdge->start)->isIn) + { + (*center)+=theObject->vertex(theEdge->start)->position; + theObject->vertex(theEdge->start)->isIn=true; + isInCache.push_back(theObject->vertex(theEdge->start)); + } + if(!theObject->vertex(theEdge->end)->isIn) + { + (*center)+=theObject->vertex(theEdge->end)->position; + theObject->vertex(theEdge->end)->isIn=true; + isInCache.push_back(theObject->vertex(theEdge->end)); + } + } + } + (*center)/=(float)isInCache.size(); + clearIsInCache(); + //ÕâÀïÐýת + Vector rotateAxis=Vector(theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); + Quaternion rotateQuaternion(theObject->rotation.w,rotateAxis); + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + *center=rotateMatrix*(*center-theObject->center); + //ÕâÀïƽÒÆ + theAxisCursor->position=*center+theObject->position+theObject->center; + delete center; + theAxisCursor->mode=currentACMode; + + } + } + else if(mode==SelectionMode::Face && target) + { + if(selection.empty()) + { + theAxisCursor->mode=AxisCursorMode::NoAxis; + theAxisCursor->position.null(); + } + else + { + Vector *center=new Vector(); + size_t selectionSize=selection.size(); + Object *theObject=theObjectList[target]; + for(size_t i=0;iface(selection[i]); + if(theFace) + { + size_t edgeCount=theFace->edge.size(); + for(size_t e=0;eedge[e]>0) + { + Vertex *theStart=theObject->vertex(theObject->edge(theFace->edge[e])->start); + if(!theStart->isIn) + { + (*center)+=theStart->position; + theStart->isIn=true; + isInCache.push_back(theStart); + } + } + else + { + Vertex *theEnd=theObject->vertex(theObject->edge(-theFace->edge[e])->end); + if(!theEnd->isIn) + { + (*center)+=theEnd->position; + theEnd->isIn=true; + isInCache.push_back(theEnd); + } + } + } + } + } + (*center)/=(float)isInCache.size(); + clearIsInCache(); + //ÕâÀïÐýת + Vector rotateAxis=Vector(theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); + Quaternion rotateQuaternion(theObject->rotation.w,rotateAxis); + Matrix rotateMatrix; + rotateQuaternion.getMatrix(rotateMatrix); + *center=rotateMatrix*(*center-theObject->center); + //ÕâÀïƽÒÆ + theAxisCursor->position=*center+theObject->position+theObject->center; + delete center; + theAxisCursor->mode=currentACMode; + } + } + }; + + void drawCursor(CameraMode::__Enum cameraMode,const Vector &eye) + { + theAxisCursor->onPaint(eye,cameraMode); + }; + + void drawSelectedVertex() + { + if(target && mode==SelectionMode::Vertex) + { + Object *theObject=theObjectList[target]; + if(theObject) + { + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); + glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + + glDisable(GL_LIGHTING); + glColor3ub(255,0,0); + glPointSize(5.0f); + glBegin(GL_POINTS); + for(size_t i=0;ivertex(selection[i]); + if(theVertex) + { + glVertex3f(theVertex->position.x,theVertex->position.y,theVertex->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + glPopMatrix(); + } + else + { + return; + } + } + }; + + void drawSelectedEdge() + { + if(target && mode==SelectionMode::Edge) + { + Object *theObject=theObjectList[target]; + if(theObject) + { + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); + glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + + glDisable(GL_LIGHTING); + glColor3ub(255,252,0); + glBegin(GL_LINES); + for(size_t i=0;iedge(selection[i]); + if(theEdge) + { + Vertex *start=theObject->vertex(theEdge->start); + Vertex *end=theObject->vertex(theEdge->end); + glVertex3f(start->position.x,start->position.y,start->position.z); + glVertex3f(end->position.x,end->position.y,end->position.z); + } + } + glEnd(); + glEnable(GL_LIGHTING); + glPopMatrix(); + } + else + { + return; + } + } + }; + + +void drawSelectedFace() + { + if(target && mode==SelectionMode::Face) + { + Object *theObject=theObjectList[target]; + if(theObject) + { + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(theObject->position.x,theObject->position.y,theObject->position.z); + glTranslatef(theObject->center.x,theObject->center.y,theObject->center.z); + glRotatef(theObject->rotation.w,theObject->rotation.x,theObject->rotation.y,theObject->rotation.z); + glScalef(theObject->scale.x,theObject->scale.y,theObject->scale.z); + glTranslatef(-theObject->center.x,-theObject->center.y,-theObject->center.z); + + glDisable(GL_LIGHTING); + glEnable(GL_POLYGON_OFFSET_FILL); + glPolygonOffset(1.0f,1.0f); + //glEnable(GL_ALPHA_TEST); + glColor3ub(48,92,235); + for(size_t i=0;iface(selection[i]); + if(theFace) + { + glBegin(GL_POLYGON); + for(size_t e=0;eedge.size();++e) + { + if(theFace->edge[e]>0) + { + Vertex *v=theObject->vertex(theObject->edge(theFace->edge[e])->start); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + else + { + Vertex *v=theObject->vertex(theObject->edge(-theFace->edge[e])->end); + glVertex3f(v->position.x,v->position.y,v->position.z); + } + } + glEnd(); + } + } + //glDisable(GL_ALPHA_TEST); + glDisable(GL_POLYGON_OFFSET_FILL); + glEnable(GL_LIGHTING); + glPopMatrix(); + } + else + { + return; + } + } + }; + +void openFromPWB(const char *fileName) +{ + clearScene(); + loadFromPWB(fileName); +} + +void loadFromPWB(const char *fileName) +{ + FILE *fp=fopen(fileName,"rb"); + struct SceneInfo sceneInfo; + fread(&sceneInfo,sizeof(sceneInfo),1,fp); + for(size_t i=1;i0) + { + Object *theObject=new Object("new object"); + theObject->index=objectInfo.index; + theObject->center.vec(objectInfo.centerX,objectInfo.centerY,objectInfo.centerZ); + theObject->position.vec(objectInfo.positionX,objectInfo.positionY,objectInfo.positionZ); + theObject->rotation.vec(objectInfo.rotationX,objectInfo.rotationY,objectInfo.rotationZ); + theObject->scale.vec(objectInfo.scaleX,objectInfo.scaleY,objectInfo.scaleZ); + theObject->mat_ambient[0]=objectInfo.mat_ambient[0]; + theObject->mat_ambient[1]=objectInfo.mat_ambient[1]; + theObject->mat_ambient[2]=objectInfo.mat_ambient[2]; + theObject->mat_ambient[3]=objectInfo.mat_ambient[3]; + + theObject->mat_diffuse[0]=objectInfo.mat_diffuse[0]; + theObject->mat_diffuse[1]=objectInfo.mat_diffuse[1]; + theObject->mat_diffuse[2]=objectInfo.mat_diffuse[2]; + theObject->mat_diffuse[3]=objectInfo.mat_diffuse[3]; + + theObject->mat_specular[0]=objectInfo.mat_specular[0]; + theObject->mat_specular[1]=objectInfo.mat_specular[1]; + theObject->mat_specular[2]=objectInfo.mat_specular[2]; + theObject->mat_specular[3]=objectInfo.mat_specular[3]; + + theObject->mat_emission[0]=objectInfo.mat_emission[0]; + theObject->mat_emission[1]=objectInfo.mat_emission[1]; + theObject->mat_emission[2]=objectInfo.mat_emission[2]; + theObject->mat_emission[3]=objectInfo.mat_emission[3]; + + theObject->mat_shininess[0]=objectInfo.mat_shininess[0]; + theObject->mat_shininess[1]=objectInfo.mat_shininess[1]; + theObject->mat_shininess[2]=objectInfo.mat_shininess[2]; + theObject->mat_shininess[3]=objectInfo.mat_shininess[3]; + + for(size_t e=1;e0) + { + Vertex *theVertex=new Vertex(); + theVertex->index=vertexInfo.index; + theVertex->position.vec(vertexInfo.x,vertexInfo.y,vertexInfo.z); + theVertex->normal.vec(vertexInfo.nx,vertexInfo.ny,vertexInfo.nz); + for(size_t h=0;hadjacentEdge.push_back(theAdj); + } + theObject->directPushVertex(theVertex); + } + else + { + theObject->directPushVertex(NULL); + } + } + + for(size_t e=1;e0) + { + Edge *theEdge=new Edge(edgeInfo.start,edgeInfo.end); + theEdge->index=edgeInfo.index; + theEdge->left=edgeInfo.left; + theEdge->right=edgeInfo.right; + theObject->directPushEdge(theEdge); + } + else + { + theObject->directPushEdge(NULL); + } + } + + for(size_t e=1;e0) + { + Face *theFace=new Face(); + theFace->index=faceInfo.index; + theFace->normal.vec(faceInfo.nx,faceInfo.ny,faceInfo.nz); + for(size_t h=0;hedge.push_back(theE); + } + theObject->directPushFace(theFace); + } + else + { + theObject->directPushFace(NULL); + } + } + sceneObjectAdd(theObject); + } + else + { + theObjectList.pushNullS(); + } + } + fclose(fp); +} + +void invertSelection() +{ + if(mode==SelectionMode::Object) + { + std::vector objectToBeSelected; + objectToBeSelected.reserve(100); + for(size_t i=1;iisSelected)) + { + objectToBeSelected.push_back(i); + } + } + + clearSelection(); + + for(size_t i=0;ivertexCount();i++) + { + if(theObject->vertex(i)==NULL) + { + fprintf(fp,"v %f %f %f\n",0,0,0); + } + else + { + Vertex *theVertex=theObject->vertex(i); + fprintf(fp,"v %f %f %f\n",theVertex->position.x,theVertex->position.y,theVertex->position.z); + } + } + size_t tempBase=i-1; + fprintf(fp,"g box01\n"); + for(size_t i=1;ifaceCount();i++) + { + Face *theFace=theObject->face(i); + if(theFace) + { + fprintf(fp,"f "); + for(size_t e=0;eedge.size();e++) + { + if(theFace->edge[e]<0) + { + fprintf(fp,"%d ",theObject->edge(-theFace->edge[e])->end+vertexBase); + } + else + { + fprintf(fp,"%d ",theObject->edge(theFace->edge[e])->start+vertexBase); + } + } + fprintf(fp,"\n"); + } + } + fprintf(fp,"g\n"); + vertexBase=tempBase; + } + } + fclose(fp); +}; + +void saveToFilePWB(const char *fileName) +{ + FILE *fp=fopen(fileName,"wb"); + struct SceneInfo sceneInfo; + sceneInfo.ID[0]='P'; + sceneInfo.ID[1]='W'; + sceneInfo.ID[2]='B'; + sceneInfo.ID[3]=0; + sceneInfo.version=1; + sceneInfo.objectCount=theObjectList.size(); + fwrite(&sceneInfo,sizeof(sceneInfo),1,fp); + for(size_t i=1;igetObjectInfo(); + fwrite(&objectInfo,sizeof(objectInfo),1,fp); + for(size_t e=1;evertex(e); + if(theVertex) + { + struct VertexInfo vertexInfo=theVertex->getVertexInfo(); + fwrite(&vertexInfo,sizeof(vertexInfo),1,fp); + fwrite(&(theVertex->adjacentEdge[0]),sizeof(size_t),vertexInfo.adjacentCount,fp); + } + else + { + struct VertexInfo vertexInfo; + vertexInfo.index=0; + vertexInfo.adjacentCount=0; + fwrite(&vertexInfo,sizeof(vertexInfo),1,fp); + } + } + + for(size_t e=1;eedge(e); + if(theEdge) + { + struct EdgeInfo edgeInfo=theEdge->getEdgeInfo(); + fwrite(&edgeInfo,sizeof(edgeInfo),1,fp); + } + else + { + struct EdgeInfo edgeInfo; + edgeInfo.index=0; + fwrite(&edgeInfo,sizeof(edgeInfo),1,fp); + } + } + + for(size_t e=1;eface(e); + if(theFace) + { + struct FaceInfo faceInfo=theFace->getFaceInfo(); + fwrite(&faceInfo,sizeof(faceInfo),1,fp); + fwrite(&(theFace->edge[0]),sizeof(size_t),faceInfo.edgeCount,fp); + } + else + { + struct FaceInfo faceInfo; + faceInfo.index=0; + fwrite(&faceInfo,sizeof(faceInfo),1,fp); + } + } + } + else + { + struct ObjectInfo objectInfo; + objectInfo.index=0; + objectInfo.vertexCount=0; + objectInfo.edgeCount=0; + objectInfo.faceCount=0; + fwrite(&objectInfo,sizeof(objectInfo),1,fp); + } + } + fclose(fp); +}; +public: +// void initialize(); + ~Scene(void); +}; + +extern Scene *theScene; \ No newline at end of file diff --git a/SceneInfoDialog.cpp b/SceneInfoDialog.cpp new file mode 100755 index 0000000..2f8ce2c --- /dev/null +++ b/SceneInfoDialog.cpp @@ -0,0 +1,93 @@ +#include "SceneInfoDialog.h" + +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP +#include +#endif //WX_PRECOMP +#include "scene.h" +/////////////////////////////////////////////////////////////////////////// +BEGIN_EVENT_TABLE(SceneInfoDialog, wxDialog) + EVT_BUTTON(onCloseButtonPressSceneInfo,SceneInfoDialog::onCloseButton) +END_EVENT_TABLE() +SceneInfoDialog::SceneInfoDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ) +{ + wxBoxSizer* mainSizer; + mainSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* sceneInfoStaticSizer; + sceneInfoStaticSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("Scene Info:") ), wxVERTICAL ); + + wxGridSizer* mainGirdSizer; + mainGirdSizer = new wxGridSizer( 2, 2, 0, 0 ); + + objectCountStaticText = new wxStaticText( this, ID_DEFAULT, wxT("object count:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( objectCountStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + objectCountTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_READONLY ); + mainGirdSizer->Add( objectCountTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + vertexCountStaticText = new wxStaticText( this, ID_DEFAULT, wxT("vertex count:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( vertexCountStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + vertexCountTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_READONLY ); + mainGirdSizer->Add( vertexCountTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + countStaticText = new wxStaticText( this, ID_DEFAULT, wxT("edge count:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( countStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + edgeCountTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_READONLY ); + mainGirdSizer->Add( edgeCountTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + faceCountStaticText = new wxStaticText( this, ID_DEFAULT, wxT("face count:"), wxDefaultPosition, wxDefaultSize, 0 ); + mainGirdSizer->Add( faceCountStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + faceCountTextCtrl = new wxTextCtrl( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_READONLY ); + mainGirdSizer->Add( faceCountTextCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + sceneInfoStaticSizer->Add( mainGirdSizer, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + mainSizer->Add( sceneInfoStaticSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxBoxSizer* buttonSizer; + buttonSizer = new wxBoxSizer( wxHORIZONTAL ); + + closeButton = new wxButton( this, onCloseButtonPressSceneInfo, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( closeButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainSizer->Add( buttonSizer, 0, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5 ); + + this->SetSizer( mainSizer ); + this->Layout(); + Fit(); + initializeData(); +} + +//SceneInfoDialog::~SceneInfoDialog(void){} + +void SceneInfoDialog::initializeData() +{ + size_t objectCount=0; + size_t vertexCount=0; + size_t edgeCount=0; + size_t faceCount=0; + + theScene->getSceneInfo(objectCount,vertexCount,edgeCount,faceCount); + + (*objectCountTextCtrl)<<(int)objectCount; + (*vertexCountTextCtrl)<<(int)vertexCount; + (*edgeCountTextCtrl)<<(int)edgeCount; + (*faceCountTextCtrl)<<(int)faceCount; + + +}; + +void SceneInfoDialog::onCloseButton(wxCommandEvent& event) +{ + Close(); + event; +}; diff --git a/SceneInfoDialog.h b/SceneInfoDialog.h new file mode 100755 index 0000000..e3eb6ea --- /dev/null +++ b/SceneInfoDialog.h @@ -0,0 +1,48 @@ +#pragma once + +#ifdef WX_GCH +#include +#else +#include +#endif + +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_DEFAULT wxID_ANY // Default + +/** + * Class SceneInfoDialog + */ +class SceneInfoDialog : public wxDialog +{ + private: + + protected: + wxStaticText* objectCountStaticText; + wxTextCtrl* objectCountTextCtrl; + wxStaticText* vertexCountStaticText; + wxTextCtrl* vertexCountTextCtrl; + wxStaticText* countStaticText; + wxTextCtrl* edgeCountTextCtrl; + wxStaticText* faceCountStaticText; + wxTextCtrl* faceCountTextCtrl; + wxButton* closeButton; + + public: + void initializeData(); + SceneInfoDialog( wxWindow* parent, int id = -1, wxString title = wxT(""), wxPoint pos = wxDefaultPosition, wxSize size = wxDefaultSize, int style = wxDEFAULT_DIALOG_STYLE ); + void onCloseButton(wxCommandEvent& event); + DECLARE_EVENT_TABLE() +}; + +enum +{ + onCloseButtonPressSceneInfo=234 +}; + diff --git a/Screen.cpp b/Screen.cpp new file mode 100755 index 0000000..44513eb --- /dev/null +++ b/Screen.cpp @@ -0,0 +1,118 @@ +#include "Screen.h" +#include "Scene.h" +#include "SingleView.h" +#include "FourView.h" +#include "ThreeView.h" +#include "TwoView.h" +#include "Camera.h" + +extern Scene *theScene; +Gird *theGird; + +Screen::Screen(wxWindow *theMain):mainFrame(theMain),isSelectionMode(false),isAxisMode(false),isAltMode(false),isCtrlMode(false),isExtrude(false) +{ +}; + +void Screen::initialize() +{ + theGird=new Gird(); + theGird->initialize(); + theScene->initialize(); + this->width=0; + this->height=0; + glClearColor(128.0f/255.0f,128.0f/255.0f,128.0f/255.0f,1.0f); + fourView=new FourView(2,2,4,4); + threeView=new ThreeView(2,2,4,4); + currentView=singleView=new SingleView(2,2,4,4); + twoView=new TwoView(2,2,4,4); + uiLayer=new UILayer(width,height); +} + +void Screen::updateScreen(size_t theWidth,size_t theHeight) +{ + width=theWidth; + height=theHeight; + singleView->update(width/2,height/2,width,height); +fourView->update(width/2,height/2,width,height); +threeView->update(width/2,height/2,width,height); +twoView->update(width/2,height/2,width,height); +uiLayer->updateSize(width,height); +} + +bool Screen::onLeftDrag(int x,int y) +{ + if(isAltMode) + { + return currentView->onRotateDrag(x,y); + } + else + { + if(isAxisMode) + { + return currentView->onAxisDrag(x,y); + } + else if(isCtrlMode) + { + return currentView->onCtrlDrag(x,y); + } + else if(isSelectionMode) + { + return currentView->onSelectionDrag(x,y); + } + else + { + return false; + } + } +} + +bool Screen::onMiddleDrag(int x,int y) +{ + if(isAltMode) + { + return currentView->onPanDrag(x,y); + } + else + { + return currentView->onSelectionDrag(x,y); + // return currentView->onDrag(); + } +} + +void Screen::screenShot(const char *fileName) + { + glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); + for(int i=0;i<(int)this->currentView->viewCount;++i) + { + CameraMode::__Enum cameraMode=currentView->setView(i); + theScene->onPaint(); + theScene->drawCursor(cameraMode,currentView->getEye(i)); + } + glViewport(0,0,(GLint)width,(GLint)height); + glFlush(); + unsigned char *pixel=(unsigned char *)malloc(sizeof(unsigned char)*width*height*3); + glReadPixels(0,0,width,height, GL_RGB, GL_UNSIGNED_BYTE, pixel); + wxImage theScreenShot(width,height,true); + theScreenShot.SetData(pixel); + theScreenShot=theScreenShot.Mirror(false); + theScreenShot.SaveFile(_T(fileName),wxBITMAP_TYPE_JPEG); + //delete pixel; + }; + +void Screen::onPaint() +{ + glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); + for(int i=0;i<(int)currentView->viewCount;i++) + { + CameraMode::__Enum cameraMode=currentView->setView(i); + theScene->onPaint(); + theScene->drawCursor(cameraMode,currentView->getEye(i)); + } + glViewport(0,0,(GLint)this->width,(GLint)this->height); + Begin2D(); + glColor3ub(255,255,255); + glLineWidth(3); + currentView->onPaint(); + uiLayer->onPaint(); + End2D(); +}; \ No newline at end of file diff --git a/Screen.h b/Screen.h new file mode 100755 index 0000000..30e3421 --- /dev/null +++ b/Screen.h @@ -0,0 +1,553 @@ +#pragma once +#include "FourView.h" +#include "ThreeView.h" +#include "TwoView.h" +#include "SingleView.h" +#include "UILayer.h" +#include "wx/utils.h" +#include +#include "AboutDialog.h" +enum +{ + Four=32, + Three, + Two, + Single +}; + +class Screen +{ +private: + FourView *fourView; + ThreeView *threeView; + SingleView *singleView; + TwoView *twoView; + SplitedView *currentView; + UILayer *uiLayer; + bool isSelectionMode; + bool isAxisMode; + bool isAltMode; + bool isCtrlMode; + bool isExtrude; + wxWindow *mainFrame; +public: + + int width; + int height; +Screen(wxWindow *theMain); +void updateScreen(unsigned int width,unsigned int height); + void refresh(){}; + void onPaint(); + void screenShot(const char *fileName); + void initialize(); + + void changeCamera(CameraMode::__Enum type) + { + currentView->changeCamera(type); + }; + + void disableReference() + { + currentView->disableReference(); + } + + void getViewportImage(GLuint &textID,std::string &path,Vector &position,size_t &width,size_t &height) + { + currentView->getViewportImage(textID,path,position,width,height); + } + + void setViewportImage(const char *path,GLuint imageID,Vector &position,size_t width,size_t height) + { + currentView->setViewportImage(path,imageID,position,width,height); + } + + void onCtrlDown() + { + isCtrlMode=true; + }; + + void onCtrlUp() + { + isCtrlMode=false; + }; + + void changeView(int type) + { + if(type==Four) + { + currentView=fourView; + } + else + if(type==Three) + { + currentView=threeView; + } + else + if(type==Two) + { + currentView=twoView; + } + else + if(type==Single) + { + currentView=singleView; + } + }; + + void onAltDown() + { + if(!isSelectionMode) + { + isAltMode=true; + } + } + + void onAltUp() + { + isAltMode=false; + } + + bool onLeftDrag(int x,int y); + bool onMiddleDrag(int x,int y); + + bool onMiddleRelease(bool isAppend) + { + if(isAltMode) + { + currentView->onPanRelease(); + isAltMode=false; + return true; + } + else + { + currentView->onDualSideSelectionRelease(isAppend); + isSelectionMode=false; + return true; + } + }; + + + + bool onLeftPress(int x,int y) + { + if(isAltMode) + { + currentView->onRotatePress(x,y); + return true; + } + else + { + if(uiLayer->onLeftPress(x,y)) + { + return true; + } + else + { + if(currentView->onLeftDown(x,y)) + { + isAltMode=false; + isAxisMode=false; + isSelectionMode=false; + isCtrlMode=false; + return true; + } + else + { + if(currentView->onAxisPress(x,y)) + { + isAxisMode=true; + return true; + } + else + { + if(isCtrlMode) + { + currentView->onCtrlPress(x,y); + return true; + } + else + { + currentView->onSelectionPress(x,y); + isSelectionMode=true; + isAxisMode=false; + return true; + } + } + } + } + } + }; + + bool onMoving(int x,int y) + { + return uiLayer->onMoving(x,y); + } + + void onExtrudePress() + { + if(!isExtrude) + { + currentView->onExtrudeDown(); + isExtrude=true; + } + }; + + void onExtrudeRelease() + { + currentView->onExtrudeRelease(); + isExtrude=false; + }; + + bool onLeftRelease(bool isAppend) + { + if(isAltMode) + { + currentView->onRotateRelease(); + isAltMode=false; + return true; + } + else + { + ButtonEventType eventType=uiLayer->onLeftRelease(); + if(eventType!=ButtonEventType::Nothing) + { + if(eventType==ButtonEventType::Smooth) + { + toolButtonSmooth(); + } + else if(eventType==ButtonEventType::Wire) + { + toolButtonWire(); + } + else if(eventType==ButtonEventType::Faced) + { + toolButtonFaced(); + } + else if(eventType==ButtonEventType::Wireframe) + { + toolButtonWireframe(); + } + else if(eventType==ButtonEventType::WireframeFaced) + { + toolButtonWireframeFaced(); + //theScene->theObjectList[1]->testSelection(); + } + else if(eventType==ButtonEventType::SingleView) + { + toolButtonSingleView(); + } + else if(eventType==ButtonEventType::TwoView) + { + toolButtonTwoView(); + } + else if(eventType==ButtonEventType::ThreeView) + { + toolButtonThreeView(); + } + else if(eventType==ButtonEventType::FourView) + { + toolButtonFourView(); + } + else if(eventType==ButtonEventType::VertexSelectionMode) + { + theScene->changeSelectionMode(SelectionMode::Vertex); + } + else if(eventType==ButtonEventType::EdgeSelectionMode) + { + theScene->changeSelectionMode(SelectionMode::Edge); + } + else if(eventType==ButtonEventType::FaceSelectionMode) + { + theScene->changeSelectionMode(SelectionMode::Face); + } + else if(eventType==ButtonEventType::ObjectSelectionMode) + { + theScene->changeSelectionMode(SelectionMode::Object); + } + else if(eventType==ButtonEventType::Help) + { + wxLaunchDefaultBrowser(_T("http://billconan.blogspot.com")); + } + else if(eventType==ButtonEventType::CreateCube) + { + theScene->newCube(0,0,0,100,100,100,1,1,1); + } + else if(eventType==ButtonEventType::CreateCylinder) + { + theScene->newCylinder(0,0,0,20,80,AxisMode::axisZ,8,1,1); + } + else if(eventType==ButtonEventType::CreateSphere) + { + theScene->newSphere(0,0,0,50,AxisMode::axisZ,8,4); + } + else if(eventType==ButtonEventType::CreatePlane) + { + theScene->newPlane(0,0,0,100,100,AxisMode::axisZ,1,1); + } + else if(eventType==ButtonEventType::CameraBack) + { + changeCamera(CameraMode::Back); + } + else if(eventType==ButtonEventType::CameraFront) + { + changeCamera(CameraMode::Front); + } + else if(eventType==ButtonEventType::CameraBottom) + { + changeCamera(CameraMode::Bottom); + } + else if(eventType==ButtonEventType::CameraTop) + { + changeCamera(CameraMode::Top); + } + else if(eventType==ButtonEventType::CameraLeft) + { + changeCamera(CameraMode::Left); + } + else if(eventType==ButtonEventType::CameraRight) + { + changeCamera(CameraMode::Right); + } + else if(eventType==ButtonEventType::CameraPerspective) + { + changeCamera(CameraMode::Perspective); + } + else if(eventType==ButtonEventType::Screenshot) + { + wxString filename; + filename<ShowModal(); + aboutDialog->Destroy(); + } + else if(eventType==ButtonEventType::New) + { + theScene->clearScene(); + } + else if(eventType==ButtonEventType::Open) + { + wxString wildcards=wxString::Format(_T("PWB files (*.pwb)|*.pwb"),wxFileSelectorDefaultWildcardStr,wxFileSelectorDefaultWildcardStr); + wxFileDialog dialog(mainFrame, _T("Open file:"),wxEmptyString, wxEmptyString, wildcards,wxOPEN); + if(dialog.ShowModal()==wxID_OK) + { + wxArrayString paths, filenames; + dialog.GetPaths(paths); + dialog.GetFilenames(filenames); + if(dialog.GetFilterIndex()==0) + { + theScene->clearScene(); + theScene->loadFromPWB(paths[0].c_str()); + } + } + } + else if(eventType==ButtonEventType::Save) + { + if(theScene->fileName=="") + { + wxFileDialog dialog(mainFrame,_T("Save file:"),wxEmptyString,_T("untitle"),_T("Pillow Binary Files (*.pwb)|*.pwb"),wxSAVE|wxOVERWRITE_PROMPT); + dialog.SetFilterIndex(1); + if (dialog.ShowModal() == wxID_OK) + { + //wxLogMessage(_T("%s, filter %d"),dialog.GetPath().c_str(), dialog.GetFilterIndex()); + if(dialog.GetFilterIndex()==0) + { + theScene->fileName=dialog.GetPath().c_str(); + theScene->saveToFilePWB(dialog.GetPath().c_str()); + } + } + } + else + { + theScene->saveToFilePWB(theScene->fileName.c_str()); + } + } + else if(eventType==ButtonEventType::SaveAs) + { + wxFileDialog dialog(mainFrame,_T("Save file:"),wxEmptyString,_T("untitle"),_T("Pillow Binary Files (*.pwb)|*.pwb|OBJ Files (*.obj)|*.obj"),wxSAVE|wxOVERWRITE_PROMPT); + dialog.SetFilterIndex(0); + if (dialog.ShowModal() == wxID_OK) + { + //wxLogMessage(_T("%s, filter %d"),dialog.GetPath().c_str(), dialog.GetFilterIndex()); + if(dialog.GetFilterIndex()==0) + { + theScene->fileName=dialog.GetPath().c_str(); + theScene->saveToFilePWB(dialog.GetPath().c_str()); + } + else if(dialog.GetFilterIndex()==1) + { + theScene->fileName=dialog.GetPath().c_str(); + theScene->saveToFileOBJ(dialog.GetPath().c_str()); + } + } + } + else if(eventType==ButtonEventType::DeleteVertex) + { + theScene->deleteVertex(); + } + else if(eventType==ButtonEventType::Split) + { + if(!theScene->isSplitMode) + { + theScene->beginSplit(); + } + else + { + theScene->endSplit(); + } + } + else if(eventType==ButtonEventType::Extrude) + { + theScene->extrudeFaceGroup(1,1,1); + } + else if(eventType==ButtonEventType::Collapse) + { + theScene->weldVertex(); + } + return true; + } + else + { + if(currentView->onAxisRelease()) + { + isAxisMode=false; + return true; + } + else + { + if(currentView->onCtrlRelease()) + { + isCtrlMode=false; + return true; + } + else + { + currentView->onSingleSideSelectionRelease(isAppend); + isSelectionMode=false; + return true; + } + } + } + } + } + + void toolButtonWireframeFaced() + { + theScene->changeShadeMode(RenderType::WireframeFaced); + } + + void switchGird() + { + currentView->switchGird(); + } + + void toolButtonSmooth() + { + theScene->changeShadeMode(RenderType::Smooth); + } + + void toolButtonSingleView() + { + changeView(Single); + }; + + void toolButtonTwoView() + { + changeView(Two); + }; + + void toolButtonThreeView() + { + changeView(Three); + }; + + void toolButtonFourView() + { + changeView(Four); + }; + + void toolButtonFaced() + { + theScene->changeShadeMode(RenderType::Faced); + } + + void toolButtonWireframe() + { + theScene->changeShadeMode(RenderType::Wireframe); + } + + void toolButtonWire() + { + theScene->changeShadeMode(RenderType::Wire); + } + + bool onMiddlePress(int x,int y) + { + if(isAltMode) + { + currentView->onPanPress(x,y); + return true; + } + else + { + currentView->onSelectionPress(x,y); + isSelectionMode=true; + return true; + } + }; + + bool onWheel(float step,int x,int y) + { + if(isAltMode) + { + currentView->onWheel(step,x,y); + return true; + }else return false; + }; + + private: + void Begin2D() + { + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + + gluOrtho2D(0, width, height, 0); + glDisable(GL_LIGHTING); + glEnable(GL_TEXTURE_2D); + glShadeModel(GL_SMOOTH); + glDisable(GL_DEPTH_TEST); + glEnable (GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + }; + + void End2D() + { + glDisable(GL_BLEND); + glEnable(GL_DEPTH_TEST); + glDisable(GL_TEXTURE_2D); + glEnable(GL_LIGHTING); + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + }; +public: + ~Screen(void) + { + delete fourView; + delete twoView; + delete threeView; + delete singleView; + delete uiLayer; + }; +}; + +extern Screen *theScreen; diff --git a/SingleView.cpp b/SingleView.cpp new file mode 100755 index 0000000..7c6d71c --- /dev/null +++ b/SingleView.cpp @@ -0,0 +1,21 @@ +#include "Global.h" +#include "SingleView.h" + +SingleView::SingleView(unsigned int splitX,unsigned int splitY,unsigned int width,unsigned int height) +:SplitedView(splitX,splitY,width,height) +{ + viewCount=1; + selected=0; + this->camera[0]=new PerspectiveCamera(25.0f,(float)width,(float)height,1.0f,8000.0f,0.0f,0.0f,Vector(0.0f,0.0f,0.0f),Vector(200.0f,200.0f,0.0f),Vector(0.0f,0.0f,1.0f)); + //this->camera[0]=new BottomCamera(this->width,this->height,1,8000,0,0,Vector(0,0,0),Vector(0,0,200),Vector(0,1,0)); + //this->camera[0]=new FrontCamera(this->width,this->height,1,8000,0,0,Vector(0,0,0),Vector(0,200,0),Vector(0,0,1)); + //this->camera[0]=new BackCamera(this->width,this->height,1,8000,0,0,Vector(0,0,0),Vector(0,200,0),Vector(0,0,1)); + //this->camera[0]=new RightCamera(this->width,this->height,1,8000,0,0,Vector(0,0,0),Vector(200,0,0),Vector(0,0,1)); + //this->camera[0]=new LeftCamera(this->width,this->height,1,8000,0,0,Vector(0,0,0),Vector(200,0,0),Vector(0,0,1)); + //this->camera[0]=new TopCamera(this->width,this->height,1,8000,0,0,Vector(0,0,0),Vector(0,0,200),Vector(0,1,0)); +} + +SingleView::~SingleView(void) +{ + delete this->camera[0]; +} diff --git a/SingleView.h b/SingleView.h new file mode 100755 index 0000000..ad99904 --- /dev/null +++ b/SingleView.h @@ -0,0 +1,242 @@ +#pragma once +#include "Global.h" +#include "splitedview.h" +#include + +class SingleView:public SplitedView +{ +public: + SingleView(size_t splitX,size_t splitY,size_t width,size_t height); + + CameraMode::__Enum setView(size_t index) + { + index; + camera[0]->setCamera(); + return camera[0]->type._value; + //camera[0]->setCameraForSelectionS(); + }; + + bool onPanPress(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÒ»ÏÂÊó±êÔÚÄĸöÇøÓòÖÐ + camera[selected]->onPanPress(x,y); + return true; + }; + + bool onPanDrag(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏһϵ±Ç°Ñ¡ÔñµÄpanÇøÓò + camera[selected]->pan(x,y); + return true; + }; + + void onWheel(float step,size_t x,size_t y) + { + x; + y; + //ÕâÀïÒªÅжÏÒ»ÏÂÊó±êÔÚÄĸöÇøÓòÖÐ + camera[selected]->zoom(step); + }; + + bool onRotateDrag(size_t x,size_t y) + { + camera[selected]->rotate(x,y); + return true; + }; + + bool onRotatePress(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÊó±êλÖà + camera[selected]->onRotatePress(x,y); + return true; + }; + + bool onCtrlPress(size_t x,size_t y) + { + isCtrlMode=true; + ctrlSX=x; + ctrlSY=y; + return true; + }; + + bool onCtrlRelease() + { + if(isCtrlMode) + { + isCtrlMode=false; + ctrlSX=0; + ctrlSY=0; + return true; + }else + return false; + }; + + bool onCtrlDrag(size_t x,size_t y) + { + if(isCtrlMode) + { + camera[selected]->setCamera(); + Vector horizontalDir(camera[selected]->getHorizontalDir()); + theScene->ctrlDrag(horizontalDir,camera[selected]->up,x-ctrlSX,y-ctrlSY,isExtrude); + isExtrude=false; + ctrlSX=x; + ctrlSY=y; + return true; + } + else + return false; + }; + + bool onRotateRelease() + { + camera[selected]->onRotateRelease(); + return true; + }; + + bool onPanRelease() + { + camera[selected]->onPanRelease(0,0); + return true; + } + + void update(size_t theSplitX,size_t theSplitY,size_t theWidth,size_t theHeight) + { + splitX=theSplitX; + splitY=theSplitY; + width=theWidth; + height=theHeight; + camera[0]->updateSize(0.0f,0.0f,(float)width,(float)height); + }; + + bool onSelectionPress(size_t x,size_t y) + { + isSelectionMode=true; + selectionSX=x; + selectionSY=y; + selectionEX=x; + selectionEY=y; + return true; + }; + + bool onSelectionDrag(size_t x,size_t y) + { + if(isSelectionMode) + { + selectionEX=x; + selectionEY=y; + return true; + } + else + return false; + }; + + bool onSingleSideSelectionRelease(bool isAppend) + { + if(isSelectionMode) + { + size_t x1=(selectionSX>selectionEX)?selectionEX:selectionSX; + size_t y1=(selectionSY>selectionEY)?selectionEY:selectionSY; + size_t x2=(selectionSX>selectionEX)?selectionSX:selectionEX; + size_t y2=(selectionSY>selectionEY)?selectionSY:selectionEY; + camera[selected]->setCameraForSelectionS(); + theScene->selectSingleSide(x1,y1,x2,y2,height,isAppend); + isSelectionMode=false; + selectionSX=0; + selectionSY=0; + selectionEX=0; + selectionEY=0; + return true; + } + else + return false; + }; + + bool onDualSideSelectionRelease(bool isAppend) + { + if(isSelectionMode) + { + size_t x1=(selectionSX>selectionEX)?selectionEX:selectionSX; + size_t y1=(selectionSY>selectionEY)?selectionEY:selectionSY; + size_t x2=(selectionSX>selectionEX)?selectionSX:selectionEX; + size_t y2=(selectionSY>selectionEY)?selectionSY:selectionEY; + camera[selected]->setCameraForSelectionD(x1,y1,x2,y2,height); + theScene->selectDualSide(isAppend); + isSelectionMode=false; + selectionSX=0; + selectionSY=0; + selectionEX=0; + selectionEY=0; + return true; + } + else + return false; + }; + + bool onAxisDrag(size_t x,size_t y) + { + //ÕâÀïÒª¼ÆËãÏòÁ¿µÄµã³Ë + if(isAxisMode) + { + camera[0]->setCamera(); + //ÕâÀï±ØÐëÇ¿ÖÆת»» + Vector m((float)((int)x-(int)axisDragSX),(float)((int)y-(int)axisDragSY),0.0f); + float work=psVECDOT(cursorDir,m); + theScene->axisDrag(work,cursorMode,cursorDir.x,cursorDir.y); + axisDragSX=x; + axisDragSY=y; + return true; + } + else + return false; + }; + + bool onAxisRelease() + { + if(isAxisMode) + { + isAxisMode=false; + theScene->axisRelease(); + axisDragSX=0; + axisDragSY=0; + return true; + } + else + return false; + } + + bool onAxisPress(size_t x,size_t y) + { + camera[selected]->setCameraForSelectionS(); + cursorDir.z=0; + bool result=theScene->isAxisSelected(camera[selected]->type._value,camera[selected]->getEye(),height,x,y,cursorDir.x,cursorDir.y,cursorMode); + if(result) + { + axisDragSX=x; + axisDragSY=y; + cursorDir.normalize(); + isAxisMode=true; + } + return result; + }; + + + void onPaint() + { + if(isSelectionMode) + { + glEnable(GL_ALPHA_TEST); + glColor4ub(0,0,255,125); + glBegin(GL_QUADS); + glVertex2i(selectionSX,selectionSY); + glVertex2i(selectionEX,selectionSY); + glVertex2i(selectionEX,selectionEY); + glVertex2i(selectionSX,selectionEY); + glEnd(); + glDisable(GL_ALPHA_TEST); + glColor3ub(255,255,255); + } + }; + +public: + ~SingleView(void); +}; \ No newline at end of file diff --git a/SplitedView.cpp b/SplitedView.cpp new file mode 100755 index 0000000..400748a --- /dev/null +++ b/SplitedView.cpp @@ -0,0 +1,16 @@ +#include "SplitedView.h" + +SplitedView::SplitedView(unsigned int splitX,unsigned int splitY,unsigned int width,unsigned height):isAxisMode(false),isSelectionMode(false),selectionSX(0),selectionSY(0),selectionEX(0),selectionEY(0),cursorMode(0),axisDragSX(0),axisDragSY(0),cursorDir(0),isCtrlMode(false),ctrlSX(0),ctrlSY(0),isExtrude(false) +{ + this->splitX=splitX; + this->splitY=splitY; + this->width=width; + this->height=height; + this->selected=0; + panIndex=-1; + rotateIndex=-1; + zoomIndex=-1; +} + + + diff --git a/SplitedView.h b/SplitedView.h new file mode 100755 index 0000000..9be3222 --- /dev/null +++ b/SplitedView.h @@ -0,0 +1,269 @@ +#pragma once +#include "LeftCamera.h" +#include "RightCamera.h" +#include "BackCamera.h" +#include "FrontCamera.h" +#include "BottomCamera.h" +#include "TopCamera.h" +#include "PerspectiveCamera.h" + +#include +#include +#include + +class SplitedView +{ +protected: + size_t splitX; + size_t splitY; + size_t width; + size_t height; + size_t selected; + int panIndex; + int zoomIndex; + int rotateIndex; + Camera *camera[4]; + size_t selectionSX; + size_t selectionSY; + size_t selectionEX; + size_t selectionEY; + size_t axisDragSX; + size_t axisDragSY; + size_t axisDragEX; + size_t axisDragEY; + bool isSelectionMode; + bool isAxisMode; + bool isExtrude; + Vector cursorDir; + int cursorMode; + bool isCtrlMode; + size_t ctrlSX; + size_t ctrlSY; +public: + size_t viewCount; + +public: + void changeCamera(CameraMode::__Enum type) + { + size_t cameraWidth=(size_t)camera[selected]->width; + size_t cameraHeight=(size_t)camera[selected]->height; + size_t cameraStartX=(size_t)camera[selected]->startX; + size_t cameraStartY=(size_t)camera[selected]->startY; + delete camera[this->selected]; + camera[selected]=NULL; + if(type==CameraMode::Perspective) + { + camera[selected]=new PerspectiveCamera(25,(float)cameraWidth,(float)cameraHeight,1,8000,(float)cameraStartX,(float)cameraStartY,Vector(0,0,0),Vector(200,200,0),Vector(0,0,1)); + } + else if(type==CameraMode::Top) + { + camera[selected]=new TopCamera((float)cameraWidth,(float)cameraHeight,1,8000,(float)cameraStartX,(float)cameraStartY,Vector(0,0,0),Vector(0,0,200),Vector(0,1,0)); + } + else if(type==CameraMode::Bottom) + { + camera[selected]=new BottomCamera((float)cameraWidth,(float)cameraHeight,1,8000,(float)cameraStartX,(float)cameraStartY,Vector(0,0,0),Vector(0,0,200),Vector(0,1,0)); + } + else if(type==CameraMode::Front) + { + camera[selected]=new FrontCamera((float)cameraWidth,(float)cameraHeight,1,8000,(float)cameraStartX,(float)cameraStartY,Vector(0,0,0),Vector(0,200,0),Vector(0,0,1)); + } + else if(type==CameraMode::Back) + { + camera[selected]=new BackCamera((float)cameraWidth,(float)cameraHeight,1,8000,(float)cameraStartX,(float)cameraStartY,Vector(0,0,0),Vector(0,200,0),Vector(0,0,1)); + } + else if(type==CameraMode::Left) + { + camera[selected]=new LeftCamera((float)cameraWidth,(float)cameraHeight,1,8000,(float)cameraStartX,(float)cameraStartY,Vector(0,0,0),Vector(200,0,0),Vector(0,0,1)); + } + else if(type==CameraMode::Right) + { + camera[selected]=new RightCamera((float)cameraWidth,(float)cameraHeight,1,8000,(float)cameraStartX,(float)cameraStartY,Vector(0,0,0),Vector(200,0,0),Vector(0,0,1)); + } + }; + + void getViewportImage(GLuint &texID,std::string &path,Vector &position,size_t &width,size_t &height) + { + camera[selected]->getViewportImage(texID,path,position,width,height); + } + + void setViewportImage(const char *path,GLuint imageID,Vector &position,size_t width,size_t height) + { + camera[selected]->setReferenceImage(path,imageID,position,width,height); + } + + void disableReference() + { + camera[selected]->disableReference(); + } + + void onExtrudeDown() + { + isExtrude=true; + }; + + void onExtrudeRelease() + { + isExtrude=false; + }; + + void switchGird() + { + camera[selected]->showGird=!(camera[selected]->showGird); + }; + + virtual bool onCtrlPress(size_t x,size_t y) + { + x;y; + return false; + }; + + virtual bool onCtrlDrag(size_t x,size_t y) + { + x;y; + return false; + }; + + virtual bool onPanPress(size_t x,size_t y) + { + x; + y; + return false; + }; + + virtual bool onAxisPress(size_t x,size_t y) + { + x;y; + return false; + }; + + virtual bool onAxisDrag(size_t x,size_t y) + { + x;y; + return false; + }; + + virtual bool onAxisRelease() + { + return false; + }; + + virtual bool onCtrlRelease() + { + return false; + }; + + virtual bool onPanDrag(size_t x,size_t y) + { + x; + y; + return false; + }; + + virtual bool onPanRelease() + { + return false; + }; + + virtual bool onRotateDrag(size_t x,size_t y) + { + x; + y; + return false; + }; + + virtual bool onRotateRelease() + { + return false; + }; + + virtual bool onRotatePress(size_t x,size_t y) + { + x; + y; + return false; + }; + + virtual bool onSelectionPress(size_t x,size_t y) + { + x;y; + return false; + }; + + virtual CameraMode::__Enum setView(size_t i) + { + return CameraMode::Perspective; + i; + }; + + Vector getEye(size_t i) + { + return camera[i]->getEye(); + }; + + virtual void onWheel(float step,size_t x,size_t y) + { + step; + x; + y; + }; + + virtual void update(size_t splitX,size_t splitY,size_t width,size_t height) + { + splitX; + splitY; + width; + height; + }; + + virtual void setViewport(size_t index) + { + index; + }; + + virtual bool onDrag(size_t x,size_t y) + { + x;y; + return false; + } + + virtual bool onLeftDown(size_t x,size_t y) + { + x; + y; + return false; + } + + virtual void onPaint(void) + { + } + + virtual bool onSelectionDrag(size_t x,size_t y) + { + x; + y; + return false; + }; + + virtual bool onSingleSideSelectionRelease(bool isAppend) + { + isAppend; + return false; + }; + + virtual bool onDualSideSelectionRelease(bool isAppend) + { + isAppend; + return false; + }; + + SplitedView(size_t splitX,size_t splitY,size_t width,size_t height); + +public: + ~SplitedView(void) + { + delete this->camera[0]; + delete this->camera[1]; + delete this->camera[2]; + delete this->camera[3]; + } +}; \ No newline at end of file diff --git a/SubdivideEdge.cpp b/SubdivideEdge.cpp new file mode 100755 index 0000000..4fc9086 --- /dev/null +++ b/SubdivideEdge.cpp @@ -0,0 +1,13 @@ +#include "SubdivideEdge.h" + +SubdivideEdge::SubdivideEdge(void):ElementBase(),start(0),end(0),left(0),right(0),subdivideId(0),subdivideStep(0),middle(0),startEdge(0),endEdge(0),rightEdge(0),leftEdge(0) +{ +} + +SubdivideEdge::SubdivideEdge(size_t theStart,size_t theEnd):ElementBase(),start(theStart),end(theEnd),left(0),right(0),subdivideId(0),subdivideStep(0),middle(0),startEdge(0),endEdge(0),rightEdge(0),leftEdge(0) +{ +} + +SubdivideEdge::~SubdivideEdge(void) +{ +} diff --git a/SubdivideEdge.h b/SubdivideEdge.h new file mode 100755 index 0000000..60cc6f6 --- /dev/null +++ b/SubdivideEdge.h @@ -0,0 +1,28 @@ +#pragma once +#include "ElementBase.h" + +class SubdivideEdge:public ElementBase +{ + friend class Object; +public: + size_t start; + size_t end; + size_t left; + size_t right; + +private: + int subdivideId; + int subdivideStep; + int middle; + int startEdge; + int endEdge; + int rightEdge; + int leftEdge; + +public: + SubdivideEdge(void); + SubdivideEdge(size_t theStart,size_t theEnd); + +public: + ~SubdivideEdge(void); +}; diff --git a/SubdivideFace.cpp b/SubdivideFace.cpp new file mode 100755 index 0000000..6a839a4 --- /dev/null +++ b/SubdivideFace.cpp @@ -0,0 +1,17 @@ +#include "SubdivideFace.h" + +SubdivideFace::SubdivideFace(int v1, int v2, int v3, int v4):ElementBase(),center(0),normal() +{ + edge[0]=v1; + edge[1]=v2; + edge[2]=v3; + edge[3]=v4; + subFace[0]=0; + subFace[1]=0; + subFace[2]=0; + subFace[3]=0; +} + +SubdivideFace::~SubdivideFace(void) +{ +} diff --git a/SubdivideFace.h b/SubdivideFace.h new file mode 100755 index 0000000..724e831 --- /dev/null +++ b/SubdivideFace.h @@ -0,0 +1,19 @@ +#pragma once +#include "ElementBase.h" +#include "SubdivideVertex.h" + +class SubdivideFace:public ElementBase +{ + friend class Object; +private: + int edge[4]; + int center; + int subFace[4]; + Vector normal; + +public: + SubdivideFace(int v1,int v2,int v3,int v4); + +public: + ~SubdivideFace(void); +}; diff --git a/SubdivideLevel.cpp b/SubdivideLevel.cpp new file mode 100755 index 0000000..6f9ff50 --- /dev/null +++ b/SubdivideLevel.cpp @@ -0,0 +1,7 @@ +#include "SubdivideLevel.h" + +SubdivideLevel::SubdivideLevel(void) +{ +} + + diff --git a/SubdivideLevel.h b/SubdivideLevel.h new file mode 100755 index 0000000..0e56059 --- /dev/null +++ b/SubdivideLevel.h @@ -0,0 +1,25 @@ +#pragma once +#include "IndexArray.h" +#include "SubdivideVertex.h" +#include "SubdivideEdge.h" +#include "SubdivideFace.h" + +class SubdivideLevel +{ +public: + IndexArray vertex; + IndexArray edge; + IndexArray face; +public: + SubdivideLevel(void); + SubdivideLevel(size_t v,size_t e,size_t f) + { + vertex.reserve(v); + edge.reserve(e); + face.reserve(f); + }; +public: + ~SubdivideLevel(void) + { + }; +}; diff --git a/SubdivideVertex.cpp b/SubdivideVertex.cpp new file mode 100755 index 0000000..cb1675e --- /dev/null +++ b/SubdivideVertex.cpp @@ -0,0 +1,35 @@ +#include "SubdivideVertex.h" + +SubdivideVertex::SubdivideVertex(void):ElementBase(),position(0),normal(0),edgeVertex(false),subdivideId(0),subdivideStep(0),nextLevel(0) +{ + adjacentEdge.reserve(5); +} + +SubdivideVertex::SubdivideVertex(Vector &pos,Vector &nor):position(pos),normal(nor),edgeVertex(false),subdivideId(0),subdivideStep(0),nextLevel(0) +{ + adjacentEdge.reserve(5); +} + +SubdivideVertex::SubdivideVertex(Vector &pos):position(pos),normal(0),edgeVertex(false),subdivideId(0),subdivideStep(0),nextLevel(0) +{ + adjacentEdge.reserve(5); +} + +SubdivideVertex::SubdivideVertex(float p1,float p2,float p3):position(p1,p2,p3),normal(0),edgeVertex(false),subdivideId(0),subdivideStep(0),nextLevel(0) +{ + adjacentEdge.reserve(5); +} + +SubdivideVertex::SubdivideVertex(float p1,float p2,float p3,float n1,float n2,float n3):position(p1,p2,p3),normal(n1,n2,n3),edgeVertex(false),subdivideId(0),subdivideStep(0),nextLevel(0) +{ + adjacentEdge.reserve(5); +} + +inline const int& SubdivideVertex::operator [](size_t i) +{ + return adjacentEdge[i]; +} + +SubdivideVertex::~SubdivideVertex(void) +{ +} \ No newline at end of file diff --git a/SubdivideVertex.h b/SubdivideVertex.h new file mode 100755 index 0000000..e577b15 --- /dev/null +++ b/SubdivideVertex.h @@ -0,0 +1,31 @@ +#pragma once +//#include +#include "ElementBase.h" +#include "Vector.h" +#include + +class SubdivideVertex:public ElementBase +{ +friend class Object; +public: + Vector position; + Vector normal; + std::vector adjacentEdge; + +private: + int nextLevel; + int subdivideId; + int subdivideStep; + bool edgeVertex; + +public: + SubdivideVertex(void); + SubdivideVertex(Vector &pos,Vector &nor); + SubdivideVertex(Vector &pos); + SubdivideVertex(float p1,float p2,float p3); + SubdivideVertex(float p1,float p2,float p3,float n1,float n2,float n3); + const int& operator [](size_t i); + +public: + ~SubdivideVertex(void); +}; \ No newline at end of file diff --git a/TheMath.h b/TheMath.h new file mode 100755 index 0000000..a4b089e --- /dev/null +++ b/TheMath.h @@ -0,0 +1,45 @@ +#pragma once + +#include +#include + +//! random floating point number +#define psFRAND (((rand()%10000)-5000)/5000.0f) +//! absolute random floating point number +#define psFABSRAND ((rand()%10000)/10000.0f) + +//! two vectors dot product +#define psVECDOT(v1,v2) ((v1).x*(v2).x+(v1).y*(v2).y+(v1).z*(v2).z) + +//! lower bound for overflow detection +#define psSMALL 1.0e-4f +//! upper bound for overflow detection +#define psBIG 1.0e+10f +//! underflow detection +#define psISZERO(a) ((a)>-FLY_SMALL && (a)splitX) + { + if(selected==0) + { + return false; + } + else + { + this->selected=0; + return true; + } + } + else + if(x>this->splitX&&ysplitY) + { + if(selected==1) + { + return false; + } + else + { + this->selected=1; + return true; + } + } + else + if(x>this->splitX&&y>this->splitY) + { + if(selected==2) + { + return false; + } + else + { + this->selected=2; + return true; + } + } + else + { + return false; + } +} + +void ThreeView::onPaint(void) +{ + glColor3ub(255,255,255); + glBegin(GL_QUADS); + glVertex2i(this->splitX-1,0); + glVertex2i(this->splitX+1,0); + glVertex2i(this->splitX+1,this->height); + glVertex2i(this->splitX-1,this->height); + glVertex2i(this->splitX-1,this->splitY-1); + glVertex2i(this->width,this->splitY-1); + glVertex2i(this->width,this->splitY+1); + glVertex2i(this->splitX-1,this->splitY+1); + glEnd(); + glColor3ub(255,255,0); + if(this->selected==0) + { + glBegin(GL_LINES); + glVertex2i(2,2); + glVertex2i(this->splitX-2,2); + glVertex2i(this->splitX-2,2); + glVertex2i(this->splitX-2,this->height-2); + glVertex2i(this->splitX-2,this->height-2); + glVertex2i(2,this->height-2); + glVertex2i(2,this->height-2); + glVertex2i(2,2); + glEnd(); + } + else + if(this->selected==1) + { + glBegin(GL_LINES); + glVertex2i(this->splitX+2,2); + glVertex2i(this->width-2,2); + glVertex2i(this->width-2,2); + glVertex2i(this->width-2,this->splitY-2); + glVertex2i(this->width-2,this->splitY-2); + glVertex2i(this->splitX+2,this->splitY-2); + glVertex2i(this->splitX+2,this->splitY-2); + glVertex2i(this->splitX+2,2); + glEnd(); + } + else + if(this->selected==2) + { + glBegin(GL_LINES); + glVertex2i(this->splitX+2,this->splitY+2); + glVertex2i(this->width-2,this->splitY+2); + glVertex2i(this->width-2,this->splitY+2); + glVertex2i(this->width-2,this->height-2); + glVertex2i(this->width-2,this->height-2); + glVertex2i(this->splitX+2,this->height-2); + glVertex2i(this->splitX+2,this->height-2); + glVertex2i(this->splitX+2,this->splitY+2); + glEnd(); + } + + if(isSelectionMode) + { + glEnable(GL_ALPHA_TEST); + glColor4ub(0,0,255,125); + glBegin(GL_QUADS); + glVertex2i(selectionSX,selectionSY); + glVertex2i(selectionEX,selectionSY); + glVertex2i(selectionEX,selectionEY); + glVertex2i(selectionSX,selectionEY); + glEnd(); + glDisable(GL_ALPHA_TEST); + + } + + glColor3ub(255,255,255); +} \ No newline at end of file diff --git a/ThreeView.h b/ThreeView.h new file mode 100755 index 0000000..dbbc90c --- /dev/null +++ b/ThreeView.h @@ -0,0 +1,266 @@ +#pragma once +#include "Global.h" +#include "splitedview.h" + +class ThreeView:public SplitedView +{ +public: + ThreeView(unsigned int splitX,unsigned int splitY,unsigned int width,unsigned int height); + void onPaint(); + bool onLeftDown(unsigned int x,unsigned int y); + + CameraMode::__Enum setView(size_t index) + { + this->camera[index]->setCamera(); + return camera[index]->type._value; + }; + + bool onPanPress(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÒ»ÏÂÊó±êÔÚÄĸöÇøÓòÖÐ + if(selected==0 && xonPanPress(x,y); + } + else if(selected==1 && x>splitX && yonPanPress(x,y); + } + else if(selected==2 && x>splitX && y>splitY) + { + camera[selected]->onPanPress(x,y); + } + return true; + }; + + bool onPanDrag(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏһϵ±Ç°Ñ¡ÔñµÄpanÇøÓò + camera[selected]->pan(x,y); + return true; + }; + + bool onAxisDrag(size_t x,size_t y) + { + //if((selected==0 && xsplitX)){ + //ÕâÀïÒª¼ÆËãÏòÁ¿µÄµã³Ë + if(isAxisMode) + {camera[selected]->setCamera(); + //ÕâÀï±ØÐëÇ¿ÖÆת»» + Vector m((float)((int)x-(int)axisDragSX),(float)((int)y-(int)axisDragSY),0.0f); + float work=psVECDOT(cursorDir,m); + theScene->axisDrag(work,cursorMode,cursorDir.x,cursorDir.y); + axisDragSX=x; + axisDragSY=y; + return true; + } + else + return false;//}else return false; + }; + + bool onAxisRelease() + { + if(isAxisMode) + { + isAxisMode=false; + theScene->axisRelease(); + axisDragSX=0; + axisDragSY=0; + return true; + } + else + return false; + } + + bool onCtrlPress(size_t x,size_t y) + { + isCtrlMode=true; + ctrlSX=x; + ctrlSY=y; + return true; + }; + + bool onCtrlRelease() + { + if(isCtrlMode) + { + isCtrlMode=false; + ctrlSX=0; + ctrlSY=0; + return true; + }else + return false; + }; + + bool onCtrlDrag(size_t x,size_t y) + { + if(isCtrlMode) + { + camera[selected]->setCamera(); + Vector horizontalDir(camera[selected]->getHorizontalDir()); + theScene->ctrlDrag(horizontalDir,camera[selected]->up,x-ctrlSX,y-ctrlSY,isExtrude); + isExtrude=false; + ctrlSX=x; + ctrlSY=y; + return true; + } + else + return false; + }; + + bool onAxisPress(size_t x,size_t y) + { + //if((selected==0 && xsplitX)){ + camera[selected]->setCameraForSelectionS(); + cursorDir.z=0; + bool result=theScene->isAxisSelected(camera[selected]->type._value,camera[selected]->getEye(),height,x,y,cursorDir.x,cursorDir.y,cursorMode); + if(result) + { + axisDragSX=x; + axisDragSY=y; + cursorDir.normalize(); + isAxisMode=true; + } + return result; + /*} + else + { + return false; + }*/ + }; + + bool onSelectionPress(size_t x,size_t y) + { + isSelectionMode=true; + selectionSX=x; + selectionSY=y; + selectionEX=x; + selectionEY=y; + return true; + }; + + bool onSelectionDrag(size_t x,size_t y) + { + if(isSelectionMode) + { + selectionEX=x; + selectionEY=y; + return true; + }else + return false; + }; + + bool onSingleSideSelectionRelease(bool isAppend) + { + if(isSelectionMode) + { + size_t x1=(selectionSX>selectionEX)?selectionEX:selectionSX; + size_t y1=(selectionSY>selectionEY)?selectionEY:selectionSY; + size_t x2=(selectionSX>selectionEX)?selectionSX:selectionEX; + size_t y2=(selectionSY>selectionEY)?selectionSY:selectionEY; + camera[selected]->setCameraForSelectionS(); + theScene->selectSingleSide(x1,y1,x2,y2,height,isAppend); + isSelectionMode=false; + selectionSX=0; + selectionSY=0; + selectionEX=0; + selectionEY=0; + return true; + } + else + return false; + }; + + bool onDualSideSelectionRelease(bool isAppend) + { + if(isSelectionMode) + { + size_t x1=(selectionSX>selectionEX)?selectionEX:selectionSX; + size_t y1=(selectionSY>selectionEY)?selectionEY:selectionSY; + size_t x2=(selectionSX>selectionEX)?selectionSX:selectionEX; + size_t y2=(selectionSY>selectionEY)?selectionSY:selectionEY; + camera[selected]->setCameraForSelectionD(x1,y1,x2,y2,height); + theScene->selectDualSide(isAppend); + isSelectionMode=false; + selectionSX=0; + selectionSY=0; + selectionEX=0; + selectionEY=0; + return true; + } + else + return false; + }; + + void onWheel(float step,size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÒ»ÏÂÊó±êÔÚÄĸöÇøÓòÖÐ + if(selected==0 && xzoom(step); + } + else if(selected==1 && x>splitX && yzoom(step); + } + else if(selected==2 && x>splitX && y>splitY) + { + camera[selected]->zoom(step); + } + }; + + bool onRotateDrag(size_t x,size_t y) + { + camera[selected]->rotate(x,y); + return true; + }; + + bool onRotatePress(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÊó±êλÖà + if(selected==0 && xonRotatePress(x,y); + } + else if(selected==1 && x>splitX && yonRotatePress(x,y); + } + else if(selected==2 && x>splitX && y>splitY) + { + camera[selected]->onRotatePress(x,y); + } + return true; + }; + + bool onRotateRelease() + { + camera[selected]->onRotateRelease(); + return true; + }; + + bool onPanRelease() + { + camera[selected]->onPanRelease(0,0); + return true; + }; + + void update(size_t theSplitX,size_t theSplitY,size_t theWidth,size_t theHeight) + { + splitX=theSplitX; + splitY=theSplitY; + width=theWidth; + height=theHeight; + camera[0]->updateSize(0.0f,0.0f,(float)splitX,(float)height); + camera[2]->updateSize((float)splitX,0.0,(float)(width-splitX),(float)splitY); + camera[1]->updateSize((float)splitX,(float)splitY,(float)(width-splitX),(float)(height-splitY)); + }; + +public: + ~ThreeView(void) + { + delete camera[0]; + delete camera[1]; + delete camera[2]; + } +}; diff --git a/ToolStrip.cpp b/ToolStrip.cpp new file mode 100755 index 0000000..c5967d1 --- /dev/null +++ b/ToolStrip.cpp @@ -0,0 +1 @@ +#include "ToolStrip.h" \ No newline at end of file diff --git a/ToolStrip.h b/ToolStrip.h new file mode 100755 index 0000000..cb8b2c6 --- /dev/null +++ b/ToolStrip.h @@ -0,0 +1,248 @@ +#pragma once +#include "Button.h" +#include + +class ToolStrip +{ +public: + size_t callID; + Button *currentIn; + int x; + int y; + size_t spacer; + size_t hPadding; + size_t vPadding; + float textLeftX1; + float textLeftY1; + float textLeftX2; + float textLeftY2; + float textBGX1; + float textBGY1; + float textBGX2; + float textBGY2; + float textRightX1; + float textRightY1; + float textRightX2; + float textRightY2; + size_t width; + size_t height; + size_t bSX; + size_t bSY; + bool isH; + std::vector buttonSet; + GLuint textureID; +public: + ToolStrip(int theX,int theY,size_t theWidth,size_t theHeight,bool theIsH,size_t buttonNum,float theTextLeftX1,float theTextLeftY1,float theTextLeftX2,float theTextLeftY2,float theTextBGX1,float theTextBGY1,float theTextBGX2,float theTextBGY2,float theTextRightX1,float theTextRightY1,float theTextRightX2,float theTextRightY2) + :currentIn(NULL),x(theX),y(theY),width(theWidth),height(theHeight),isH(theIsH),spacer(10),hPadding(5),vPadding(5),bSY(32),bSX(32),textLeftX1(theTextLeftX1),textLeftY1(theTextLeftY1),textLeftX2(theTextLeftX2),textLeftY2(theTextLeftY2),textBGX1(theTextBGX1),textBGY1(theTextBGY1),textBGX2(theTextBGX2),textBGY2(theTextBGY2),textRightX1(theTextRightX1),textRightY1(theTextRightY1),textRightX2(theTextRightX2),textRightY2(theTextRightY2) + { + callID=glGenLists(1); + buttonSet.reserve(buttonNum); + }; + void add(Button *theButton) + { + buttonSet.push_back(theButton); + theButton->updateSize(bSX,bSY); + }; + void updateButtonPosition() + { + if(isH) + { + int tempX=x+hPadding; + int tempY=y+vPadding; + for(size_t i=0;iupdatePosition(tempX,tempY); + tempX+=spacer+bSX; + } + width=buttonSet.size()*bSX+hPadding+hPadding+spacer*(buttonSet.size()-1); + height=42; + } + else + { + int tempX=x+hPadding; + int tempY=y+vPadding; + for(size_t i=0;iupdatePosition(tempX,tempY); + tempY+=spacer+bSY; + } + width=42; + height=buttonSet.size()*bSY+vPadding+vPadding+spacer*(buttonSet.size()-1); + } + }; + + + ButtonEventType onLeftRelease() + { + if(currentIn) + { + return currentIn->onLeftRelease(); + } + else + { + return ButtonEventType::Nothing; + } + }; + + bool onLeftPress(int mx,int my) + { + if(currentIn) + { + if(currentIn->onLeftPress(mx,my)) + { + return true; + } + else + { + return false; + } + } + else + { + return false; + } + }; + + bool onIn(int mx,int my) + { + if(mx>x && my>y && myonIn(mx,my)) + { + currentIn=buttonSet[i]; + } + } + return true; + } + else + return false; + } + + bool onOut(int mx,int my) + { + if(currentIn) + { + if(currentIn->onOut(mx,my)) + { + currentIn=NULL; + } + else + { + return false; + } + } + + if(mxx+(int)width || my>y+(int)height) + { + return true; + }else + { + return false; + } + } + + void updatePosition(int theX,int theY) + { + x=theX; + y=theY; + updateButtonPosition(); + initializeButton(); + initialize(); + }; + void initializeButton() + { + for(size_t i=0;iinitialize(); + } + }; + void initialize() + { + if(isH) + { + glNewList(callID,GL_COMPILE); + glBegin(GL_QUADS); + glTexCoord2f(textLeftX1,textLeftY1); + glVertex2i(x,y); + glTexCoord2f(textLeftX2,textLeftY1); + glVertex2i(x+10,y); + glTexCoord2f(textLeftX2,textLeftY2); + glVertex2i(x+10,y+height); + glTexCoord2f(textLeftX1,textLeftY2); + glVertex2i(x,y+height); + + glTexCoord2f(textBGX1,textBGY1); + glVertex2i(x+10,y); + glTexCoord2f(textBGX2,textBGY1); + glVertex2i(x+width-10,y); + glTexCoord2f(textBGX2,textBGY2); + glVertex2i(x+width-10,y+height); + glTexCoord2f(textBGX1,textBGY2); + glVertex2i(x+10,y+height); + + glTexCoord2f(textRightX1,textRightY1); + glVertex2i(x+width-10,y); + glTexCoord2f(textRightX2,textRightY1); + glVertex2i(x+width,y); + glTexCoord2f(textRightX2,textRightY2); + glVertex2i(x+width,y+height); + glTexCoord2f(textRightX1,textRightY2); + glVertex2i(x+width-10,y+height); + glEnd(); + glEndList(); + } + else + { + glNewList(callID,GL_COMPILE); + glBegin(GL_QUADS); + glTexCoord2f(textLeftX1,textLeftY1); + glVertex2i(x,y); + glTexCoord2f(textLeftX2,textLeftY1); + glVertex2i(x+width,y); + glTexCoord2f(textLeftX2,textLeftY2); + glVertex2i(x+width,y+10); + glTexCoord2f(textLeftX1,textLeftY2); + glVertex2i(x,y+10); + + glTexCoord2f(textBGX1,textBGY1); + glVertex2i(x,y+10); + glTexCoord2f(textBGX2,textBGY1); + glVertex2i(x+width,y+10); + glTexCoord2f(textBGX2,textBGY2); + glVertex2i(x+width,y-10+height); + glTexCoord2f(textBGX1,textBGY2); + glVertex2i(x,y-10+height); + + glTexCoord2f(textRightX1,textRightY1); + glVertex2i(x,y+height-10); + glTexCoord2f(textRightX2,textRightY1); + glVertex2i(x+width,y+height-10); + glTexCoord2f(textRightX2,textRightY2); + glVertex2i(x+width,y+height); + glTexCoord2f(textRightX1,textRightY2); + glVertex2i(x,y+height); + glEnd(); + glEndList(); + } + }; + void onPaint() + { + glCallList(callID); + for(size_t i=0;ionPaint(); + } + + }; +public: + ~ToolStrip(void) + { + for(size_t i=0;ieye.x,this->eye.y,990,this->target.x,this->target.y,this->target.z,this->up.x,this->up.y,this->up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-width*eye.z*0.005f,width*eye.z*0.005f,-height*eye.z*0.005f,height*eye.z*0.005f,nearPlane,farPlane); + glViewport((GLint)this->startX,(GLint)this->startY,(GLint)this->width,(GLint)this->height); + drawGird(); + if(topReference && topReference->isShow) + { + topReference->onPaint(); + } + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT0, GL_POSITION, light_position); + }; + + void setCameraForSelectionS() + { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(this->eye.x,this->eye.y,990,this->target.x,this->target.y,this->target.z,this->up.x,this->up.y,this->up.z); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(-width*eye.z*0.005f,width*eye.z*0.005f,-height*eye.z*0.005f,height*eye.z*0.005f,nearPlane,farPlane); + glViewport((GLint)this->startX,(GLint)this->startY,(GLint)this->width,(GLint)this->height); + }; + + void setCameraForSelectionD(size_t x1,size_t y1,size_t x2,size_t y2,size_t h) + { + glViewport((GLint)startX,(GLint)startY,(GLint)width,(GLint)height); + GLint viewport[4]; + glGetIntegerv (GL_VIEWPORT, viewport); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + size_t sw=(x2-x1)>5?(x2-x1):5; + size_t sh=(y2-y1)>5?(y2-y1):5; + gluPickMatrix((GLdouble) (x1+x2)/2,(GLdouble) (h - (y1+y2)/2), (GLdouble)sw,(GLdouble)sh, viewport); + glOrtho(-width*eye.z*0.005f,width*eye.z*0.005f,-height*eye.z*0.005f,height*eye.z*0.005f,nearPlane,farPlane); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + gluLookAt(eye.x,eye.y,990,target.x,target.y,target.z,up.x,up.y,up.z); + }; + + void setReferenceImage(const char *path,GLuint imageID,Vector &position,size_t width,size_t height) + { + if(topReference) + { + delete topReference; + } + + topReference=new ViewportImage(path,imageID,width,height,type._value,position); + topReference->initialize(); + topReference->isShow=true; + }; + + void getViewportImage(GLuint &texID,std::string &path,Vector &position,size_t &width,size_t &height) + { + if(topReference) + { + texID=topReference->imageID; + path=topReference->path; + position=topReference->position; + width=topReference->width; + height=topReference->height; + } + else + { + texID=0; + path=""; + position.vec(0); + width=0; + height=0; + } + }; + + void disableReference() + { + topReference->isShow=false; + } + + + Vector getEye() + { + return eye*10.0f; + } + Vector getHorizontalDir() + { + return Vector(-1,0,0); + }; + void drawGird() + { + if(showGird) + { + theGird->drawXY(); + } + }; + + void zoom(float step) + { + Vector cameraDirection(0,0,-1); + this->eye+=cameraDirection*(float)(step*0.1f); + if(this->eye.z<2) this->eye.z=2; + }; + + void onPanPress(int x,int y) + { + this->isDraging=true; + this->old.x=(float)x; + this->old.y=(float)y; + }; + + void onPanRelease(int x,int y) + { + x; + y; + isDraging=false; + old.null(); + }; + + void pan(int x,int y) + { + float dx=(float)(old.x-x)*this->eye.z*0.005f; + float dy=(float)(y-old.y)*this->eye.z*0.005f; + old.x=(float)x; + old.y=(float)y; + + this->eye.x+=dx; + this->eye.y+=dy; + this->target.x+=dx; + this->target.y+=dy; + }; + + +public: + ~TopCamera(void); +}; diff --git a/TwoView.cpp b/TwoView.cpp new file mode 100755 index 0000000..e8f2f3f --- /dev/null +++ b/TwoView.cpp @@ -0,0 +1,70 @@ +#include "TwoView.h" + +TwoView::TwoView(unsigned int splitX,unsigned int splitY,unsigned int width,unsigned int height) +:SplitedView(splitX,splitY,width,height) +{ + viewCount=2; + selected=0; + camera[0]=new PerspectiveCamera(25.0f,(float)width,(float)height,1.0f,8000.0f,0.0f,0.0f,Vector(0.0f,0.0f,0.0f),Vector(200.0f,200.0f,0.0f),Vector(0.0f,0.0f,1.0f)); + camera[1]=new LeftCamera((float)width,(float)height,1.0f,8000.0f,0.0f,0.0f,Vector(0.0f,0.0f,0.0f),Vector(200.0f,0.0f,0.0f),Vector(0.0f,0.0f,1.0f)); +} + +void TwoView::onPaint(void) +{ + glColor3ub(255,255,255); + glBegin(GL_QUADS); + glVertex2i(this->splitX-1,0); + glVertex2i(this->splitX+1,0); + glVertex2i(this->splitX+1,this->height); + glVertex2i(this->splitX-1,this->height); + glEnd(); + glColor3ub(255,255,0); + if(this->selected==0) + { glBegin(GL_LINES); + glVertex2i(2,2); + glVertex2i(this->splitX-2,2); + glVertex2i(this->splitX-2,2); + glVertex2i(this->splitX-2,this->height-2); + glVertex2i(this->splitX-2,this->height-2); + glVertex2i(2,this->height-2); + glVertex2i(2,this->height-2); + glVertex2i(2,2); + glEnd(); + } + else + if(this->selected==1) + { + glBegin(GL_LINES); + glVertex2i(this->splitX+2,2); + glVertex2i(this->width-2,2); + glVertex2i(this->width-2,2); + glVertex2i(this->width-2,this->height-2); + glVertex2i(this->width-2,this->height-2); + glVertex2i(this->splitX+2,this->height-2); + glVertex2i(this->splitX+2,this->height-2); + glVertex2i(this->splitX+2,2); + glEnd(); + } +// glColor3ub(255,255,255); + + if(isSelectionMode) + { + glEnable(GL_ALPHA_TEST); + glColor4ub(0,0,255,125); + glBegin(GL_QUADS); + glVertex2i(selectionSX,selectionSY); + glVertex2i(selectionEX,selectionSY); + glVertex2i(selectionEX,selectionEY); + glVertex2i(selectionSX,selectionEY); + glEnd(); + glDisable(GL_ALPHA_TEST); + + } + glColor3ub(255,255,255); +} + +TwoView::~TwoView(void) +{ + delete camera[0]; + delete camera[1]; +} \ No newline at end of file diff --git a/TwoView.h b/TwoView.h new file mode 100755 index 0000000..af3008d --- /dev/null +++ b/TwoView.h @@ -0,0 +1,284 @@ +#pragma once +#include "Global.h" +#include "splitedview.h" + +class TwoView:public SplitedView +{ +public: + TwoView(size_t splitX,size_t splitY,size_t width,size_t height); + + void onPaint(); + + CameraMode::__Enum setView(size_t index) + { + camera[index]->setCamera(); + return camera[index]->type._value; + }; + + bool onPanPress(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÒ»ÏÂÊó±êÔÚÄĸöÇøÓòÖÐ + if(selected==0 && xonPanPress(x,y); + } + else if(selected==1 && x>splitX) + { + camera[selected]->onPanPress(x,y); + } + return true; + }; + + bool onPanDrag(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏһϵ±Ç°Ñ¡ÔñµÄpanÇøÓò + camera[selected]->pan(x,y); + return true; + }; + + void onWheel(float step,size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÒ»ÏÂÊó±êÔÚÄĸöÇøÓòÖÐ + if(selected==0 && xzoom(step); + } + else if(selected==1 && x>splitX) + { + camera[selected]->zoom(step); + } + y; + }; + + bool onRotateDrag(size_t x,size_t y) + { + camera[selected]->rotate(x,y); + return true; + }; + + bool onRotatePress(size_t x,size_t y) + { + //ÕâÀïÒªÅжÏÊó±êλÖà + if(selected==0 && xonRotatePress(x,y); + } + else if(selected==1 && x>splitX) + { + camera[selected]->onRotatePress(x,y); + } + return true; + }; + + bool onLeftDown(size_t x,size_t y) + { + y; + if(xsplitX) + { + if(selected==1) + { + return false; + } + else + { + selected=1; + return true; + } + } + else + { + return false; + } + }; + + bool onCtrlPress(size_t x,size_t y) + { + isCtrlMode=true; + ctrlSX=x; + ctrlSY=y; + return true; + }; + + bool onCtrlRelease() + { + if(isCtrlMode) + { + isCtrlMode=false; + ctrlSX=0; + ctrlSY=0; + return true; + }else + return false; + }; + + bool onCtrlDrag(size_t x,size_t y) + { + if(isCtrlMode) + { + camera[selected]->setCamera(); + Vector horizontalDir(camera[selected]->getHorizontalDir()); + theScene->ctrlDrag(horizontalDir,camera[selected]->up,x-ctrlSX,y-ctrlSY,isExtrude); + isExtrude=false; + ctrlSX=x; + ctrlSY=y; + return true; + } + else + return false; + }; + + bool onSelectionPress(size_t x,size_t y) + { + isSelectionMode=true; + selectionSX=x; + selectionSY=y; + selectionEX=x; + selectionEY=y; + return true; + }; + + bool onSelectionDrag(size_t x,size_t y) + { + if(isSelectionMode) + { + selectionEX=x; + selectionEY=y; + return true; + }else + return false; + }; + + bool onAxisDrag(size_t x,size_t y) + { + //if((selected==0 && xsplitX)){ + //ÕâÀïÒª¼ÆËãÏòÁ¿µÄµã³Ë + if(isAxisMode) + { + camera[selected]->setCamera(); + //ÕâÀï±ØÐëÇ¿ÖÆת»» + Vector m((float)((int)x-(int)axisDragSX),(float)((int)y-(int)axisDragSY),0.0f); + float work=psVECDOT(cursorDir,m); + theScene->axisDrag(work,cursorMode,cursorDir.x,cursorDir.y); + axisDragSX=x; + axisDragSY=y; + return true; + } + else + return false;//}else return false; + }; + + bool onAxisRelease() + { + if(isAxisMode) + { + isAxisMode=false; + theScene->axisRelease(); + axisDragSX=0; + axisDragSY=0; + return true; + } + else + return false; + } + + bool onAxisPress(size_t x,size_t y) + { + //if((selected==0 && xsplitX)){ + camera[selected]->setCameraForSelectionS(); + cursorDir.z=0; + bool result=theScene->isAxisSelected(camera[selected]->type._value,camera[selected]->getEye(),height,x,y,cursorDir.x,cursorDir.y,cursorMode); + if(result) + { + axisDragSX=x; + axisDragSY=y; + cursorDir.normalize(); + isAxisMode=true; + } + return result; + /*} + else + { + return false; + }*/ + }; + + bool onSingleSideSelectionRelease(bool isAppend) + { + if(isSelectionMode) + { + size_t x1=(selectionSX>selectionEX)?selectionEX:selectionSX; + size_t y1=(selectionSY>selectionEY)?selectionEY:selectionSY; + size_t x2=(selectionSX>selectionEX)?selectionSX:selectionEX; + size_t y2=(selectionSY>selectionEY)?selectionSY:selectionEY; + camera[selected]->setCameraForSelectionS(); + theScene->selectSingleSide(x1,y1,x2,y2,height,isAppend); + isSelectionMode=false; + selectionSX=0; + selectionSY=0; + selectionEX=0; + selectionEY=0; + return true; + } + else + return false; + }; + + bool onDualSideSelectionRelease(bool isAppend) + { + if(isSelectionMode) + { + size_t x1=(selectionSX>selectionEX)?selectionEX:selectionSX; + size_t y1=(selectionSY>selectionEY)?selectionEY:selectionSY; + size_t x2=(selectionSX>selectionEX)?selectionSX:selectionEX; + size_t y2=(selectionSY>selectionEY)?selectionSY:selectionEY; + camera[selected]->setCameraForSelectionD(x1,y1,x2,y2,height); + theScene->selectDualSide(isAppend); + isSelectionMode=false; + selectionSX=0; + selectionSY=0; + selectionEX=0; + selectionEY=0; + return true; + } + else + return false; + }; + + bool onRotateRelease() + { + camera[selected]->onRotateRelease(); + return true; + }; + + bool onPanRelease() + { + camera[selected]->onPanRelease(0,0); + panIndex=-1; + return true; + }; + + void update(size_t theSplitX,size_t theSplitY,size_t theWidth,size_t theHeight) + { + splitX=theSplitX; + splitY=theSplitY; + width=theWidth; + height=theHeight; + camera[0]->updateSize(0.0f,0.0f,(float)splitX,(float)height); + camera[1]->updateSize((float)splitX,0.0f,(float)(width-splitX),(float)height); + }; + +public: + ~TwoView(void); +}; \ No newline at end of file diff --git a/UILayer.cpp b/UILayer.cpp new file mode 100755 index 0000000..1b4b227 --- /dev/null +++ b/UILayer.cpp @@ -0,0 +1 @@ +#include "UILayer.h" diff --git a/UILayer.h b/UILayer.h new file mode 100755 index 0000000..f5d8080 --- /dev/null +++ b/UILayer.h @@ -0,0 +1,290 @@ +#pragma once +#include "ToolStrip.h" +#include "wx/image.h" + +class UILayer +{ +public: + size_t width; + size_t height; + ToolStrip *fileStrip; + ToolStrip *modifyModeStrip; + ToolStrip *layoutModeStrip; + ToolStrip *shadeModeStrip; + ToolStrip *createStrip; + ToolStrip *modifyStrip; + ToolStrip *helpStrip; + ToolStrip *cameraStrip; + ToolStrip *currentIn; + GLuint textureID; +public: + UILayer(size_t theWidth,size_t theHeight):currentIn(NULL),width(theWidth),height(theHeight) + { + //wxImage::AddHandler(new wxPNGHandler); + textureID=loadTexture("ui.dat"); + modifyModeStrip=new ToolStrip(1,1,42,42,false,4,0,0,42.0f/256.0f,11.0f/256.0f,0,12.0f/256.0f,0,30.0f/256.0f,0,31.0f/256.0f,42.0f/256.0f,42.0f/256.0f); + Button *vertexButton=new Button(ButtonEventType::VertexSelectionMode,109.0f/256.0f,117.0f/256.0f,141.0f/256.0f,149.0f/256.0f,32,32); + Button *edgeButton=new Button(ButtonEventType::EdgeSelectionMode,73.0f/256.0f,117.0f/256.0f,105.0f/256.0f,149.0f/256.0f,32,32); + Button *faceButton=new Button(ButtonEventType::FaceSelectionMode,37.0f/256.0f,117.0f/256.0f,69.0f/256.0f,149.0f/256.0f,32,32); + Button *objectButton=new Button(ButtonEventType::ObjectSelectionMode,1.0f/256.0f,117.0f/256.0f,33.0f/256.0f,149.0f/256.0f,32,32); + modifyModeStrip->add(vertexButton); + modifyModeStrip->add(edgeButton); + modifyModeStrip->add(faceButton); + modifyModeStrip->add(objectButton); + layoutModeStrip=new ToolStrip(1,1,42,42,false,4,0,0,42.0f/256.0f,11.0f/256.0f,0,12.0f/256.0f,0,30.0f/256.0f,0,31.0f/256.0f,42.0f/256.0f,42.0f/256.0f); + Button *singleViewButton=new Button(ButtonEventType::SingleView,1.0f/256.0f,45.0f/256.0f,33.0f/256.0f,77.0f/256.0f,32,32); + Button *twoViewButton=new Button(ButtonEventType::TwoView,37.0f/256.0f,45.0f/256.0f,69.0f/256.0f,77.0f/256.0f,32,32); + Button *threeViewButton=new Button(ButtonEventType::ThreeView,73.0f/256.0f,45.0f/256.0f,105.0f/256.0f,77.0f/256.0f,32,32); + Button *fourViewButton=new Button(ButtonEventType::FourView,109.0f/256.0f,45.0f/256.0f,141.0f/256.0f,77.0f/256.0f,32,32); + layoutModeStrip->add(singleViewButton); + layoutModeStrip->add(twoViewButton); + layoutModeStrip->add(threeViewButton); + layoutModeStrip->add(fourViewButton); + shadeModeStrip=new ToolStrip(1,1,42,42,true,4,0,0,11.0f/256.0f,42.0f/256.0f,12.0f/256.0f,0,30.0f/256.0f,0,31.0f/256.0f,0,42.0f/256.0f,42.0f/256.0f); + Button *facedButton=new Button(ButtonEventType::Faced,1.0f/256.0f,81.0f/256.0f,33.0f/256.0f,113.0f/256.0f,32,32); + Button *wireframeButton=new Button(ButtonEventType::Wireframe,37.0f/256.0f,81.0f/256.0f,69.0f/256.0f,113.0f/256.0f,32,32); + Button *wireframeFacedButton=new Button(ButtonEventType::WireframeFaced,73.0f/256.0f,9.0f/256.0f,105.0f/256.0f,41.0f/256.0f,32,32); + Button *wireButton=new Button(ButtonEventType::Wire,73.0f/256.0f,81.0f/256.0f,105.0f/256.0f,113.0f/256.0f,32,32); + Button *smoothButton=new Button(ButtonEventType::Smooth,109.0f/256.0f,81.0f/256.0f,141.0f/256.0f,113.0f/256.0f,32,32); + shadeModeStrip->add(facedButton); + shadeModeStrip->add(wireframeButton); + shadeModeStrip->add(wireframeFacedButton); + shadeModeStrip->add(wireButton); + shadeModeStrip->add(smoothButton); + fileStrip=new ToolStrip(1,1,42,42,true,4,0,0,11.0f/256.0f,42.0f/256.0f,12.0f/256.0f,0,30.0f/256.0f,0,31.0f/256.0f,0,42.0f/256.0f,42.0f/256.0f); + Button* newButton=new Button(ButtonEventType::New,1.0f/256.0f,153.0f/256.0f,33.0f/256.0f,185.0f/256.0f,32,32); + Button* openButton=new Button(ButtonEventType::Open,37.0f/256.0f,153.0f/256.0f,69.0f/256.0f,185.0f/256.0f,32,32); + Button* saveButton=new Button(ButtonEventType::Save,73.0f/256.0f,153.0f/256.0f,105.0f/256.0f,185.0f/256.0f,32,32); + Button* saveAsButton=new Button(ButtonEventType::SaveAs,145.0f/256.0f,117.0f/256.0f,177.0f/256.0f,149.0f/256.0f,32,32); + Button* undoButton=new Button(ButtonEventType::Nothing,109.0f/256.0f,153.0f/256.0f,141.0f/256.0f,185.0f/256.0f,32,32); + Button* redoButton=new Button(ButtonEventType::Nothing,145.0f/256.0f,153.0f/256.0f,177.0f/256.0f,185.0f/256.0f,32,32); + fileStrip->add(newButton); + fileStrip->add(openButton); + fileStrip->add(saveButton); + fileStrip->add(saveAsButton); + fileStrip->add(undoButton); + fileStrip->add(redoButton); + createStrip=new ToolStrip(1,1,42,42,true,4,0,0,11.0f/256.0f,42.0f/256.0f,12.0f/256.0f,0,30.0f/256.0f,0,31.0f/256.0f,0,42.0f/256.0f,42.0f/256.0f); + Button* boxButton=new Button(ButtonEventType::CreateCube,1.0f/256.0f,189.0f/256.0f,33.0f/256.0f,221.0f/256.0f,32,32); + Button* ballButton=new Button(ButtonEventType::CreateSphere,37.0f/256.0f,189.0f/256.0f,69.0f/256.0f,221.0f/256.0f,32,32); + Button* cylinderButton=new Button(ButtonEventType::CreateCylinder,73.0f/256.0f,189.0f/256.0f,105.0f/256.0f,221.0f/256.0f,32,32); + Button* planeButton=new Button(ButtonEventType::CreatePlane,109.0f/256.0f,189.0f/256.0f,141.0f/256.0f,221.0f/256.0f,32,32); + createStrip->add(boxButton); + createStrip->add(ballButton); + createStrip->add(cylinderButton); + createStrip->add(planeButton); + modifyStrip=new ToolStrip(1,1,42,42,true,4,0,0,11.0f/256.0f,42.0f/256.0f,12.0f/256.0f,0,30.0f/256.0f,0,31.0f/256.0f,0,42.0f/256.0f,42.0f/256.0f); + Button* deleteVertexButton=new Button(ButtonEventType::DeleteVertex,217.0f/256.0f,189.0f/256.0f,249.0f/256.0f,221.0f/256.0f,32,32); + Button* splitButton=new Button(ButtonEventType::Split,217.0f/256.0f,153.0f/256.0f,249.0f/256.0f,185.0f/256.0f,32,32); + Button* extrudeFaceButton=new Button(ButtonEventType::Extrude,217.0f/256.0f,117.0f/256.0f,249.0f/256.0f,149.0f/256.0f,32,32); + Button* weldButton=new Button(ButtonEventType::Collapse,217.0f/256.0f,81.0f/256.0f,249.0f/256.0f,113.0f/256.0f,32,32); + modifyStrip->add(deleteVertexButton); + modifyStrip->add(splitButton); + modifyStrip->add(extrudeFaceButton); + modifyStrip->add(weldButton); + helpStrip=new ToolStrip(1,1,42,42,true,4,0,0,11.0f/256.0f,42.0f/256.0f,12.0f/256.0f,0,30.0f/256.0f,0,31.0f/256.0f,0,42.0f/256.0f,42.0f/256.0f); + Button* screenshotButton=new Button(ButtonEventType::Screenshot,145.0f/256.0f,81.0f/256.0f,177.0f/256.0f,113.0f/256.0f,32,32); + Button* aboutButton=new Button(ButtonEventType::About,145.0f/256.0f,45.0f/256.0f,177.0f/256.0f,77.0f/256.0f,32,32); + helpStrip->add(screenshotButton); + helpStrip->add(aboutButton); + cameraStrip=new ToolStrip(1,1,42,42,true,4,0,0,11.0f/256.0f,42.0f/256.0f,12.0f/256.0f,0,30.0f/256.0f,0,31.0f/256.0f,0,42.0f/256.0f,42.0f/256.0f); + Button* bottomButton=new Button(ButtonEventType::CameraBottom,217.0f/256.0f,45.0f/256.0f,249.0f/256.0f,77.0f/256.0f,32,32); + Button* topButton=new Button(ButtonEventType::CameraTop,181.0f/256.0f,81.0f/256.0f,213.0f/256.0f,113.0f/256.0f,32,32); + Button* leftButton=new Button(ButtonEventType::CameraLeft,181.0f/256.0f,117.0f/256.0f,213.0f/256.0f,149.0f/256.0f,32,32); + Button* rightButton=new Button(ButtonEventType::CameraRight,181.0f/256.0f,153.0f/256.0f,213.0f/256.0f,185.0f/256.0f,32,32); + Button* frontButton=new Button(ButtonEventType::CameraFront,181.0f/256.0f,189.0f/256.0f,213.0f/256.0f,221.0f/256.0f,32,32); + Button* backButton=new Button(ButtonEventType::CameraBack,145.0f/256.0f,189.0f/256.0f,177.0f/256.0f,221.0f/256.0f,32,32); + Button* perspectiveButton=new Button(ButtonEventType::CameraPerspective,181.0f/256.0f,45.0f/256.0f,213.0f/256.0f,77.0f/256.0f,32,32); + cameraStrip->add(bottomButton); + cameraStrip->add(topButton); + cameraStrip->add(leftButton); + cameraStrip->add(rightButton); + cameraStrip->add(frontButton); + cameraStrip->add(backButton); + cameraStrip->add(perspectiveButton); + }; + + void updateCameraStrip() + { + cameraStrip->updatePosition((int)(((int)(width-shadeModeStrip->width-10-cameraStrip->width))*0.5f)+shadeModeStrip->width+10,height-shadeModeStrip->height-1); + } + + bool onMoving(int x,int y) + { + if(currentIn) + { + if(currentIn->onOut(x,y)) currentIn=NULL; + } + if(fileStrip->onIn(x,y)) + { + currentIn=fileStrip; + return true; + } + else + if(modifyModeStrip->onIn(x,y)) + { + currentIn=modifyModeStrip; + return true; + } + else + if(layoutModeStrip->onIn(x,y)) + { + currentIn=layoutModeStrip; + return true; + } + else + if(shadeModeStrip->onIn(x,y)) + { + currentIn=shadeModeStrip; + return true; + } + else + if(createStrip->onIn(x,y)) + { + currentIn=createStrip; + return true; + } + else + if(modifyStrip->onIn(x,y)) + { + currentIn=modifyStrip; + return true; + } + else + if(helpStrip->onIn(x,y)) + { + currentIn=helpStrip; + return true; + } + else + if(cameraStrip->onIn(x,y)) + { + currentIn=cameraStrip; + return true; + } + else + return false; + } + + ButtonEventType onLeftRelease() + { + if(currentIn) + { + return currentIn->onLeftRelease(); + } + else + return ButtonEventType::Nothing; + }; + + bool onLeftPress(int mx,int my) + { + if(currentIn) + { + if(currentIn->onLeftPress(mx,my)) + return true; + return false; + } + else + return false; + } + + void updateModifyStrip() + { + modifyStrip->updatePosition((int)(((int)(width-(fileStrip->width+10+createStrip->width+10+modifyStrip->width+10+helpStrip->width)))*0.5f)+fileStrip->width+20+createStrip->width,1); + }; + + void updateHelpStrip() + { + helpStrip->updatePosition((int)(((int)(width-(fileStrip->width+10+createStrip->width+10+modifyStrip->width+10+helpStrip->width)))*0.5f)+fileStrip->width+30+createStrip->width+modifyStrip->width,1); + }; + + void updateCreateStrip() + { + createStrip->updatePosition((int)(((int)(width-(fileStrip->width+10+createStrip->width+10+modifyStrip->width+10+helpStrip->width)))*0.5f)+fileStrip->width+10,1); + } + + void updateModifyModeStrip() + { + modifyModeStrip->updatePosition(1,height*0.5f-modifyModeStrip->height*0.5f); + }; + + void updateLayoutModeStrip() + { + layoutModeStrip->updatePosition(width-layoutModeStrip->width-1,height*0.5f-layoutModeStrip->height*0.5f); + }; + + void updateShadeModeStrip() + { + shadeModeStrip->updatePosition((int)(((int)(width-shadeModeStrip->width-10-cameraStrip->width))*0.5f),height-shadeModeStrip->height-1); + }; + + void updateFileStrip() + { + fileStrip->updatePosition(((int)((int)(width-(fileStrip->width+10+createStrip->width+10+modifyStrip->width+10+helpStrip->width)))*0.5f),1); + }; + + void onPaint() + { + glBindTexture(GL_TEXTURE_2D,textureID); + modifyModeStrip->onPaint(); + layoutModeStrip->onPaint(); + shadeModeStrip->onPaint(); + fileStrip->onPaint(); + createStrip->onPaint(); + modifyStrip->onPaint(); + helpStrip->onPaint(); + cameraStrip->onPaint(); + }; + + void updateSize(size_t theWidth,size_t theHeight) + { + width=theWidth; + height=theHeight; + updateModifyModeStrip(); + updateLayoutModeStrip(); + updateShadeModeStrip(); + updateFileStrip(); + updateCreateStrip(); + updateModifyStrip(); + updateHelpStrip(); + updateCameraStrip(); + }; + + GLuint loadTexture(char *fileName) + { + GLuint txtnumber; + wxImage texture(_T(fileName),wxBITMAP_TYPE_PNG,-1); + int theHeight=texture.GetHeight(); + int theWidth=texture.GetWidth(); + unsigned char *RGBData=texture.GetData(); + unsigned char *alphaData=texture.GetAlpha(); + size_t pixelCount=theHeight*theWidth; + size_t dataSize=pixelCount*4; + unsigned char *data=new unsigned char[dataSize]; + for(size_t i=0;i + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Vector.cpp b/Vector.cpp new file mode 100755 index 0000000..5630fee --- /dev/null +++ b/Vector.cpp @@ -0,0 +1,2 @@ +#include "Vector.h" + diff --git a/Vector.h b/Vector.h new file mode 100755 index 0000000..1d15c8d --- /dev/null +++ b/Vector.h @@ -0,0 +1,194 @@ +#pragma once +#include "TheMath.h" +#include + +class Vector +{ + public: + float x, //!< the first component + y, //!< the second component + z, //!< the third component + w; //!< the fourth (of optional usage) component + + //! Default constructor + Vector() : x(0), y(0), z(0), w(1) + { } + + //! Constructor from a floating point value, sets x, y, z and w to this value + Vector(float f) + { x=y=z=w=f; } + + //! Constructor from two floating point values, sets x, y, z first float and w to second + Vector(float f1,float f2) + { x=y=z=f1; w=f2; } + + //! Copy-constructor + Vector(const Vector& v) : x(v.x), y(v.y), z(v.z), w(v.w) + { } + + //! Constructor from 3 floating point numbers, sets x, y and z to their respective values, and w to 1.0f + Vector(float x0,float y0,float z0) + { x=x0; y=y0; z=z0; w=1; }; + + //! Constructor from 4 floating point numbers + Vector(float x0,float y0,float z0,float w0) + { x=x0; y=y0; z=z0; w=w0; }; + + //! Atribuition operator + void operator=(const Vector& in) + { x = in.x; y = in.y; z = in.z; w = in.w; } + + /* void operator+=(const Vector& in) + { + x += in.x; + y += in.y; + z += in.z; + w+= in.w; + }*/ + + //! Nullifying function, sets x, y and z to zero, and w to 1.0f + inline void null(void) + { x=y=z=0; w=1; }; + + //! Returns the length of the vector + inline float length(void) + { return sqrtf(x*x+y*y+z*z); }; + + //! Returns the square of the length + inline float length2(void) + { return x*x+y*y+z*z; }; + + //! Returns the distance to another flyVector + inline float distto(const Vector& v) const + { return sqrtf((v.x-x)*(v.x-x)+(v.y-y)*(v.y-y)+(v.z-z)*(v.z-z)); }; + + //! Returns the square of the distance to another flyVector + inline float distto2(const Vector& v) const + { return (v.x-x)*(v.x-x)+(v.y-y)*(v.y-y)+(v.z-z)*(v.z-z); }; + + //! Set all the components to the given floating point value + inline void vec(float f) + { x=y=z=w=f; }; + + //! Set components to the given floating point values + inline void vec(float x0,float y0,float z0) + { x=x0; y=y0; z=z0; }; + + //! Set components to the given floating point values + inline void vec(float x0,float y0,float z0,float w0) + { x=x0; y=y0; z=z0; w=w0; }; + + //! Negate the first 3 components + inline void negate(void) + { x=-x; y=-y; z=-z; }; + + //! Compute the cross-product of two given flyVectors + inline void cross(const Vector& v1, const Vector& v2) + { + x=v1.y*v2.z-v1.z*v2.y; + y=v1.z*v2.x-v1.x*v2.z; + z=v1.x*v2.y-v1.y*v2.x; + } + + //! Normalize the vector + inline void normalize(void) + { + float len=sqrtf(x*x+y*y+z*z); + if (psFPBITS(len)==0) return; + len=1.0f/len; + x*=len; y*=len; z*=len; + } + + //! Reference indexing operator + inline float& operator[](int i) { return (&x)[i]; }; + //! Indexing operator + inline float operator[](int i) const { return (&x)[i]; } + + //! Negates the vector (unary operator -) + inline Vector operator-() const { return Vector(-x,-y,-z); } +}; + + +//! Multiplies a vector by a floating point value +inline void operator*=(Vector& v,float f) +{ + v.x*=f; v.y*=f; v.z*=f; +} +//! Divides a vector by a floating point value +inline void operator/=(Vector& v,float f) +{ + v.x/=f; v.y/=f; v.z/=f; +} +//! Subtracts vector 'v2' from the original vector +inline void operator-=(Vector& v1,const Vector& v2) +{ + v1.x-=v2.x; v1.y-=v2.y; v1.z-=v2.z; +} +//! Adds the original vector with another +inline void operator+=(Vector& v1, const Vector& v2) +{ + v1.x+=v2.x; v1.y+=v2.y; v1.z+=v2.z; +} +//! Multiplies the original vector with another +inline void operator*=(Vector& v1, const Vector& v2) +{ + v1.x*=v2.x; v1.y*=v2.y; v1.z*=v2.z; +} +//! Divides the original vector by another +inline void operator/=(Vector& v1, const Vector& v2) +{ + v1.x/=v2.x; v1.y/=v2.y; v1.z/=v2.z; +} + +//! Subtracts vector 'v2' from 'v1' +inline Vector operator-(Vector v1, const Vector& v2) +{ + v1.x-=v2.x; v1.y-=v2.y; v1.z-=v2.z; + return v1; +} + +inline Vector perpendicular(const Vector& v1, const Vector& v2) +{ + Vector result(0); + result.x=v1.z*v2.y-v1.y*v2.z; + result.y=v1.x*v2.z-v2.x*v1.z; + result.z=v2.x*v1.y-v1.x*v2.y; + return result; +} + +//! Adds two vectors +inline Vector operator+(Vector v1, const Vector& v2) +{ + v1.x+=v2.x; v1.y+=v2.y; v1.z+=v2.z; + return v1; +} +//! Multiplication between vectors +inline Vector operator*(Vector v1, const Vector& v2) +{ + v1.x*=v2.x; v1.y*=v2.y; v1.z*=v2.z; + return v1; +} +//! Divides vector 'v1' by vector 'v2' +inline Vector operator/(Vector v1, const Vector& v2) +{ + v1.x/=v2.x; v1.y/=v2.y; v1.z/=v2.z; + return v1; +} +//! Multiply a floating point value by a vector +inline Vector operator*(float f,Vector v) +{ + v.x*=f; v.y*=f; v.z*=f; + return v; +} +//! Multiply a vector by a floating point value +inline Vector operator*(Vector v,float f) +{ + v.x*=f; v.y*=f; v.z*=f; + return v; +} +//! Divide a vector by a floating point value +inline Vector operator/(Vector v,float f) +{ + v.x/=f; v.y/=f; v.z/=f; + return v; +} \ No newline at end of file diff --git a/Vertex.cpp b/Vertex.cpp new file mode 100755 index 0000000..68fd51b --- /dev/null +++ b/Vertex.cpp @@ -0,0 +1,25 @@ +#include "Vertex.h" + +Vertex::Vertex(void):SubdivideVertex(),clone(0) +{ +} + +Vertex::Vertex(float p1,float p2,float p3):SubdivideVertex(p1,p2,p3),clone(0) +{ +} + +Vertex::Vertex(float p1,float p2,float p3,float n1,float n2,float n3):SubdivideVertex(p1,p2,p3,n1,n2,n3),clone(0) +{ +} + +Vertex::Vertex(Vector &pos):SubdivideVertex(pos),clone(0) +{ +} + +Vertex::Vertex(Vector &pos,Vector &nor):SubdivideVertex(pos,nor),clone(0) +{ +} + +Vertex::~Vertex(void) +{ +} diff --git a/Vertex.h b/Vertex.h new file mode 100755 index 0000000..350d26e --- /dev/null +++ b/Vertex.h @@ -0,0 +1,46 @@ +#pragma once +#include +#include "elementbase.h" +#include "SubdivideVertex.h" + +struct VertexInfo +{ + size_t index; + float x; + float y; + float z; + float nx; + float ny; + float nz; + size_t adjacentCount; +}; + +class Vertex :public SubdivideVertex +{ +public: + int clone; + +public: + Vertex(void); + Vertex(float p1,float p2,float p3); + Vertex(float p1,float p2,float p3,float n1,float n2,float n3); + Vertex(Vector &pos); + Vertex(Vector &pos,Vector &nor); + + struct VertexInfo getVertexInfo() + { + struct VertexInfo result; + result.index=index; + result.x=position.x; + result.y=position.y; + result.z=position.z; + result.nx=normal.x; + result.ny=normal.y; + result.nz=normal.z; + result.adjacentCount=adjacentEdge.size(); + return result; + } + +public: + ~Vertex(void); +}; \ No newline at end of file diff --git a/ViewportImage.cpp b/ViewportImage.cpp new file mode 100755 index 0000000..67a21fd --- /dev/null +++ b/ViewportImage.cpp @@ -0,0 +1,12 @@ +#include "ViewportImage.h" + + +ViewportImage::ViewportImage(const char *thePath,GLuint theImageID,size_t theWidth,size_t theHeight,CameraMode::__Enum theCameraMode,Vector &thePosition) + :path(thePath),imageID(theImageID),width(theWidth),height(theHeight),cameraMode(theCameraMode),position(thePosition),isShow(true) +{ +} + +ViewportImage::~ViewportImage(void) +{ +// glDeleteLists(callID,1); +} diff --git a/ViewportImage.h b/ViewportImage.h new file mode 100755 index 0000000..900a3be --- /dev/null +++ b/ViewportImage.h @@ -0,0 +1,135 @@ +#pragma once +#include +#include +#include +#include "Vector.h" +#include "Enum.h" +#include + +DECLARE_ENUM(CameraMode) + Front=1, + Back, + Top, + Bottom, + Left, + Right, + Perspective +END_ENUM() + +class ViewportImage +{ +public: + bool isShow; + std::string path; + GLuint imageID; + GLuint callID; + size_t width; + size_t height; + CameraMode cameraMode; + Vector position; + ViewportImage(const char *thePath,GLuint theImageID,size_t width,size_t height,CameraMode::__Enum theCameraMode,Vector &thePosition); + void initialize() + { + callID=glGenLists(1); + glNewList(callID,GL_COMPILE); + if(cameraMode==CameraMode::Front) + { + glBegin(GL_QUADS); + glTexCoord2f(0,0); + glVertex3f(position.x+width,position.y,position.z+height); + glTexCoord2f(1,0); + glVertex3f(position.x,position.y,position.z+height); + glTexCoord2f(1,1); + glVertex3f(position.x,position.y,position.z); + glTexCoord2f(0,1); + glVertex3f(position.x+width,position.y,position.z); + glEnd(); + } + else if(cameraMode==CameraMode::Back) + { + glBegin(GL_QUADS); + glTexCoord2f(0,0); + glVertex3f(position.x,position.y,position.z+height); + glTexCoord2f(1,0); + glVertex3f(position.x+width,position.y,position.z+height); + glTexCoord2f(1,1); + glVertex3f(position.x+width,position.y,position.z); + glTexCoord2f(0,1); + glVertex3f(position.x,position.y,position.z); + glEnd(); + } + else if(cameraMode==CameraMode::Right) + { + glBegin(GL_QUADS); + glTexCoord2f(0,0); + glVertex3f(position.x,position.y,position.z+height); + glTexCoord2f(1,0); + glVertex3f(position.x,position.y+width,position.z+height); + glTexCoord2f(1,1); + glVertex3f(position.x,position.y+width,position.z); + glTexCoord2f(0,1); + glVertex3f(position.x,position.y,position.z); + glEnd(); + } + else if(cameraMode==CameraMode::Left) + { + glBegin(GL_QUADS); + glTexCoord2f(0,0); + glVertex3f(position.x,position.y+width,position.z+height); + glTexCoord2f(1,0); + glVertex3f(position.x,position.y,position.z+height); + glTexCoord2f(1,1); + glVertex3f(position.x,position.y,position.z); + glTexCoord2f(0,1); + glVertex3f(position.x,position.y+width,position.z); + glEnd(); + } + else if(cameraMode==CameraMode::Top) + { + glBegin(GL_QUADS); + glTexCoord2f(0,0); + glVertex3f(position.x,position.y+height,position.z); + glTexCoord2f(1,0); + glVertex3f(position.x+width,position.y+height,position.z); + glTexCoord2f(1,1); + glVertex3f(position.x+width,position.y,position.z); + glTexCoord2f(0,1); + glVertex3f(position.x,position.y,position.z); + glEnd(); + } + else if(cameraMode==CameraMode::Bottom) + { + glBegin(GL_QUADS); + glTexCoord2f(0,0); + glVertex3f(position.x+width,position.y,position.z); + glTexCoord2f(1,0); + glVertex3f(position.x,position.y,position.z); + glTexCoord2f(1,1); + glVertex3f(position.x,position.y+height,position.z); + glTexCoord2f(0,1); + glVertex3f(position.x+width,position.y+height,position.z); + glEnd(); + } + glEndList(); + }; + void onPaint() + { + glDisable(GL_LIGHTING); + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D,imageID); + glColor3ub(255,255,255); + glCallList(callID); + glEnable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D,0); + }; +public: + ~ViewportImage(void); +}; + +extern ViewportImage *frontReference; +extern ViewportImage *backReference; +extern ViewportImage *topReference; +extern ViewportImage *bottomReference; +extern ViewportImage *rightReference; +extern ViewportImage *leftReference; \ No newline at end of file diff --git a/about.dat b/about.dat new file mode 100755 index 0000000..46fa552 Binary files /dev/null and b/about.dat differ diff --git a/descrip.mms b/descrip.mms new file mode 100755 index 0000000..0076d8b --- /dev/null +++ b/descrip.mms @@ -0,0 +1,61 @@ +#***************************************************************************** +# * +# Make file for VMS * +# Author : J.Jansen (joukj@hrem.stm.tudelft.nl) * +# Date : 10 November 1999 * +# * +#***************************************************************************** +.first + define wx [--.include.wx] + +.ifdef __WXMOTIF__ +CXX_DEFINE = /define=(__WXMOTIF__=1)/name=(as_is,short)\ + /assume=(nostdnew,noglobal_array_new) +.else +.ifdef __WXGTK__ +CXX_DEFINE = /define=(__WXGTK__=1)/float=ieee/name=(as_is,short)/ieee=denorm\ + /assume=(nostdnew,noglobal_array_new) +.else +.ifdef __WXX11__ +CXX_DEFINE = /define=(__WXX11__=1,__WXUNIVERSAL__==1)/float=ieee\ + /name=(as_is,short)/assume=(nostdnew,noglobal_array_new) +.else +CXX_DEFINE = +.endif +.endif +.endif + +.suffixes : .cpp + +.cpp.obj : + cxx $(CXXFLAGS)$(CXX_DEFINE) $(MMS$TARGET_NAME).cpp + +all : +.ifdef __WXMOTIF__ + $(MMS)$(MMSQUALIFIERS) minimal.exe +.else +.ifdef __WXGTK__ + $(MMS)$(MMSQUALIFIERS) minimal_gtk.exe +.else +.ifdef __WXX11__ + $(MMS)$(MMSQUALIFIERS) minimal_x11.exe +.endif +.endif +.endif + +.ifdef __WXMOTIF__ +minimal.exe : minimal.obj + cxxlink minimal,[--.lib]vms/opt +.else +.ifdef __WXGTK__ +minimal_gtk.exe : minimal.obj + cxxlink/exec=minimal_gtk.exe minimal,[--.lib]vms_gtk/opt +.else +.ifdef __WXX11__ +minimal_x11.exe : minimal.obj + cxxlink/exec=minimal_x11.exe minimal,[--.lib]vms_x11_univ/opt +.endif +.endif +.endif + +minimal.obj : minimal.cpp diff --git a/fuck.fbp b/fuck.fbp new file mode 100755 index 0000000..81c35d0 --- /dev/null +++ b/fuck.fbp @@ -0,0 +1,3357 @@ + + + + + C++ + + 1000 + 0 + MyProject1 + . + 1 + 0 + 0 + + + 1 + + + + 0 + ID_DEFAULT + + NewCylinderDialog + + + wxDEFAULT_DIALOG_STYLE + + + + + + + mainBoxSizer + wxVERTICAL + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + New Cylinder: + + staticBoxSizer + wxVERTICAL + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + 2 + 0 + + settingSizer + 2 + 0 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + x: + + xStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + xTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + y: + + yStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + yTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + z: + + zStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + zTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + radius: + + radiusStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + radiusTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + height: + + heightStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + heightTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Axis: + + axisStaticText + protected + + + + + + + + + + 5 + wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 'x' 'y' 'z' + 1 + + + 0 + ID_DEFAULT + + axisChoice + protected + + 2 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + segment a: + + segmentAStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + segmentATextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + segment r: + + segmentRStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + segmentRTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + segment h: + + segmentHStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + segmentHTextCtrl + protected + + + + + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT + 0 + + + buttonBoxSizer + wxHORIZONTAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + OK + + OKButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Cancel + + cancelButton + protected + + + + + + + + + + + + + + + 1 + + + + 0 + ID_DEFAULT + + NewSphereDialog + + + wxDEFAULT_DIALOG_STYLE + + + + + + + mainBoxSizer + wxVERTICAL + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 1 + + New Sphere + + mainStaticSizer + wxVERTICAL + + 5 + wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 1 + + 2 + 0 + + settingSizer + 2 + 0 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + x: + + xStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + xTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + y: + + yStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + yTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + z: + + zStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + zTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + radius: + + radiusStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + radiusTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + axis: + + axisStaticText + protected + + + + + + + + + + 5 + wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 'x' 'y' 'z' + 1 + + + 0 + ID_DEFAULT + + axisChoice + protected + + 2 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + segment a: + + segmentAStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + segmentATextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + segment r: + + segmentRStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + segmentRTextCtrl + protected + + + + + + + + + + + + + + + 5 + wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL + 0 + + + buttonSizer + wxHORIZONTAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + OK + + OKButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Cancel + + cancelButton + protected + + + + + + + + + + + + + + + 1 + + + + 0 + ID_DEFAULT + + HistoryViewDialog + + + wxDEFAULT_DIALOG_STYLE + + + + + + + mainBoxSizer + wxVERTICAL + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + + historyBoxSizer + wxHORIZONTAL + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + Undo List: + + undoStaticBoxSizer + wxVERTICAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + + 1 + + + 0 + ID_DEFAULT + + undoListBox + protected + + + + + + + + + + + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + Redo List: + + redoStaticBoxSizer + wxVERTICAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + + 1 + + + 0 + ID_DEFAULT + + redoListBox + protected + + + + + + + + + + + + + + 5 + wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL + 0 + + + buttonSizer + wxHORIZONTAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Undo + + undoButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Redo + + redoButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Close + + closeButton + protected + + + + + + + + + + + + + + + 1 + + + + 0 + ID_DEFAULT + + ReferenceImageDialog + + + wxDEFAULT_DIALOG_STYLE + + + + + + + mainBoxSizer + wxVERTICAL + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + Reference Image: + + mainStaticBoxSizer + wxVERTICAL + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + + settingSizer + wxVERTICAL + + 5 + wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + fileBoxSizer + wxHORIZONTAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 1 + + + 1 + + + 0 + ID_DEFAULT + + pathTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Open + + openButton + protected + + + + + + + + + + + + 5 + wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + mainStaticLine + protected + + + wxLI_HORIZONTAL + + + + + + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + 2 + 0 + + settingGirdSizer + 2 + 0 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + x: + + xStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + xTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + y: + + yStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + yTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + z: + + zStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + zTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + width: + + widthStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + widthTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + height: + + heightStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + heightTextCtrl + protected + + + + + + + + + + + + + + + + + 5 + wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL + 0 + + + buttonSizer + wxHORIZONTAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + OK + + OKButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Cancel + + CancelButton + protected + + + + + + + + + + + + + + + 1 + + + + 0 + ID_DEFAULT + + AboutDialog + + + wxDEFAULT_DIALOG_STYLE + + + + + + + mainSizer + wxVERTICAL + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + About: + + aboutSizer + wxHORIZONTAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + e:\My Documents\My Pictures\avatar1.jpg; Load From File + 1 + + + 0 + ID_DEFAULT + + logoBitmap + protected + + + + + + + + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + + infoSizer + wxVERTICAL + + 5 + wxALL + 1 + + + 1 + + + 0 + ID_DEFAULT + Pillow 0.1a Billconan Studio 2006 Blog:http://billconan.blogspot.com + + infoStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Go to the site! + + linkButton + protected + + + + + + + + + + + + + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + buttonSizer + wxVERTICAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Close + + closeButton + protected + + + + + + + + + + + + + + + 1 + + + + 0 + ID_DEFAULT + + MaterialDialog + + + wxDEFAULT_DIALOG_STYLE + + + + + + + mainSizer + wxVERTICAL + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 1 + + Material: + + settingSizer + wxVERTICAL + + 5 + wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 1 + + 2 + 0 + + settingGirdSizer + 2 + 0 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + ambient: + + ambientStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL + 0 + + 38,21,249 + 1 + + + 0 + ID_DEFAULT + + + ambientButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + diffuse: + + diffuseStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL + 0 + + 247,51,40 + 1 + + + 0 + ID_DEFAULT + + + diffuseButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + specular: + + specularStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxEXPAND + 0 + + 253,243,55 + 1 + + + 0 + ID_DEFAULT + + + specularButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + emission: + + emissionStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + 134,248,73 + 1 + + + 0 + ID_DEFAULT + + + emissionButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + shininess: + + shininessStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + + 1 + + + 0 + ID_DEFAULT + 20 + 0 + + shininessSlider + protected + + + wxSL_HORIZONTAL + + 10 + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT + 0 + + + buttonSizer + wxHORIZONTAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + OK + + OKButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Cancel + + cancelButton + protected + + + + + + + + + + + + + + + 1 + + + + 0 + ID_DEFAULT + + SceneInfoDialog + + + wxDEFAULT_DIALOG_STYLE + + + + + + + mainSizer + wxVERTICAL + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 1 + + Scene Info: + + sceneInfoStaticSizer + wxVERTICAL + + 5 + wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 1 + + 2 + 0 + + mainGirdSizer + 2 + 0 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + object count: + + objectCountStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + objectCountTextCtrl + protected + + + wxTE_READONLY + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + vertex count: + + vertexCountStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + vertexCountTextCtrl + protected + + + wxTE_READONLY + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + edge count: + + countStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + edgeCountTextCtrl + protected + + + wxTE_READONLY + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + face count: + + faceCountStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + faceCountTextCtrl + protected + + + wxTE_READONLY + + + + + + + + + + + + 5 + wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL + 0 + + + buttonSizer + wxHORIZONTAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Close + + closeButton + protected + + + + + + + + + + + + + + + 1 + + + + 0 + ID_DEFAULT + + InstantMirrorDialog + + + wxDEFAULT_DIALOG_STYLE + + + + + + + mainSizer + wxVERTICAL + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 1 + + Instant Mirror: + + instantMirrorStaticSizer + wxVERTICAL + + 5 + wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 1 + + + settingSizer + wxVERTICAL + + 5 + wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 1 + + 2 + 0 + + mainGirdSizer + 2 + 0 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + x: + + xStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + xTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + y: + + yStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + yTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + z: + + zStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + zTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + mirror plane: + + mirrorPlaneStaticText + protected + + + + + + + + + + 5 + wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + 'xy' 'xz' 'yz' + 1 + + + 0 + ID_DEFAULT + + mirrorPlaneChoice + protected + + 0 + + + + + + + + + + + + + + 5 + wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL + 0 + + + buttonSizer + wxHORIZONTAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + OK + + okButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Cancel + + cancelButton + protected + + + + + + + + + + + + + + + 1 + + + + 0 + ID_DEFAULT + + NewPlaneDialog + + + wxDEFAULT_DIALOG_STYLE + + + + + + + mainSizer + wxVERTICAL + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 1 + + New Plane: + + newPlaneStaticSizer + wxVERTICAL + + 5 + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 1 + + 2 + 0 + + mainGirdSizer + 2 + 0 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + x: + + xStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + xTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + y: + + yStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + yTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + z: + + zStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + zTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + width: + + widthStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + widthTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + height: + + heightStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + heightTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + segment width: + + segmentWidthStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + segmentWidthTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + segment height: + + segmentHeightStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + segmentHeightTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + axis: + + axisStaticText + protected + + + + + + + + + + 5 + wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 'x' 'y' 'z' + 1 + + + 0 + ID_DEFAULT + + axisChoice + protected + + 2 + + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT + 0 + + + buttonSizer + wxHORIZONTAL + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + OK + + OKButton + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + Cancel + + cancelButton + protected + + + + + + + + + + + + + + + 1 + + + + 0 + ID_DEFAULT + + ExtrudeDialog + + + wxDEFAULT_DIALOG_STYLE + + + + + + + mainSizer + wxVERTICAL + + 5 + wxEXPAND|wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + Extrude: + + mainStaticSizer + wxVERTICAL + + 5 + wxEXPAND + 1 + + 2 + 0 + + settingGirdSizer + 2 + 0 + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + amount: + + amountStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + amountTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + x: + + xStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + xTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + y: + + yStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + yTextCtrl + protected + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + + 1 + + + 0 + ID_DEFAULT + z: + + zStaticText + protected + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL + 0 + + + 1 + + + 0 + ID_DEFAULT + + zTextCtrl + protected + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + + buttonSizer + wxHORIZONTAL + + 5 + wxALL + 0 + + + 1 + + + 0 + ID_DEFAULT + OK + + OKButton + protected + + + + + + + + + + 5 + wxALL + 0 + + + 1 + + + 0 + ID_DEFAULT + Cancel + + cancelButton + protected + + + + + + + + + + + + + + diff --git a/logo.png b/logo.png new file mode 100755 index 0000000..b54ccbb Binary files /dev/null and b/logo.png differ diff --git a/makefile.bcc b/makefile.bcc new file mode 100755 index 0000000..20f6c57 --- /dev/null +++ b/makefile.bcc @@ -0,0 +1,225 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.0 (http://bakefile.sourceforge.net) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +.autodepend + +!ifndef BCCDIR +!ifndef MAKEDIR +!error Your Borland compiler does not define MAKEDIR. Please define the BCCDIR variable, e.g. BCCDIR=d:\bc4 +!endif +BCCDIR = $(MAKEDIR)\.. +!endif + +!include ../../build/msw/config.bcc + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +WX_RELEASE_NODOT = 26 +OBJS = \ + bcc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) +LIBDIRNAME = .\..\..\lib\bcc_$(LIBTYPE_SUFFIX)$(CFG) +SETUPHDIR = \ + $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG) +MINIMAL_CXXFLAGS = $(__RUNTIME_LIBS_7) -I$(BCCDIR)\include $(__DEBUGINFO) \ + $(__OPTIMIZEFLAG_2) $(__THREADSFLAG_6) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ + $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ + -I$(SETUPHDIR) -I.\..\..\include -I. $(__DLLFLAG_p) -I.\..\..\samples -DNOPCH \ + $(CPPFLAGS) $(CXXFLAGS) +MINIMAL_OBJECTS = \ + $(OBJS)\minimal_minimal.obj + +### Conditionally set variables: ### + +!if "$(USE_GUI)" == "0" +PORTNAME = base +!endif +!if "$(USE_GUI)" == "1" +PORTNAME = msw +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +WXDEBUGFLAG = d +!endif +!if "$(DEBUG_FLAG)" == "1" +WXDEBUGFLAG = d +!endif +!if "$(UNICODE)" == "1" +WXUNICODEFLAG = u +!endif +!if "$(WXUNIV)" == "1" +WXUNIVNAME = univ +!endif +!if "$(SHARED)" == "1" +WXDLLFLAG = dll +!endif +!if "$(SHARED)" == "0" +LIBTYPE_SUFFIX = lib +!endif +!if "$(SHARED)" == "1" +LIBTYPE_SUFFIX = dll +!endif +!if "$(MONOLITHIC)" == "0" +EXTRALIBS_FOR_BASE = +!endif +!if "$(MONOLITHIC)" == "1" +EXTRALIBS_FOR_BASE = +!endif +!if "$(BUILD)" == "debug" +__OPTIMIZEFLAG_2 = -Od +!endif +!if "$(BUILD)" == "release" +__OPTIMIZEFLAG_2 = -O2 +!endif +!if "$(USE_THREADS)" == "0" +__THREADSFLAG_5 = +!endif +!if "$(USE_THREADS)" == "1" +__THREADSFLAG_5 = mt +!endif +!if "$(USE_THREADS)" == "0" +__THREADSFLAG_6 = +!endif +!if "$(USE_THREADS)" == "1" +__THREADSFLAG_6 = -tWM +!endif +!if "$(RUNTIME_LIBS)" == "dynamic" +__RUNTIME_LIBS_7 = -tWR +!endif +!if "$(RUNTIME_LIBS)" == "static" +__RUNTIME_LIBS_7 = +!endif +!if "$(RUNTIME_LIBS)" == "dynamic" +__RUNTIME_LIBS_8 = i +!endif +!if "$(RUNTIME_LIBS)" == "static" +__RUNTIME_LIBS_8 = +!endif +!if "$(WXUNIV)" == "1" +__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__ +!endif +!if "$(WXUNIV)" == "1" +__WXUNIV_DEFINE_p_1 = -d__WXUNIVERSAL__ +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +__DEBUG_DEFINE_p = -D__WXDEBUG__ +!endif +!if "$(DEBUG_FLAG)" == "1" +__DEBUG_DEFINE_p = -D__WXDEBUG__ +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +__DEBUG_DEFINE_p_1 = -d__WXDEBUG__ +!endif +!if "$(DEBUG_FLAG)" == "1" +__DEBUG_DEFINE_p_1 = -d__WXDEBUG__ +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONS_DEFINE_p_1 = -dwxNO_EXCEPTIONS +!endif +!if "$(USE_RTTI)" == "0" +__RTTI_DEFINE_p = -DwxNO_RTTI +!endif +!if "$(USE_RTTI)" == "0" +__RTTI_DEFINE_p_1 = -dwxNO_RTTI +!endif +!if "$(USE_THREADS)" == "0" +__THREAD_DEFINE_p = -DwxNO_THREADS +!endif +!if "$(USE_THREADS)" == "0" +__THREAD_DEFINE_p_1 = -dwxNO_THREADS +!endif +!if "$(UNICODE)" == "1" +__UNICODE_DEFINE_p = -D_UNICODE +!endif +!if "$(UNICODE)" == "1" +__UNICODE_DEFINE_p_1 = -d_UNICODE +!endif +!if "$(MSLU)" == "1" +__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1 +!endif +!if "$(MSLU)" == "1" +__MSLU_DEFINE_p_1 = -dwxUSE_UNICODE_MSLU=1 +!endif +!if "$(SHARED)" == "1" +__DLLFLAG_p = -DWXUSINGDLL +!endif +!if "$(SHARED)" == "1" +__DLLFLAG_p_1 = -dWXUSINGDLL +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_CORE_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_BASE_p = \ + wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +!if "$(MONOLITHIC)" == "1" +__WXLIB_MONO_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib +!endif +!if "$(MSLU)" == "1" +__UNICOWS_LIB_p = unicows.lib +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO = -v +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO = -v- +!endif +!if "$(DEBUG_INFO)" == "0" +__DEBUGINFO = -v- +!endif +!if "$(DEBUG_INFO)" == "1" +__DEBUGINFO = -v +!endif + + +all: $(OBJS) +$(OBJS): + -if not exist $(OBJS) mkdir $(OBJS) + +### Targets: ### + +all: $(OBJS)\minimal.exe + +clean: + -if exist $(OBJS)\*.obj del $(OBJS)\*.obj + -if exist $(OBJS)\*.res del $(OBJS)\*.res + -if exist $(OBJS)\*.csm del $(OBJS)\*.csm + -if exist $(OBJS)\minimal.exe del $(OBJS)\minimal.exe + -if exist $(OBJS)\minimal.tds del $(OBJS)\minimal.tds + -if exist $(OBJS)\minimal.ilc del $(OBJS)\minimal.ilc + -if exist $(OBJS)\minimal.ild del $(OBJS)\minimal.ild + -if exist $(OBJS)\minimal.ilf del $(OBJS)\minimal.ilf + -if exist $(OBJS)\minimal.ils del $(OBJS)\minimal.ils + +$(OBJS)\minimal.exe: $(MINIMAL_OBJECTS) $(OBJS)\minimal_sample.res + ilink32 -Tpe -q $(LDFLAGS) -L$(BCCDIR)\lib -L$(BCCDIR)\lib\psdk $(__DEBUGINFO) -L$(LIBDIRNAME) -aa @&&| + c0w32.obj $(MINIMAL_OBJECTS),$@,, $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) ole2w32.lib oleacc.lib odbc32.lib import32.lib cw32$(__THREADSFLAG_5)$(__RUNTIME_LIBS_8).lib,, $(OBJS)\minimal_sample.res +| + +$(OBJS)\minimal_sample.res: .\..\..\samples\sample.rc + brcc32 -32 -r -fo$@ -i$(BCCDIR)\include -d__WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) $(__MSLU_DEFINE_p_1) -i$(SETUPHDIR) -i.\..\..\include -i. $(__DLLFLAG_p_1) -i.\..\..\samples $** + +$(OBJS)\minimal_minimal.obj: .\minimal.cpp + $(CXX) -q -c -P -o$@ $(MINIMAL_CXXFLAGS) $** + diff --git a/makefile.dmc b/makefile.dmc new file mode 100755 index 0000000..de6884f --- /dev/null +++ b/makefile.dmc @@ -0,0 +1,45 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.0 (http://bakefile.sourceforge.net) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +include ../../build/msw/config.dmc + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +WX_RELEASE_NODOT = 26 +OBJS = dmc_mswd$(CFG) +LIBTYPE_SUFFIX = lib +LIBDIRNAME = .\..\..\lib\dmc_$(LIBTYPE_SUFFIX)$(CFG) +SETUPHDIR = $(LIBDIRNAME)\mswd +MINIMAL_CXXFLAGS = -g -o+none -D_WIN32_WINNT=0x0400 -D__WXMSW__ -D__WXDEBUG__ \ + -I$(SETUPHDIR) -I.\..\..\include -w- -I. -WA -I.\..\..\samples -DNOPCH -Ar -Ae \ + $(CPPFLAGS) $(CXXFLAGS) +MINIMAL_OBJECTS = \ + $(OBJS)\minimal_minimal.obj + +### Targets: ### + +all : $(OBJS)\minimal.exe + +clean : + -if exist $(OBJS)\*.obj del $(OBJS)\*.obj + -if exist $(OBJS)\*.res del $(OBJS)\*.res + -if exist $(OBJS)\*.sym del $(OBJS)\*.sym + -if exist $(OBJS)\minimal.exe del $(OBJS)\minimal.exe + -if exist $(OBJS)\minimal.map del $(OBJS)\minimal.map + +$(OBJS)\minimal.exe : $(MINIMAL_OBJECTS) $(OBJS)\minimal_sample.res + link /NOLOGO /SILENT /NOI /DELEXECUTABLE /EXETYPE:NT $(LDFLAGS) /DEBUG /CODEVIEW /su:windows:4.0 $(MINIMAL_OBJECTS),$@,$(OBJS)\minimal.map, $(LIBDIRNAME)\ wxmsw$(WX_RELEASE_NODOT)d$(WX_LIB_FLAVOUR)_core.lib wxbase$(WX_RELEASE_NODOT)d$(WX_LIB_FLAVOUR).lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib ,, $(OBJS)\minimal_sample.res + +$(OBJS)\minimal_sample.res : .\..\..\samples\sample.rc + rcc .\..\..\samples\sample.rc -o$@ -D_WIN32_WINNT=0x0400 -D__WXMSW__ -D__WXDEBUG__ -I$(SETUPHDIR) -I.\..\..\include -I. -I.\..\..\samples -32 -v- + +$(OBJS)\minimal_minimal.obj : .\minimal.cpp + $(CXX) -mn -c -cpp -o$@ $(MINIMAL_CXXFLAGS) .\minimal.cpp + diff --git a/makefile.dms b/makefile.dms new file mode 100755 index 0000000..ba972b6 --- /dev/null +++ b/makefile.dms @@ -0,0 +1,195 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.0 (http://bakefile.sourceforge.net) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +.LONGCOMMANDLINE: dmc link lib smake + +!include ../../build/msw/config.dms + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Conditionally set variables: ### + +!if "$(USE_GUI)" == "0" +PORTNAME = base +!endif +!if "$(USE_GUI)" == "1" +PORTNAME = msw +!endif +!if "$(BUILD)" == "debug" +!if "$(DEBUG_FLAG)" == "default" +WXDEBUGFLAG = d +!endif +!endif +!if "$(DEBUG_FLAG)" == "1" +WXDEBUGFLAG = d +!endif +!if "$(UNICODE)" == "1" +WXUNICODEFLAG = u +!endif +!if "$(WXUNIV)" == "1" +WXUNIVNAME = univ +!endif +!if "$(SHARED)" == "1" +WXDLLFLAG = dll +!endif +!if "$(SHARED)" == "0" +LIBTYPE_SUFFIX = lib +!endif +!if "$(SHARED)" == "1" +LIBTYPE_SUFFIX = dll +!endif +!if "$(MONOLITHIC)" == "0" +EXTRALIBS_FOR_BASE = +!endif +!if "$(MONOLITHIC)" == "1" +EXTRALIBS_FOR_BASE = +!endif +!if "$(BUILD)" == "debug" +!if "$(DEBUG_INFO)" == "default" +__DEBUGINFO_0 = -g +!endif +!endif +!if "$(BUILD)" == "release" +!if "$(DEBUG_INFO)" == "default" +__DEBUGINFO_0 = +!endif +!endif +!if "$(DEBUG_INFO)" == "0" +__DEBUGINFO_0 = +!endif +!if "$(DEBUG_INFO)" == "1" +__DEBUGINFO_0 = -g +!endif +!if "$(BUILD)" == "debug" +!if "$(DEBUG_INFO)" == "default" +__DEBUGINFO_1 = /DEBUG /CODEVIEW +!endif +!endif +!if "$(BUILD)" == "release" +!if "$(DEBUG_INFO)" == "default" +__DEBUGINFO_1 = +!endif +!endif +!if "$(DEBUG_INFO)" == "0" +__DEBUGINFO_1 = +!endif +!if "$(DEBUG_INFO)" == "1" +__DEBUGINFO_1 = /DEBUG /CODEVIEW +!endif +!if "$(BUILD)" == "debug" +__OPTIMIZEFLAG_2 = -o+none +!endif +!if "$(BUILD)" == "release" +__OPTIMIZEFLAG_2 = -o +!endif +!if "$(RUNTIME_LIBS)" == "dynamic" +__RUNTIME_LIBS_5 = -ND +!endif +!if "$(RUNTIME_LIBS)" == "static" +__RUNTIME_LIBS_5 = +!endif +!if "$(USE_RTTI)" == "0" +__RTTIFLAG_6 = +!endif +!if "$(USE_RTTI)" == "1" +__RTTIFLAG_6 = -Ar +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONSFLAG_7 = +!endif +!if "$(USE_EXCEPTIONS)" == "1" +__EXCEPTIONSFLAG_7 = -Ae +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_CORE_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_BASE_p = \ + wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +!if "$(MONOLITHIC)" == "1" +__WXLIB_MONO_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib +!endif +!if "$(MSLU)" == "1" +__UNICOWS_LIB_p = unicows.lib +!endif +!if "$(WXUNIV)" == "1" +__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__ +!endif +!if "$(BUILD)" == "debug" +!if "$(DEBUG_FLAG)" == "default" +__DEBUG_DEFINE_p = -D__WXDEBUG__ +!endif +!endif +!if "$(DEBUG_FLAG)" == "1" +__DEBUG_DEFINE_p = -D__WXDEBUG__ +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS +!endif +!if "$(USE_RTTI)" == "0" +__RTTI_DEFINE_p = -DwxNO_RTTI +!endif +!if "$(USE_THREADS)" == "0" +__THREAD_DEFINE_p = -DwxNO_THREADS +!endif +!if "$(UNICODE)" == "1" +__UNICODE_DEFINE_p = -D_UNICODE +!endif +!if "$(MSLU)" == "1" +__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1 +!endif +!if "$(SHARED)" == "1" +__DLLFLAG_p = -DWXUSINGDLL +!endif + +### Variables: ### + +WX_RELEASE_NODOT = 26 +OBJS = dmc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) +LIBDIRNAME = .\..\..\lib\dmc_$(LIBTYPE_SUFFIX)$(CFG) +SETUPHDIR = $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG) +MINIMAL_CXXFLAGS = $(__DEBUGINFO_0) $(__OPTIMIZEFLAG_2) $(__RUNTIME_LIBS_5) -D_WIN32_WINNT=0x0400 -D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -w- -I. $(__DLLFLAG_p) -WA -I.\..\..\samples -DNOPCH $(__RTTIFLAG_6) $(__EXCEPTIONSFLAG_7) $(CPPFLAGS) $(CXXFLAGS) +MINIMAL_OBJECTS = $(OBJS)\minimal_minimal.obj + + +all : $(OBJS) +$(OBJS) : + -if not exist $(OBJS) mkdir $(OBJS) + +### Targets: ### + + +all : $(OBJS)\minimal.exe + +clean : + -if exist $(OBJS)\*.obj del $(OBJS)\*.obj + -if exist $(OBJS)\*.res del $(OBJS)\*.res + -if exist $(OBJS)\*.sym del $(OBJS)\*.sym + -if exist $(OBJS)\minimal.exe del $(OBJS)\minimal.exe + -if exist $(OBJS)\minimal.map del $(OBJS)\minimal.map + +$(OBJS)\minimal.exe : $(MINIMAL_OBJECTS) $(OBJS)\minimal_sample.res + link /NOLOGO /SILENT /NOI /DELEXECUTABLE /EXETYPE:NT $(LDFLAGS) $(__DEBUGINFO_1) /su:windows:4.0 $(MINIMAL_OBJECTS),$@,$(OBJS)\minimal.map, $(LIBDIRNAME)\ $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib ,, $(OBJS)\minimal_sample.res + +$(OBJS)\minimal_sample.res : .\..\..\samples\sample.rc + rcc .\..\..\samples\sample.rc -o$@ -D_WIN32_WINNT=0x0400 -D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) -I$(SETUPHDIR) -I.\..\..\include -I. $(__DLLFLAG_p) -I.\..\..\samples -32 -v- + +$(OBJS)\minimal_minimal.obj : .\minimal.cpp + $(CXX) -mn -c -cpp -o$@ $(MINIMAL_CXXFLAGS) .\minimal.cpp diff --git a/makefile.dos b/makefile.dos new file mode 100755 index 0000000..c3056c0 --- /dev/null +++ b/makefile.dos @@ -0,0 +1,17 @@ +# +# File: makefile.dos +# Author: Julian Smart +# Created: 1998 +# Updated: +# +# Makefile : Builds 16-bit sample, VC++ 1.5 +# Use FINAL=1 argument to nmake to build final version with no debugging +# info + +WXDIR = $(WXWIN) + +TARGET=minimal +OBJECTS=$(TARGET).obj + +!include $(WXDIR)\src\makeprog.msc + diff --git a/makefile.gcc b/makefile.gcc new file mode 100755 index 0000000..e5c9d01 --- /dev/null +++ b/makefile.gcc @@ -0,0 +1,223 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.0 (http://bakefile.sourceforge.net) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +include ../../build/msw/config.gcc + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +CPPDEPS = -MT$@ -MF$@.d -MD +WX_RELEASE_NODOT = 26 +OBJS = \ + gcc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) +LIBDIRNAME = .\..\..\lib\gcc_$(LIBTYPE_SUFFIX)$(CFG) +SETUPHDIR = \ + $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG) +MINIMAL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG_2) $(__THREADSFLAG) \ + $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \ + $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ + -I$(SETUPHDIR) -I.\..\..\include -W -Wall -I. $(__DLLFLAG_p) -I.\..\..\samples \ + -DNOPCH $(__RTTIFLAG_5) $(__EXCEPTIONSFLAG_6) -Wno-ctor-dtor-privacy \ + $(CPPFLAGS) $(CXXFLAGS) +MINIMAL_OBJECTS = \ + $(OBJS)\minimal_sample_rc.o \ + $(OBJS)\minimal_minimal.o + +### Conditionally set variables: ### + +ifeq ($(GCC_VERSION),2.95) +GCCFLAGS = -fvtable-thunks +endif +ifeq ($(USE_GUI),0) +PORTNAME = base +endif +ifeq ($(USE_GUI),1) +PORTNAME = msw +endif +ifeq ($(BUILD),debug) +ifeq ($(DEBUG_FLAG),default) +WXDEBUGFLAG = d +endif +endif +ifeq ($(DEBUG_FLAG),1) +WXDEBUGFLAG = d +endif +ifeq ($(UNICODE),1) +WXUNICODEFLAG = u +endif +ifeq ($(WXUNIV),1) +WXUNIVNAME = univ +endif +ifeq ($(SHARED),1) +WXDLLFLAG = dll +endif +ifeq ($(SHARED),0) +LIBTYPE_SUFFIX = lib +endif +ifeq ($(SHARED),1) +LIBTYPE_SUFFIX = dll +endif +ifeq ($(MONOLITHIC),0) +EXTRALIBS_FOR_BASE = +endif +ifeq ($(MONOLITHIC),1) +EXTRALIBS_FOR_BASE = +endif +ifeq ($(BUILD),debug) +__OPTIMIZEFLAG_2 = -O0 +endif +ifeq ($(BUILD),release) +__OPTIMIZEFLAG_2 = -O2 +endif +ifeq ($(USE_RTTI),0) +__RTTIFLAG_5 = -fno-rtti +endif +ifeq ($(USE_RTTI),1) +__RTTIFLAG_5 = +endif +ifeq ($(USE_EXCEPTIONS),0) +__EXCEPTIONSFLAG_6 = -fno-exceptions +endif +ifeq ($(USE_EXCEPTIONS),1) +__EXCEPTIONSFLAG_6 = +endif +ifeq ($(WXUNIV),1) +__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__ +endif +ifeq ($(WXUNIV),1) +__WXUNIV_DEFINE_p_1 = --define __WXUNIVERSAL__ +endif +ifeq ($(BUILD),debug) +ifeq ($(DEBUG_FLAG),default) +__DEBUG_DEFINE_p = -D__WXDEBUG__ +endif +endif +ifeq ($(DEBUG_FLAG),1) +__DEBUG_DEFINE_p = -D__WXDEBUG__ +endif +ifeq ($(BUILD),debug) +ifeq ($(DEBUG_FLAG),default) +__DEBUG_DEFINE_p_1 = --define __WXDEBUG__ +endif +endif +ifeq ($(DEBUG_FLAG),1) +__DEBUG_DEFINE_p_1 = --define __WXDEBUG__ +endif +ifeq ($(USE_EXCEPTIONS),0) +__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS +endif +ifeq ($(USE_EXCEPTIONS),0) +__EXCEPTIONS_DEFINE_p_1 = --define wxNO_EXCEPTIONS +endif +ifeq ($(USE_RTTI),0) +__RTTI_DEFINE_p = -DwxNO_RTTI +endif +ifeq ($(USE_RTTI),0) +__RTTI_DEFINE_p_1 = --define wxNO_RTTI +endif +ifeq ($(USE_THREADS),0) +__THREAD_DEFINE_p = -DwxNO_THREADS +endif +ifeq ($(USE_THREADS),0) +__THREAD_DEFINE_p_1 = --define wxNO_THREADS +endif +ifeq ($(UNICODE),1) +__UNICODE_DEFINE_p = -D_UNICODE +endif +ifeq ($(UNICODE),1) +__UNICODE_DEFINE_p_1 = --define _UNICODE +endif +ifeq ($(MSLU),1) +__MSLU_DEFINE_p = -DwxUSE_UNICODE_MSLU=1 +endif +ifeq ($(MSLU),1) +__MSLU_DEFINE_p_1 = --define wxUSE_UNICODE_MSLU=1 +endif +ifeq ($(SHARED),1) +__DLLFLAG_p = -DWXUSINGDLL +endif +ifeq ($(SHARED),1) +__DLLFLAG_p_1 = --define WXUSINGDLL +endif +ifeq ($(MONOLITHIC),0) +__WXLIB_CORE_p = \ + -lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core +endif +ifeq ($(MONOLITHIC),0) +__WXLIB_BASE_p = \ + -lwxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR) +endif +ifeq ($(MONOLITHIC),1) +__WXLIB_MONO_p = \ + -lwx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR) +endif +ifeq ($(USE_GUI),1) +__LIB_TIFF_p = -lwxtiff$(WXDEBUGFLAG) +endif +ifeq ($(USE_GUI),1) +__LIB_JPEG_p = -lwxjpeg$(WXDEBUGFLAG) +endif +ifeq ($(USE_GUI),1) +__LIB_PNG_p = -lwxpng$(WXDEBUGFLAG) +endif +ifeq ($(MSLU),1) +__UNICOWS_LIB_p = -lunicows +endif +ifeq ($(BUILD),debug) +ifeq ($(DEBUG_INFO),default) +__DEBUGINFO = -g +endif +endif +ifeq ($(BUILD),release) +ifeq ($(DEBUG_INFO),default) +__DEBUGINFO = +endif +endif +ifeq ($(DEBUG_INFO),0) +__DEBUGINFO = +endif +ifeq ($(DEBUG_INFO),1) +__DEBUGINFO = -g +endif +ifeq ($(USE_THREADS),0) +__THREADSFLAG = +endif +ifeq ($(USE_THREADS),1) +__THREADSFLAG = -mthreads +endif + + +all: $(OBJS) +$(OBJS): + -if not exist $(OBJS) mkdir $(OBJS) + +### Targets: ### + +all: $(OBJS)\minimal.exe + +clean: + -if exist $(OBJS)\*.o del $(OBJS)\*.o + -if exist $(OBJS)\*.d del $(OBJS)\*.d + -if exist $(OBJS)\minimal.exe del $(OBJS)\minimal.exe + +$(OBJS)\minimal.exe: $(MINIMAL_OBJECTS) $(OBJS)\minimal_sample_rc.o + $(CXX) -o $@ $(MINIMAL_OBJECTS) $(LDFLAGS) $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--subsystem,windows -mwindows $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -lodbc32 + +$(OBJS)\minimal_sample_rc.o: ./../../samples/sample.rc + windres --use-temp-file -i$< -o$@ --define __WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) $(__MSLU_DEFINE_p_1) --include-dir $(SETUPHDIR) --include-dir ./../../include --include-dir . $(__DLLFLAG_p_1) --include-dir ./../../samples + +$(OBJS)\minimal_minimal.o: ./minimal.cpp + $(CXX) -c -o $@ $(MINIMAL_CXXFLAGS) $(CPPDEPS) $< + +.PHONY: all clean + + +# Dependencies tracking: +-include $(OBJS)/*.d diff --git a/makefile.mic b/makefile.mic new file mode 100755 index 0000000..227c6ff --- /dev/null +++ b/makefile.mic @@ -0,0 +1,85 @@ +############################################################################## +# Microwindows template Makefile +# Copyright (c) 2000 Martin Jolicoeur, Greg Haerr +############################################################################## + +TOP=$(MICROWINDOWS) +ifeq "$(MICROWINDOWS)" "" +TOP=/home/julians/local/microwindows/microwindows-0.89pre8/src +endif + +CONFIG = $(TOP)/config +WXDIR = ../.. +OBJSUFF = o +SRCSUFF = cpp +WXLIB=$(WXDIR)/lib/libwx.a +AROPTIONS = ruv +RANLIB = ranlib +RM = rm -f + +ZLIBLIB = $(WXDIR)/lib/libzlib.a +PNGLIB = $(WXDIR)/lib/libpng.a +JPEGLIB = $(WXDIR)/lib/libjpeg.a +TIFFLIB = $(WXDIR)/lib/libtiff.a + +include $(CONFIG) + +######################## Additional Flags section ############################ + +# Directories list for header files +INCLUDEDIRS += -I$(WXDIR)/include +# Defines for preprocessor +DEFINES += -DMWIN -D__WXMSW__ -D__WXMICROWIN__ -D__WXUNIVERSAL__ -D__WIN32__ -D__WIN95__ -DHAVE_BOOL -DMICROWIN_TODO=1 -D__UNIX__ -DHAVE_NANOSLEEP -DMICROWIN_NOCONTROLS -D__WXDEBUG__ -DwxSIZE_T_IS_UINT -DWXWIN_OS_DESCRIPTION="\"MicroWindows\"" + +# Compilation flags for C files OTHER than include directories +CFLAGS += +# Preprocessor flags OTHER than defines +CPPFLAGS += +# Linking flags +#LDFLAGS += -lwx -L$(WXDIR)/lib +LDFLAGS += $(WXLIB) + +############################# targets section ################################ + +# If you want to create a library with the objects files, define the name here +LIBNAME = + +# If we put it below OBJS=, Makefile.rules includes .depend +# and it continually looks for .c files to satisfy .o.cpp +# dependency. What's going on there? +include $(TOP)/Makefile.rules + +# List of objects to compile +OBJS = minimal.o + +all: minimal + +######################### Makefile.rules section ############################# + + + +######################## Tools targets section ############################### + +minimal: $(OBJS) $(MWINLIBS) $(WXLIB) $(TOP)/config + $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $@ $(WXLIB) $(MWINLIBS) -lm + +#.SUFFIXES: .cpp .cxx .c + +#.c.o: +# $(CC) -c $(CFLAGS) $(CFLAGS) -o $@ $*.c + +.cxx.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $*.cxx + +.cpp.o: + $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $*.cpp + +cleanwx: + -$(RM) *.o + -$(RM) minimal + +wx: + @pushd $(WXDIR)/src/msw; make -f makefile.mic all; popd + +wxfull: + @pushd $(WXDIR)/src/msw; make -f makefile.mic cleanwx all; popd diff --git a/makefile.sc b/makefile.sc new file mode 100755 index 0000000..53e811a --- /dev/null +++ b/makefile.sc @@ -0,0 +1,5 @@ +# Digital Mars / Symantec C++ makefile +WXDIR = ..\.. +TARGET=minimal +OBJECTS = $(TARGET).obj +include $(WXDIR)\src\makeprog.sc diff --git a/makefile.sl b/makefile.sl new file mode 100755 index 0000000..ce799d2 --- /dev/null +++ b/makefile.sl @@ -0,0 +1,18 @@ +# +# File: makefile.sl +# Author: Julian Smart +# Created: 1998 +# +# Makefile : Builds a wxWindows sample for Salford C++, WIN32 + +PROGRAM = minimal +OBJECTS = $(PROGRAM).obj + +include ..\..\src\makeprog.sl + +all: wx $(TARGET) + +wx: + cd $(WXDIR)\src\msw ^ mk32 -f makefile.sl all + cd $(WXDIR)\samples\minimal + diff --git a/makefile.twn b/makefile.twn new file mode 100755 index 0000000..c339f0e --- /dev/null +++ b/makefile.twn @@ -0,0 +1,43 @@ +# +# File: makefile.unx +# Author: Julian Smart +# Created: 1993 +# Updated: +# Copyright: +# +# "%W% %G%" +# +# Makefile for minimal example (UNIX). + +WXDIR = ../.. + +# All common UNIX compiler flags and options are now in +# this central makefile. +include $(WXDIR)/src/maketwin.env + +OBJECTS = $(OBJDIR)/minimal.$(OBJSUFF) $(OBJDIR)/minimal_resources.$(OBJSUFF) + +all: $(OBJDIR) minimal$(GUISUFFIX)$(EXESUFF) + +wx: + +$(OBJDIR): + mkdir $(OBJDIR) + +minimal$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) + $(CC) $(LDFLAGS) -o minimal$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) + +$(OBJDIR)/minimal.$(OBJSUFF): minimal.$(SRCSUFF) + $(CC) -c $(CPPFLAGS) -o $@ minimal.$(SRCSUFF) + +minimal_resources.c: minimal.rc + $(RESCOMP) $(RCINPUTSWITCH) minimal.rc $(RCOUTPUTSWITCH) minimal_resources.c $(RESFLAGS) + +$(OBJDIR)/minimal_resources.$(OBJSUFF): minimal_resources.c + $(CC) -c $(CPPFLAGS) -o $@ minimal_resources.c + +#$(OBJDIR)/minimal_resources.o: minimal.rc +# $(RESCOMP) $(RCINPUTSWITCH) minimal.rc $(RCOUTPUTSWITCH) $(OBJDIR)/minimal_resources.o $(RESFLAGS) + +clean: + rm -f $(OBJECTS) minimal$(GUISUFFIX).exe core *.rsc *.res diff --git a/makefile.unx b/makefile.unx new file mode 100755 index 0000000..5ab73ac --- /dev/null +++ b/makefile.unx @@ -0,0 +1,49 @@ +# +# File: Makefile for samples +# Author: Robert Roebling +# Created: 1999 +# Updated: +# Copyright: (c) 1998 Robert Roebling +# +# This makefile requires a Unix version of wxWindows +# to be installed on your system. This is most often +# done typing "make install" when using the complete +# sources of wxWindows or by installing the two +# RPM packages wxGTK.XXX.rpm and wxGTK-devel.XXX.rpm +# under Linux. + +# this makefile may also be used as a template for simple makefiles for your +# own programs, the comments explain which parts of it you may have to modify +# to use it for your own programs + + +# you may change WX_CONFIG value to use a specific wx-config and to pass it +# some options, for example "--inplace" to use an uninstalled wxWindows +# version +# +# by default, wx-config from the PATH is used +WX_CONFIG := wx-config + +# set this to the name of the main executable file +PROGRAM = minimal + +# if your program has more than one source file, add more .o files to the line +# below +OBJECTS = $(PROGRAM).o + + +# you shouldn't have to edit anything below this line +CXX = $(shell $(WX_CONFIG) --cxx) + +.SUFFIXES: .o .cpp + +.cpp.o : + $(CXX) -c `$(WX_CONFIG) --cxxflags` -o $@ $< + +all: $(PROGRAM) + +$(PROGRAM): $(OBJECTS) + $(CXX) -o $(PROGRAM) $(OBJECTS) `$(WX_CONFIG) --libs` + +clean: + rm -f *.o $(PROGRAM) diff --git a/makefile.va b/makefile.va new file mode 100755 index 0000000..93e6c02 --- /dev/null +++ b/makefile.va @@ -0,0 +1,45 @@ +# +# File: makefile.va +# Author: David Webster +# Created: 1999 +# Updated: +# Copyright: (c) David Webster +# Licence: wxWindows Licence +# +# Makefile : Builds sample (VisualAgeC++ V3.0, OS/2 PM) +# Use FINAL=1 argument to nmake to build final version with no debug info. + +# Set WXDIR for your system +WXDIR=$(WXWIN) + +!include $(WXDIR)\src\makeva.env + +# +# Define which program this is and what it's path is and where to output to +# +PROGRAM=minimal +THISDIR=$(WXWIN)\samples\$(PROGRAM) +OPATH=$(THISDIR)\$D + +# +# Make sure output directory is available +# +!if [md $(OPATH)] +!endif + +# +# Standard definitions +# +PROGRC=$(THISDIR)\$(PROGRAM).rcO +OBJECTS=$(OPATH)\$(PROGRAM).obj +PROGRES=$(OPATH)\$(PROGRAM).res +PROGTARGET=E:\TEMP\$(PROGRAM).exe + +.cpp{$OPATH}.obj: + @echo $< + icc @<< +$(CPPFLAGS) /Fo$@ /Tp $< +<< + +!include $(WXDIR)\src\makeprog.va + diff --git a/makefile.vc b/makefile.vc new file mode 100755 index 0000000..2a31d11 --- /dev/null +++ b/makefile.vc @@ -0,0 +1,300 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.0 (http://bakefile.sourceforge.net) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +!include <../../build/msw/config.vc> + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +### Variables: ### + +WX_RELEASE_NODOT = 26 +OBJS = \ + vc_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)$(DIR_SUFFIX_CPU) +LIBDIRNAME = .\..\..\lib\vc$(DIR_SUFFIX_CPU)_$(LIBTYPE_SUFFIX)$(CFG) +SETUPHDIR = \ + $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG) +MINIMAL_CXXFLAGS = /M$(__RUNTIME_LIBS_8)$(__DEBUGRUNTIME_3) /DWIN32 \ + $(__DEBUGINFO_0) /Fd$(OBJS)\minimal.pdb $(____DEBUGRUNTIME_2_p) \ + $(__OPTIMIZEFLAG_4) $(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) \ + $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ + $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) $(__MSLU_DEFINE_p) \ + /I$(SETUPHDIR) /I.\..\..\include /W4 /I. $(__DLLFLAG_p) /D_WINDOWS \ + /I.\..\..\samples /DNOPCH $(__RTTIFLAG_9) $(__EXCEPTIONSFLAG_10) $(CPPFLAGS) \ + $(CXXFLAGS) +MINIMAL_OBJECTS = \ + $(OBJS)\minimal_sample.res \ + $(OBJS)\minimal_minimal.obj + +### Conditionally set variables: ### + +!if "$(USE_GUI)" == "0" +PORTNAME = base +!endif +!if "$(USE_GUI)" == "1" +PORTNAME = msw +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +WXDEBUGFLAG = d +!endif +!if "$(DEBUG_FLAG)" == "1" +WXDEBUGFLAG = d +!endif +!if "$(UNICODE)" == "1" +WXUNICODEFLAG = u +!endif +!if "$(WXUNIV)" == "1" +WXUNIVNAME = univ +!endif +!if "$(TARGET_CPU)" == "amd64" +DIR_SUFFIX_CPU = _amd64 +!endif +!if "$(TARGET_CPU)" == "amd64" +DIR_SUFFIX_CPU = _amd64 +!endif +!if "$(TARGET_CPU)" == "ia64" +DIR_SUFFIX_CPU = _ia64 +!endif +!if "$(TARGET_CPU)" == "ia64" +DIR_SUFFIX_CPU = _ia64 +!endif +!if "$(SHARED)" == "1" +WXDLLFLAG = dll +!endif +!if "$(SHARED)" == "0" +LIBTYPE_SUFFIX = lib +!endif +!if "$(SHARED)" == "1" +LIBTYPE_SUFFIX = dll +!endif +!if "$(TARGET_CPU)" == "amd64" +LINK_TARGET_CPU = /MACHINE:AMD64 +!endif +!if "$(TARGET_CPU)" == "amd64" +LINK_TARGET_CPU = /MACHINE:AMD64 +!endif +!if "$(TARGET_CPU)" == "ia64" +LINK_TARGET_CPU = /MACHINE:IA64 +!endif +!if "$(TARGET_CPU)" == "ia64" +LINK_TARGET_CPU = /MACHINE:IA64 +!endif +!if "$(MONOLITHIC)" == "0" +EXTRALIBS_FOR_BASE = +!endif +!if "$(MONOLITHIC)" == "1" +EXTRALIBS_FOR_BASE = +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO_0 = /Zi +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO_0 = +!endif +!if "$(DEBUG_INFO)" == "0" +__DEBUGINFO_0 = +!endif +!if "$(DEBUG_INFO)" == "1" +__DEBUGINFO_0 = /Zi +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO_1 = /DEBUG +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_INFO)" == "default" +__DEBUGINFO_1 = +!endif +!if "$(DEBUG_INFO)" == "0" +__DEBUGINFO_1 = +!endif +!if "$(DEBUG_INFO)" == "1" +__DEBUGINFO_1 = /DEBUG +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default" +____DEBUGRUNTIME_2_p = /D_DEBUG +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default" +____DEBUGRUNTIME_2_p = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "0" +____DEBUGRUNTIME_2_p = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "1" +____DEBUGRUNTIME_2_p = /D_DEBUG +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default" +____DEBUGRUNTIME_2_p_1 = /d _DEBUG +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default" +____DEBUGRUNTIME_2_p_1 = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "0" +____DEBUGRUNTIME_2_p_1 = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "1" +____DEBUGRUNTIME_2_p_1 = /d _DEBUG +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "default" +__DEBUGRUNTIME_3 = d +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_RUNTIME_LIBS)" == "default" +__DEBUGRUNTIME_3 = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "0" +__DEBUGRUNTIME_3 = +!endif +!if "$(DEBUG_RUNTIME_LIBS)" == "1" +__DEBUGRUNTIME_3 = d +!endif +!if "$(BUILD)" == "debug" +__OPTIMIZEFLAG_4 = /Od +!endif +!if "$(BUILD)" == "release" +__OPTIMIZEFLAG_4 = /O2 +!endif +!if "$(USE_THREADS)" == "0" +__THREADSFLAG_7 = L +!endif +!if "$(USE_THREADS)" == "1" +__THREADSFLAG_7 = T +!endif +!if "$(RUNTIME_LIBS)" == "dynamic" +__RUNTIME_LIBS_8 = D +!endif +!if "$(RUNTIME_LIBS)" == "static" +__RUNTIME_LIBS_8 = $(__THREADSFLAG_7) +!endif +!if "$(USE_RTTI)" == "0" +__RTTIFLAG_9 = +!endif +!if "$(USE_RTTI)" == "1" +__RTTIFLAG_9 = /GR +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONSFLAG_10 = +!endif +!if "$(USE_EXCEPTIONS)" == "1" +__EXCEPTIONSFLAG_10 = /EHsc +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0" +__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__ +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1" +__NO_VC_CRTDBG_p = /D__NO_VC_CRTDBG__ +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_RUNTIME_LIBS)" == "0" +__NO_VC_CRTDBG_p_1 = /d __NO_VC_CRTDBG__ +!endif +!if "$(BUILD)" == "release" && "$(DEBUG_FLAG)" == "1" +__NO_VC_CRTDBG_p_1 = /d __NO_VC_CRTDBG__ +!endif +!if "$(WXUNIV)" == "1" +__WXUNIV_DEFINE_p = /D__WXUNIVERSAL__ +!endif +!if "$(WXUNIV)" == "1" +__WXUNIV_DEFINE_p_1 = /d __WXUNIVERSAL__ +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +__DEBUG_DEFINE_p = /D__WXDEBUG__ +!endif +!if "$(DEBUG_FLAG)" == "1" +__DEBUG_DEFINE_p = /D__WXDEBUG__ +!endif +!if "$(BUILD)" == "debug" && "$(DEBUG_FLAG)" == "default" +__DEBUG_DEFINE_p_1 = /d __WXDEBUG__ +!endif +!if "$(DEBUG_FLAG)" == "1" +__DEBUG_DEFINE_p_1 = /d __WXDEBUG__ +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONS_DEFINE_p = /DwxNO_EXCEPTIONS +!endif +!if "$(USE_EXCEPTIONS)" == "0" +__EXCEPTIONS_DEFINE_p_1 = /d wxNO_EXCEPTIONS +!endif +!if "$(USE_RTTI)" == "0" +__RTTI_DEFINE_p = /DwxNO_RTTI +!endif +!if "$(USE_RTTI)" == "0" +__RTTI_DEFINE_p_1 = /d wxNO_RTTI +!endif +!if "$(USE_THREADS)" == "0" +__THREAD_DEFINE_p = /DwxNO_THREADS +!endif +!if "$(USE_THREADS)" == "0" +__THREAD_DEFINE_p_1 = /d wxNO_THREADS +!endif +!if "$(UNICODE)" == "1" +__UNICODE_DEFINE_p = /D_UNICODE +!endif +!if "$(UNICODE)" == "1" +__UNICODE_DEFINE_p_1 = /d _UNICODE +!endif +!if "$(MSLU)" == "1" +__MSLU_DEFINE_p = /DwxUSE_UNICODE_MSLU=1 +!endif +!if "$(MSLU)" == "1" +__MSLU_DEFINE_p_1 = /d wxUSE_UNICODE_MSLU=1 +!endif +!if "$(SHARED)" == "1" +__DLLFLAG_p = /DWXUSINGDLL +!endif +!if "$(SHARED)" == "1" +__DLLFLAG_p_1 = /d WXUSINGDLL +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_CORE_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib +!endif +!if "$(MONOLITHIC)" == "0" +__WXLIB_BASE_p = \ + wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +!if "$(MONOLITHIC)" == "1" +__WXLIB_MONO_p = \ + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib +!endif +!if "$(USE_GUI)" == "1" +__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib +!endif +!if "$(MSLU)" == "1" +__UNICOWS_LIB_p = unicows.lib +!endif + + +all: $(OBJS) +$(OBJS): + -if not exist $(OBJS) mkdir $(OBJS) + +### Targets: ### + +all: $(OBJS)\minimal.exe + +clean: + -if exist $(OBJS)\*.obj del $(OBJS)\*.obj + -if exist $(OBJS)\*.res del $(OBJS)\*.res + -if exist $(OBJS)\*.pch del $(OBJS)\*.pch + -if exist $(OBJS)\minimal.exe del $(OBJS)\minimal.exe + -if exist $(OBJS)\minimal.ilk del $(OBJS)\minimal.ilk + -if exist $(OBJS)\minimal.pdb del $(OBJS)\minimal.pdb + +$(OBJS)\minimal.exe: $(MINIMAL_OBJECTS) $(OBJS)\minimal_sample.res + link /NOLOGO /OUT:$@ $(LDFLAGS) $(__DEBUGINFO_1) $(LINK_TARGET_CPU) /LIBPATH:$(LIBDIRNAME) /SUBSYSTEM:WINDOWS @<< + $(MINIMAL_OBJECTS) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) $(__UNICOWS_LIB_p) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib +<< + +$(OBJS)\minimal_sample.res: .\..\..\samples\sample.rc + rc /fo$@ /d WIN32 $(____DEBUGRUNTIME_2_p_1) $(__NO_VC_CRTDBG_p_1) /d __WXMSW__ $(__WXUNIV_DEFINE_p_1) $(__DEBUG_DEFINE_p_1) $(__EXCEPTIONS_DEFINE_p_1) $(__RTTI_DEFINE_p_1) $(__THREAD_DEFINE_p_1) $(__UNICODE_DEFINE_p_1) $(__MSLU_DEFINE_p_1) /i $(SETUPHDIR) /i .\..\..\include /i . $(__DLLFLAG_p_1) /d _WINDOWS /i .\..\..\samples $** + +$(OBJS)\minimal_minimal.obj: .\minimal.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MINIMAL_CXXFLAGS) $** + diff --git a/makefile.wat b/makefile.wat new file mode 100755 index 0000000..6126db6 --- /dev/null +++ b/makefile.wat @@ -0,0 +1,253 @@ +# ========================================================================= +# This makefile was generated by +# Bakefile 0.2.0 (http://bakefile.sourceforge.net) +# Do not modify, all changes will be overwritten! +# ========================================================================= + +!include ../../build/msw/config.wat + +# ------------------------------------------------------------------------- +# Do not modify the rest of this file! +# ------------------------------------------------------------------------- + +# Speed up compilation a bit: +!ifdef __LOADDLL__ +! loaddll wcc wccd +! loaddll wccaxp wccdaxp +! loaddll wcc386 wccd386 +! loaddll wpp wppdi86 +! loaddll wppaxp wppdaxp +! loaddll wpp386 wppd386 +! loaddll wlink wlink +! loaddll wlib wlibd +!endif + +# We need these variables in some bakefile-made rules: +WATCOM_CWD = $+ $(%cdrive):$(%cwd) $- + +### Conditionally set variables: ### + +PORTNAME = +!ifeq USE_GUI 0 +PORTNAME = base +!endif +!ifeq USE_GUI 1 +PORTNAME = msw +!endif +WXDEBUGFLAG = +!ifeq BUILD debug +!ifeq DEBUG_FLAG default +WXDEBUGFLAG = d +!endif +!endif +!ifeq DEBUG_FLAG 1 +WXDEBUGFLAG = d +!endif +WXUNICODEFLAG = +!ifeq UNICODE 1 +WXUNICODEFLAG = u +!endif +WXUNIVNAME = +!ifeq WXUNIV 1 +WXUNIVNAME = univ +!endif +WXDLLFLAG = +!ifeq SHARED 1 +WXDLLFLAG = dll +!endif +LIBTYPE_SUFFIX = +!ifeq SHARED 0 +LIBTYPE_SUFFIX = lib +!endif +!ifeq SHARED 1 +LIBTYPE_SUFFIX = dll +!endif +EXTRALIBS_FOR_BASE = +!ifeq MONOLITHIC 0 +EXTRALIBS_FOR_BASE = +!endif +!ifeq MONOLITHIC 1 +EXTRALIBS_FOR_BASE = +!endif +__DEBUGINFO_0 = +!ifeq BUILD debug +!ifeq DEBUG_INFO default +__DEBUGINFO_0 = -d2 +!endif +!endif +!ifeq BUILD release +!ifeq DEBUG_INFO default +__DEBUGINFO_0 = -d0 +!endif +!endif +!ifeq DEBUG_INFO 0 +__DEBUGINFO_0 = -d0 +!endif +!ifeq DEBUG_INFO 1 +__DEBUGINFO_0 = -d2 +!endif +__DEBUGINFO_1 = +!ifeq BUILD debug +!ifeq DEBUG_INFO default +__DEBUGINFO_1 = debug all +!endif +!endif +!ifeq BUILD release +!ifeq DEBUG_INFO default +__DEBUGINFO_1 = +!endif +!endif +!ifeq DEBUG_INFO 0 +__DEBUGINFO_1 = +!endif +!ifeq DEBUG_INFO 1 +__DEBUGINFO_1 = debug all +!endif +__OPTIMIZEFLAG_2 = +!ifeq BUILD debug +__OPTIMIZEFLAG_2 = -od +!endif +!ifeq BUILD release +__OPTIMIZEFLAG_2 = -ot -ox +!endif +__THREADSFLAG_5 = +!ifeq USE_THREADS 0 +__THREADSFLAG_5 = +!endif +!ifeq USE_THREADS 1 +__THREADSFLAG_5 = -bm +!endif +__RUNTIME_LIBS_6 = +!ifeq RUNTIME_LIBS dynamic +__RUNTIME_LIBS_6 = -br +!endif +!ifeq RUNTIME_LIBS static +__RUNTIME_LIBS_6 = +!endif +__RTTIFLAG_7 = +!ifeq USE_RTTI 0 +__RTTIFLAG_7 = +!endif +!ifeq USE_RTTI 1 +__RTTIFLAG_7 = -xr +!endif +__EXCEPTIONSFLAG_8 = +!ifeq USE_EXCEPTIONS 0 +__EXCEPTIONSFLAG_8 = +!endif +!ifeq USE_EXCEPTIONS 1 +__EXCEPTIONSFLAG_8 = -xs +!endif +__WXLIB_CORE_p = +!ifeq MONOLITHIC 0 +__WXLIB_CORE_p = & + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core.lib +!endif +__WXLIB_BASE_p = +!ifeq MONOLITHIC 0 +__WXLIB_BASE_p = & + wxbase$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +__WXLIB_MONO_p = +!ifeq MONOLITHIC 1 +__WXLIB_MONO_p = & + wx$(PORTNAME)$(WXUNIVNAME)$(WX_RELEASE_NODOT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR).lib +!endif +__LIB_TIFF_p = +!ifeq USE_GUI 1 +__LIB_TIFF_p = wxtiff$(WXDEBUGFLAG).lib +!endif +__LIB_JPEG_p = +!ifeq USE_GUI 1 +__LIB_JPEG_p = wxjpeg$(WXDEBUGFLAG).lib +!endif +__LIB_PNG_p = +!ifeq USE_GUI 1 +__LIB_PNG_p = wxpng$(WXDEBUGFLAG).lib +!endif +__WXUNIV_DEFINE_p = +!ifeq WXUNIV 1 +__WXUNIV_DEFINE_p = -d__WXUNIVERSAL__ +!endif +__DEBUG_DEFINE_p = +!ifeq BUILD debug +!ifeq DEBUG_FLAG default +__DEBUG_DEFINE_p = -d__WXDEBUG__ +!endif +!endif +!ifeq DEBUG_FLAG 1 +__DEBUG_DEFINE_p = -d__WXDEBUG__ +!endif +__EXCEPTIONS_DEFINE_p = +!ifeq USE_EXCEPTIONS 0 +__EXCEPTIONS_DEFINE_p = -dwxNO_EXCEPTIONS +!endif +__RTTI_DEFINE_p = +!ifeq USE_RTTI 0 +__RTTI_DEFINE_p = -dwxNO_RTTI +!endif +__THREAD_DEFINE_p = +!ifeq USE_THREADS 0 +__THREAD_DEFINE_p = -dwxNO_THREADS +!endif +__UNICODE_DEFINE_p = +!ifeq UNICODE 1 +__UNICODE_DEFINE_p = -d_UNICODE +!endif +__DLLFLAG_p = +!ifeq SHARED 1 +__DLLFLAG_p = -dWXUSINGDLL +!endif + +### Variables: ### + +WX_RELEASE_NODOT = 26 +OBJS = & + wat_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) +LIBDIRNAME = .\..\..\lib\wat_$(LIBTYPE_SUFFIX)$(CFG) +SETUPHDIR = & + $(LIBDIRNAME)\$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG) +MINIMAL_CXXFLAGS = $(__DEBUGINFO_0) $(__OPTIMIZEFLAG_2) $(__THREADSFLAG_5) & + $(__RUNTIME_LIBS_6) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) & + $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) & + $(__UNICODE_DEFINE_p) -i=$(SETUPHDIR) -i=.\..\..\include -wx -wcd=549 & + -wcd=656 -wcd=657 -wcd=667 -i=. $(__DLLFLAG_p) -i=.\..\..\samples -dNOPCH & + $(__RTTIFLAG_7) $(__EXCEPTIONSFLAG_8) $(CPPFLAGS) $(CXXFLAGS) +MINIMAL_OBJECTS = & + $(OBJS)\minimal_minimal.obj + + +all : $(OBJS) +$(OBJS) : + -if not exist $(OBJS) mkdir $(OBJS) + +### Targets: ### + +all : .SYMBOLIC $(OBJS)\minimal.exe + +clean : .SYMBOLIC + -if exist $(OBJS)\*.obj del $(OBJS)\*.obj + -if exist $(OBJS)\*.res del $(OBJS)\*.res + -if exist $(OBJS)\*.lbc del $(OBJS)\*.lbc + -if exist $(OBJS)\*.ilk del $(OBJS)\*.ilk + -if exist $(OBJS)\*.pch del $(OBJS)\*.pch + -if exist $(OBJS)\minimal.exe del $(OBJS)\minimal.exe + +$(OBJS)\minimal.exe : $(MINIMAL_OBJECTS) $(OBJS)\minimal_sample.res + @%create $(OBJS)\minimal.lbc + @%append $(OBJS)\minimal.lbc option quiet + @%append $(OBJS)\minimal.lbc name $^@ + @%append $(OBJS)\minimal.lbc option caseexact + @%append $(OBJS)\minimal.lbc $(LDFLAGS) $(__DEBUGINFO_1) libpath $(LIBDIRNAME) system nt_win ref '_WinMain@16' + @for %i in ($(MINIMAL_OBJECTS)) do @%append $(OBJS)\minimal.lbc file %i + @for %i in ( $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) $(__WXLIB_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) wxzlib$(WXDEBUGFLAG).lib wxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG).lib wxexpat$(WXDEBUGFLAG).lib $(EXTRALIBS_FOR_BASE) kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib ) do @%append $(OBJS)\minimal.lbc library %i + @%append $(OBJS)\minimal.lbc option resource=$(OBJS)\minimal_sample.res + @for %i in () do @%append $(OBJS)\minimal.lbc option stack=%i + wlink @$(OBJS)\minimal.lbc + +$(OBJS)\minimal_sample.res : .AUTODEPEND .\..\..\samples\sample.rc + wrc -q -ad -bt=nt -r -fo=$^@ -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p) -i=$(SETUPHDIR) -i=.\..\..\include -i=. $(__DLLFLAG_p) -i=.\..\..\samples $< + +$(OBJS)\minimal_minimal.obj : .AUTODEPEND .\minimal.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MINIMAL_CXXFLAGS) $< + diff --git a/minimal.bkl b/minimal.bkl new file mode 100755 index 0000000..938105e --- /dev/null +++ b/minimal.bkl @@ -0,0 +1,15 @@ + + + + + + + + + minimal.cpp + core + base + wx06 + + + diff --git a/minimal.dsp b/minimal.dsp new file mode 100755 index 0000000..88ba304 --- /dev/null +++ b/minimal.dsp @@ -0,0 +1,480 @@ +# Microsoft Developer Studio Project File - Name="minimal" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=minimal - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "minimal.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "minimal.mak" CFG="minimal - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "minimal - Win32 DLL Universal Unicode Release" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 DLL Universal Unicode Debug" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 DLL Universal Release" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 DLL Universal Debug" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 DLL Unicode Release" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 DLL Unicode Debug" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 DLL Release" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 DLL Debug" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 Universal Unicode Release" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 Universal Unicode Debug" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 Universal Release" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 Universal Debug" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 Unicode Release" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 Unicode Debug" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "minimal - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "minimal - Win32 DLL Universal Unicode Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "vc_mswunivudll" +# PROP BASE Intermediate_Dir "vc_mswunivudll\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "vc_mswunivudll" +# PROP Intermediate_Dir "vc_mswunivudll\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Fdvc_mswunivudll\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Fdvc_mswunivudll\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv26u_core.lib wxbase26u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivudll\minimal.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmswuniv26u_core.lib wxbase26u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivudll\minimal.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 DLL Universal Unicode Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswunivuddll" +# PROP BASE Intermediate_Dir "vc_mswunivuddll\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswunivuddll" +# PROP Intermediate_Dir "vc_mswunivuddll\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivuddll\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivuddll\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswunivud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv26ud_core.lib wxbase26ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\minimal.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmswuniv26ud_core.lib wxbase26ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivuddll\minimal.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 DLL Universal Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "vc_mswunivdll" +# PROP BASE Intermediate_Dir "vc_mswunivdll\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "vc_mswunivdll" +# PROP Intermediate_Dir "vc_mswunivdll\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Fdvc_mswunivdll\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswuniv" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Fdvc_mswunivdll\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswuniv" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i ".\..\..\lib\vc_dll\mswuniv" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i ".\..\..\lib\vc_dll\mswuniv" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv26_core.lib wxbase26.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivdll\minimal.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmswuniv26_core.lib wxbase26.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivdll\minimal.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 DLL Universal Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswunivddll" +# PROP BASE Intermediate_Dir "vc_mswunivddll\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswunivddll" +# PROP Intermediate_Dir "vc_mswunivddll\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivddll\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivd" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivddll\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswunivd" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i ".\..\..\lib\vc_dll\mswunivd" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i ".\..\..\lib\vc_dll\mswunivd" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv26d_core.lib wxbase26d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivddll\minimal.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmswuniv26d_core.lib wxbase26d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivddll\minimal.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 DLL Unicode Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "vc_mswudll" +# PROP BASE Intermediate_Dir "vc_mswudll\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "vc_mswudll" +# PROP Intermediate_Dir "vc_mswudll\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Fdvc_mswudll\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Fdvc_mswudll\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\mswu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswu" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw26u_core.lib wxbase26u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswudll\minimal.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmsw26u_core.lib wxbase26u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswudll\minimal.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 DLL Unicode Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswuddll" +# PROP BASE Intermediate_Dir "vc_mswuddll\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswuddll" +# PROP Intermediate_Dir "vc_mswuddll\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswuddll\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswuddll\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_dll\mswud" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw26ud_core.lib wxbase26ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswuddll\minimal.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmsw26ud_core.lib wxbase26ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswuddll\minimal.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "vc_mswdll" +# PROP BASE Intermediate_Dir "vc_mswdll\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "vc_mswdll" +# PROP Intermediate_Dir "vc_mswdll\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Fdvc_mswdll\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\msw" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Fdvc_mswdll\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_dll\msw" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /i ".\..\..\lib\vc_dll\msw" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /i ".\..\..\lib\vc_dll\msw" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw26_core.lib wxbase26.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswdll\minimal.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmsw26_core.lib wxbase26.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswdll\minimal.exe" /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswddll" +# PROP BASE Intermediate_Dir "vc_mswddll\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswddll" +# PROP Intermediate_Dir "vc_mswddll\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswddll\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswd" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswddll\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_dll\mswd" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "WXUSINGDLL" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i ".\..\..\lib\vc_dll\mswd" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i ".\..\..\lib\vc_dll\mswd" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw26d_core.lib wxbase26d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswddll\minimal.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:windows +# ADD LINK32 wxmsw26d_core.lib wxbase26d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswddll\minimal.exe" /debug /libpath:".\..\..\lib\vc_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 Universal Unicode Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "vc_mswunivu" +# PROP BASE Intermediate_Dir "vc_mswunivu\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "vc_mswunivu" +# PROP Intermediate_Dir "vc_mswunivu\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Fdvc_mswunivu\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Fdvc_mswunivu\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv26u_core.lib wxbase26u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivu\minimal.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmswuniv26u_core.lib wxbase26u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivu\minimal.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 Universal Unicode Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswunivud" +# PROP BASE Intermediate_Dir "vc_mswunivud\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswunivud" +# PROP Intermediate_Dir "vc_mswunivud\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivud\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivud\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivud" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswunivud" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv26ud_core.lib wxbase26ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivud\minimal.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmswuniv26ud_core.lib wxbase26ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivud\minimal.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 Universal Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "vc_mswuniv" +# PROP BASE Intermediate_Dir "vc_mswuniv\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "vc_mswuniv" +# PROP Intermediate_Dir "vc_mswuniv\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Fdvc_mswuniv\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswuniv" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Fdvc_mswuniv\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswuniv" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i ".\..\..\lib\vc_lib\mswuniv" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /d "__WXUNIVERSAL__" /i ".\..\..\lib\vc_lib\mswuniv" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv26_core.lib wxbase26.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswuniv\minimal.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmswuniv26_core.lib wxbase26.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswuniv\minimal.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 Universal Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswunivd" +# PROP BASE Intermediate_Dir "vc_mswunivd\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswunivd" +# PROP Intermediate_Dir "vc_mswunivd\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivd\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivd" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswunivd\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswunivd" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXUNIVERSAL__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i ".\..\..\lib\vc_lib\mswunivd" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXUNIVERSAL__" /d "__WXDEBUG__" /i ".\..\..\lib\vc_lib\mswunivd" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmswuniv26d_core.lib wxbase26d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivd\minimal.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmswuniv26d_core.lib wxbase26d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswunivd\minimal.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 Unicode Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "vc_mswu" +# PROP BASE Intermediate_Dir "vc_mswu\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "vc_mswu" +# PROP Intermediate_Dir "vc_mswu\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Fdvc_mswu\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Fdvc_mswu\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\mswu" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswu" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw26u_core.lib wxbase26u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswu\minimal.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmsw26u_core.lib wxbase26u.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregexu.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswu\minimal.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 Unicode Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswud" +# PROP BASE Intermediate_Dir "vc_mswud\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswud" +# PROP Intermediate_Dir "vc_mswud\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswud\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswud\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswud" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_UNICODE" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswud" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /d "_UNICODE" /i ".\..\..\lib\vc_lib\mswud" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw26ud_core.lib wxbase26ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswud\minimal.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmsw26ud_core.lib wxbase26ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswud\minimal.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "vc_msw" +# PROP BASE Intermediate_Dir "vc_msw\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "vc_msw" +# PROP Intermediate_Dir "vc_msw\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MD /Fdvc_msw\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\msw" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MD /Fdvc_msw\minimal.pdb /O2 /GR /EHsc /I ".\..\..\lib\vc_lib\msw" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "__WXMSW__" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "__WXMSW__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "__WXMSW__" /i ".\..\..\lib\vc_lib\msw" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "__WXMSW__" /i ".\..\..\lib\vc_lib\msw" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw26_core.lib wxbase26.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_msw\minimal.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmsw26_core.lib wxbase26.lib wxtiff.lib wxjpeg.lib wxpng.lib wxzlib.lib wxregex.lib wxexpat.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_msw\minimal.exe" /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "vc_mswd" +# PROP BASE Intermediate_Dir "vc_mswd\minimal" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "vc_mswd" +# PROP Intermediate_Dir "vc_mswd\minimal" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswd\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswd" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /c +# ADD CPP /nologo /FD /MDd /Zi /Gm /GZ /Fdvc_mswd\minimal.pdb /Od /GR /EHsc /I ".\..\..\lib\vc_lib\mswd" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /c +# ADD BASE MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD MTL /nologo /D "WIN32" /D "_DEBUG" /D "__WXMSW__" /D "__WXDEBUG__" /D "_WINDOWS" /D "NOPCH" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i ".\..\..\lib\vc_lib\mswd" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +# ADD RSC /l 0x409 /d "_DEBUG" /d "__WXMSW__" /d "__WXDEBUG__" /i ".\..\..\lib\vc_lib\mswd" /i ".\..\..\include" /i "." /d "_WINDOWS" /i ".\..\..\samples" /d NOPCH +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 wxmsw26d_core.lib wxbase26d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswd\minimal.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:windows +# ADD LINK32 wxmsw26d_core.lib wxbase26d.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib wsock32.lib odbc32.lib /nologo /machine:i386 /out:"vc_mswd\minimal.exe" /debug /libpath:".\..\..\lib\vc_lib" /subsystem:windows + +!ENDIF + +# Begin Target + +# Name "minimal - Win32 DLL Universal Unicode Release" +# Name "minimal - Win32 DLL Universal Unicode Debug" +# Name "minimal - Win32 DLL Universal Release" +# Name "minimal - Win32 DLL Universal Debug" +# Name "minimal - Win32 DLL Unicode Release" +# Name "minimal - Win32 DLL Unicode Debug" +# Name "minimal - Win32 DLL Release" +# Name "minimal - Win32 DLL Debug" +# Name "minimal - Win32 Universal Unicode Release" +# Name "minimal - Win32 Universal Unicode Debug" +# Name "minimal - Win32 Universal Release" +# Name "minimal - Win32 Universal Debug" +# Name "minimal - Win32 Unicode Release" +# Name "minimal - Win32 Unicode Debug" +# Name "minimal - Win32 Release" +# Name "minimal - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\minimal.cpp +# End Source File +# Begin Source File + +SOURCE=.\..\..\samples\sample.rc +# End Source File +# End Group +# End Target +# End Project + diff --git a/minimal.dsw b/minimal.dsw new file mode 100755 index 0000000..199b354 --- /dev/null +++ b/minimal.dsw @@ -0,0 +1,46 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### +Project: "minimal"=minimal.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +Begin Project Dependency +Project_Dep_Name core +End Project Dependency +Begin Project Dependency +Project_Dep_Name base +End Project Dependency +}}} + +############################################################################### + +Project: "core"=..\..\build\msw\wx_core.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "base"=..\..\build\msw\wx_base.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + diff --git a/minimal.ncb b/minimal.ncb new file mode 100755 index 0000000..11e561f Binary files /dev/null and b/minimal.ncb differ diff --git a/minimal.pro b/minimal.pro new file mode 100755 index 0000000..a407779 --- /dev/null +++ b/minimal.pro @@ -0,0 +1,17 @@ +# this is the project file for the minimal wxWindows sample + +# we generate the VC++ IDE project file, comment this line +# to generate a makefile for (n)make +TEMPLATE = vc6app + +# wx is mandatory for wxWindows projects +CONFIG = wx + +# the configurations of wxWindows we want to use: the value below is the +# default one; possible other values are {Debug|Release}Unicode[Dll] +#WXCONFIGS = Debug Release DebugDll ReleaseDll + +# project files +SOURCES = minimal.cpp +RC_FILE = minimal.rc +TARGET = minimal diff --git a/minimal.rc b/minimal.rc new file mode 100755 index 0000000..39b71c4 --- /dev/null +++ b/minimal.rc @@ -0,0 +1 @@ +pillow ICON "pillow.ico" diff --git a/minimal.sln b/minimal.sln new file mode 100755 index 0000000..9471ff1 --- /dev/null +++ b/minimal.sln @@ -0,0 +1,62 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minimal", "minimal.vcproj", "{535145B9-B7D3-4C40-946E-C88C0649BE01}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + DLL Debug|Win32 = DLL Debug|Win32 + DLL Release|Win32 = DLL Release|Win32 + DLL Unicode Debug|Win32 = DLL Unicode Debug|Win32 + DLL Unicode Release|Win32 = DLL Unicode Release|Win32 + DLL Universal Debug|Win32 = DLL Universal Debug|Win32 + DLL Universal Release|Win32 = DLL Universal Release|Win32 + DLL Universal Unicode Debug|Win32 = DLL Universal Unicode Debug|Win32 + DLL Universal Unicode Release|Win32 = DLL Universal Unicode Release|Win32 + Release|Win32 = Release|Win32 + Unicode Debug|Win32 = Unicode Debug|Win32 + Unicode Release|Win32 = Unicode Release|Win32 + Universal Debug|Win32 = Universal Debug|Win32 + Universal Release|Win32 = Universal Release|Win32 + Universal Unicode Debug|Win32 = Universal Unicode Debug|Win32 + Universal Unicode Release|Win32 = Universal Unicode Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Debug|Win32.ActiveCfg = Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Debug|Win32.Build.0 = Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Release|Win32.Build.0 = DLL Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Unicode Debug|Win32.ActiveCfg = DLL Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Unicode Debug|Win32.Build.0 = DLL Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Unicode Release|Win32.ActiveCfg = DLL Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Unicode Release|Win32.Build.0 = DLL Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Debug|Win32.ActiveCfg = DLL Universal Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Debug|Win32.Build.0 = DLL Universal Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Release|Win32.ActiveCfg = DLL Universal Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Release|Win32.Build.0 = DLL Universal Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Unicode Debug|Win32.ActiveCfg = DLL Universal Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Unicode Debug|Win32.Build.0 = DLL Universal Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Unicode Release|Win32.ActiveCfg = DLL Universal Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Unicode Release|Win32.Build.0 = DLL Universal Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Release|Win32.ActiveCfg = Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Release|Win32.Build.0 = Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Unicode Release|Win32.Build.0 = Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Debug|Win32.ActiveCfg = Universal Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Debug|Win32.Build.0 = Universal Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Release|Win32.ActiveCfg = Universal Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Release|Win32.Build.0 = Universal Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Unicode Debug|Win32.ActiveCfg = Universal Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Unicode Debug|Win32.Build.0 = Universal Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Unicode Release|Win32.ActiveCfg = Universal Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Unicode Release|Win32.Build.0 = Universal Unicode Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/minimal.sln.old b/minimal.sln.old new file mode 100755 index 0000000..2ed27ab --- /dev/null +++ b/minimal.sln.old @@ -0,0 +1,62 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual Studio 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "minimal", "minimal.vcproj", "{535145B9-B7D3-4C40-946E-C88C0649BE01}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + DLL Debug|Win32 = DLL Debug|Win32 + DLL Release|Win32 = DLL Release|Win32 + DLL Unicode Debug|Win32 = DLL Unicode Debug|Win32 + DLL Unicode Release|Win32 = DLL Unicode Release|Win32 + DLL Universal Debug|Win32 = DLL Universal Debug|Win32 + DLL Universal Release|Win32 = DLL Universal Release|Win32 + DLL Universal Unicode Debug|Win32 = DLL Universal Unicode Debug|Win32 + DLL Universal Unicode Release|Win32 = DLL Universal Unicode Release|Win32 + Release|Win32 = Release|Win32 + Unicode Debug|Win32 = Unicode Debug|Win32 + Unicode Release|Win32 = Unicode Release|Win32 + Universal Debug|Win32 = Universal Debug|Win32 + Universal Release|Win32 = Universal Release|Win32 + Universal Unicode Debug|Win32 = Universal Unicode Debug|Win32 + Universal Unicode Release|Win32 = Universal Unicode Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Debug|Win32.ActiveCfg = Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Debug|Win32.Build.0 = Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Release|Win32.Build.0 = DLL Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Unicode Debug|Win32.ActiveCfg = DLL Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Unicode Debug|Win32.Build.0 = DLL Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Unicode Release|Win32.ActiveCfg = DLL Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Unicode Release|Win32.Build.0 = DLL Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Debug|Win32.ActiveCfg = DLL Universal Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Debug|Win32.Build.0 = DLL Universal Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Release|Win32.ActiveCfg = DLL Universal Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Release|Win32.Build.0 = DLL Universal Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Unicode Debug|Win32.ActiveCfg = DLL Universal Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Unicode Debug|Win32.Build.0 = DLL Universal Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Unicode Release|Win32.ActiveCfg = DLL Universal Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.DLL Universal Unicode Release|Win32.Build.0 = DLL Universal Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Release|Win32.ActiveCfg = Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Release|Win32.Build.0 = Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Unicode Debug|Win32.ActiveCfg = Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Unicode Debug|Win32.Build.0 = Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Unicode Release|Win32.ActiveCfg = Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Unicode Release|Win32.Build.0 = Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Debug|Win32.ActiveCfg = Universal Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Debug|Win32.Build.0 = Universal Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Release|Win32.ActiveCfg = Universal Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Release|Win32.Build.0 = Universal Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Unicode Debug|Win32.ActiveCfg = Universal Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Unicode Debug|Win32.Build.0 = Universal Unicode Debug|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Unicode Release|Win32.ActiveCfg = Universal Unicode Release|Win32 + {535145B9-B7D3-4C40-946E-C88C0649BE01}.Universal Unicode Release|Win32.Build.0 = Universal Unicode Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/minimal.suo b/minimal.suo new file mode 100755 index 0000000..0df8732 Binary files /dev/null and b/minimal.suo differ diff --git a/minimal.suo.old b/minimal.suo.old new file mode 100755 index 0000000..0ef31b1 Binary files /dev/null and b/minimal.suo.old differ diff --git a/minimal.vcp b/minimal.vcp new file mode 100755 index 0000000..96f0f6c --- /dev/null +++ b/minimal.vcp @@ -0,0 +1,1826 @@ +# Microsoft eMbedded Visual Tools Project File - Name="minimal" - Package Owner=<4> +# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (WCE x86) Application" 0x8301 +# TARGTYPE "Win32 (WCE MIPSIV) Application" 0x9601 +# TARGTYPE "Win32 (WCE ARMV4I) Application" 0xa501 +# TARGTYPE "Win32 (WCE MIPSIV_FP) Application" 0x9201 +# TARGTYPE "Win32 (WCE emulator) Application" 0xa601 +# TARGTYPE "Win32 (WCE MIPSII) Application" 0xa101 +# TARGTYPE "Win32 (WCE ARMV4T) Application" 0xa401 +# TARGTYPE "Win32 (WCE MIPSII_FP) Application" 0xa201 +# TARGTYPE "Win32 (WCE MIPS16) Application" 0x8901 +# TARGTYPE "Win32 (WCE SH3) Application" 0x8101 +# TARGTYPE "Win32 (WCE ARMV4) Application" 0xa301 +# TARGTYPE "Win32 (WCE ARM) Application" 0x8501 +# TARGTYPE "Win32 (WCE SH4) Application" 0x8601 + +CFG=minimal - Win32 (WCE ARM) Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "minimal.vcn". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "minimal.vcn" CFG="minimal - Win32 (WCE ARM) Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "minimal - Win32 (WCE emulator) DLL Release" (based on "Win32 (WCE emulator) Application") +!MESSAGE "minimal - Win32 (WCE emulator) DLL Debug" (based on "Win32 (WCE emulator) Application") +!MESSAGE "minimal - Win32 (WCE emulator) Release" (based on "Win32 (WCE emulator) Application") +!MESSAGE "minimal - Win32 (WCE emulator) Debug" (based on "Win32 (WCE emulator) Application") +!MESSAGE "minimal - Win32 (WCE x86) DLL Release" (based on "Win32 (WCE x86) Application") +!MESSAGE "minimal - Win32 (WCE x86) DLL Debug" (based on "Win32 (WCE x86) Application") +!MESSAGE "minimal - Win32 (WCE x86) Release" (based on "Win32 (WCE x86) Application") +!MESSAGE "minimal - Win32 (WCE x86) Debug" (based on "Win32 (WCE x86) Application") +!MESSAGE "minimal - Win32 (WCE SH4) DLL Release" (based on "Win32 (WCE SH4) Application") +!MESSAGE "minimal - Win32 (WCE SH4) DLL Debug" (based on "Win32 (WCE SH4) Application") +!MESSAGE "minimal - Win32 (WCE SH4) Release" (based on "Win32 (WCE SH4) Application") +!MESSAGE "minimal - Win32 (WCE SH4) Debug" (based on "Win32 (WCE SH4) Application") +!MESSAGE "minimal - Win32 (WCE SH3) DLL Release" (based on "Win32 (WCE SH3) Application") +!MESSAGE "minimal - Win32 (WCE SH3) DLL Debug" (based on "Win32 (WCE SH3) Application") +!MESSAGE "minimal - Win32 (WCE SH3) Release" (based on "Win32 (WCE SH3) Application") +!MESSAGE "minimal - Win32 (WCE SH3) Debug" (based on "Win32 (WCE SH3) Application") +!MESSAGE "minimal - Win32 (WCE MIPSIV_FP) DLL Release" (based on "Win32 (WCE MIPSIV_FP) Application") +!MESSAGE "minimal - Win32 (WCE MIPSIV_FP) DLL Debug" (based on "Win32 (WCE MIPSIV_FP) Application") +!MESSAGE "minimal - Win32 (WCE MIPSIV_FP) Release" (based on "Win32 (WCE MIPSIV_FP) Application") +!MESSAGE "minimal - Win32 (WCE MIPSIV_FP) Debug" (based on "Win32 (WCE MIPSIV_FP) Application") +!MESSAGE "minimal - Win32 (WCE MIPSIV) DLL Release" (based on "Win32 (WCE MIPSIV) Application") +!MESSAGE "minimal - Win32 (WCE MIPSIV) DLL Debug" (based on "Win32 (WCE MIPSIV) Application") +!MESSAGE "minimal - Win32 (WCE MIPSIV) Release" (based on "Win32 (WCE MIPSIV) Application") +!MESSAGE "minimal - Win32 (WCE MIPSIV) Debug" (based on "Win32 (WCE MIPSIV) Application") +!MESSAGE "minimal - Win32 (WCE MIPSII_FP) DLL Release" (based on "Win32 (WCE MIPSII_FP) Application") +!MESSAGE "minimal - Win32 (WCE MIPSII_FP) DLL Debug" (based on "Win32 (WCE MIPSII_FP) Application") +!MESSAGE "minimal - Win32 (WCE MIPSII_FP) Release" (based on "Win32 (WCE MIPSII_FP) Application") +!MESSAGE "minimal - Win32 (WCE MIPSII_FP) Debug" (based on "Win32 (WCE MIPSII_FP) Application") +!MESSAGE "minimal - Win32 (WCE MIPSII) DLL Release" (based on "Win32 (WCE MIPSII) Application") +!MESSAGE "minimal - Win32 (WCE MIPSII) DLL Debug" (based on "Win32 (WCE MIPSII) Application") +!MESSAGE "minimal - Win32 (WCE MIPSII) Release" (based on "Win32 (WCE MIPSII) Application") +!MESSAGE "minimal - Win32 (WCE MIPSII) Debug" (based on "Win32 (WCE MIPSII) Application") +!MESSAGE "minimal - Win32 (WCE MIPS16) DLL Release" (based on "Win32 (WCE MIPS16) Application") +!MESSAGE "minimal - Win32 (WCE MIPS16) DLL Debug" (based on "Win32 (WCE MIPS16) Application") +!MESSAGE "minimal - Win32 (WCE MIPS16) Release" (based on "Win32 (WCE MIPS16) Application") +!MESSAGE "minimal - Win32 (WCE MIPS16) Debug" (based on "Win32 (WCE MIPS16) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4T) DLL Release" (based on "Win32 (WCE ARMV4T) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4T) DLL Debug" (based on "Win32 (WCE ARMV4T) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4T) Release" (based on "Win32 (WCE ARMV4T) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4T) Debug" (based on "Win32 (WCE ARMV4T) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4I) DLL Release" (based on "Win32 (WCE ARMV4I) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4I) DLL Debug" (based on "Win32 (WCE ARMV4I) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4I) Release" (based on "Win32 (WCE ARMV4I) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4I) Debug" (based on "Win32 (WCE ARMV4I) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4) DLL Release" (based on "Win32 (WCE ARMV4) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4) DLL Debug" (based on "Win32 (WCE ARMV4) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4) Release" (based on "Win32 (WCE ARMV4) Application") +!MESSAGE "minimal - Win32 (WCE ARMV4) Debug" (based on "Win32 (WCE ARMV4) Application") +!MESSAGE "minimal - Win32 (WCE ARM) DLL Release" (based on "Win32 (WCE ARM) Application") +!MESSAGE "minimal - Win32 (WCE ARM) DLL Debug" (based on "Win32 (WCE ARM) Application") +!MESSAGE "minimal - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Application") +!MESSAGE "minimal - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +# PROP ATL_Project 2 + +!IF "$(CFG)" == "minimal - Win32 (WCE emulator) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_emulator" +# PROP BASE Intermediate_Dir "evc_wincedll_emulator\minimal" +# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_emulator" +# PROP Intermediate_Dir "evc_wincedll_emulator\minimal" +# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "i_386_" /D "_X86_" /D "x86" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_emulator_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "i_386_" /D "_X86_" /D "x86" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_emulator_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=cl.exe +# ADD BASE CPP /nologo /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Fdevc_wincedll_emulator\minimal.pdb /O2 /I ".\..\..\lib\evc_emulator_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Fdevc_wincedll_emulator\minimal.pdb /O2 /I ".\..\..\lib\evc_emulator_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_wincedll_emulator\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_emulator_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_wincedll_emulator\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_emulator_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE emulator) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_emulator" +# PROP BASE Intermediate_Dir "evc_winceddll_emulator\minimal" +# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_emulator" +# PROP Intermediate_Dir "evc_winceddll_emulator\minimal" +# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "i_386_" /D "_X86_" /D "x86" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_emulator_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "i_386_" /D "_X86_" /D "x86" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_emulator_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=cl.exe +# ADD BASE CPP /nologo /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Zi /Fdevc_winceddll_emulator\minimal.pdb /Od /I ".\..\..\lib\evc_emulator_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Zi /Fdevc_winceddll_emulator\minimal.pdb /Od /I ".\..\..\lib\evc_emulator_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_winceddll_emulator\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_emulator_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_winceddll_emulator\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_emulator_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE emulator) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_emulator" +# PROP BASE Intermediate_Dir "evc_wince_emulator\minimal" +# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_emulator" +# PROP Intermediate_Dir "evc_wince_emulator\minimal" +# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "i_386_" /D "_X86_" /D "x86" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_emulator_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "i_386_" /D "_X86_" /D "x86" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_emulator_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=cl.exe +# ADD BASE CPP /nologo /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Fdevc_wince_emulator\minimal.pdb /O2 /I ".\..\..\lib\evc_emulator_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Fdevc_wince_emulator\minimal.pdb /O2 /I ".\..\..\lib\evc_emulator_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_wince_emulator\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_emulator_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_wince_emulator\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_emulator_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE emulator) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_emulator" +# PROP BASE Intermediate_Dir "evc_winced_emulator\minimal" +# PROP BASE CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_emulator" +# PROP Intermediate_Dir "evc_winced_emulator\minimal" +# PROP CPU_ID "{32E52003-403E-442D-BE48-DE10F8C6131D}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "i_386_" /D "_X86_" /D "x86" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_emulator_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "i_386_" /D "_X86_" /D "x86" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_emulator_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=cl.exe +# ADD BASE CPP /nologo /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Zi /Fdevc_winced_emulator\minimal.pdb /Od /I ".\..\..\lib\evc_emulator_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Zi /Fdevc_winced_emulator\minimal.pdb /Od /I ".\..\..\lib\evc_emulator_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_winced_emulator\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_emulator_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_winced_emulator\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_emulator_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE x86) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_x86" +# PROP BASE Intermediate_Dir "evc_wincedll_x86\minimal" +# PROP BASE CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_x86" +# PROP Intermediate_Dir "evc_wincedll_x86\minimal" +# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_x86_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_x86_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=cl.exe +# ADD BASE CPP /nologo /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Fdevc_wincedll_x86\minimal.pdb /O2 /I ".\..\..\lib\evc_x86_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Fdevc_wincedll_x86\minimal.pdb /O2 /I ".\..\..\lib\evc_x86_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_wincedll_x86\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_x86_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_wincedll_x86\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_x86_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE x86) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_x86" +# PROP BASE Intermediate_Dir "evc_winceddll_x86\minimal" +# PROP BASE CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_x86" +# PROP Intermediate_Dir "evc_winceddll_x86\minimal" +# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_x86_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_x86_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=cl.exe +# ADD BASE CPP /nologo /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Zi /Fdevc_winceddll_x86\minimal.pdb /Od /I ".\..\..\lib\evc_x86_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Zi /Fdevc_winceddll_x86\minimal.pdb /Od /I ".\..\..\lib\evc_x86_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_winceddll_x86\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_x86_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_winceddll_x86\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_x86_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE x86) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_x86" +# PROP BASE Intermediate_Dir "evc_wince_x86\minimal" +# PROP BASE CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_x86" +# PROP Intermediate_Dir "evc_wince_x86\minimal" +# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_x86_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_x86_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=cl.exe +# ADD BASE CPP /nologo /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Fdevc_wince_x86\minimal.pdb /O2 /I ".\..\..\lib\evc_x86_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Fdevc_wince_x86\minimal.pdb /O2 /I ".\..\..\lib\evc_x86_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_wince_x86\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_x86_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_wince_x86\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_x86_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE x86) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_x86" +# PROP BASE Intermediate_Dir "evc_winced_x86\minimal" +# PROP BASE CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_x86" +# PROP Intermediate_Dir "evc_winced_x86\minimal" +# PROP CPU_ID "{D6518FF3-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_x86_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_x86_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=cl.exe +# ADD BASE CPP /nologo /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Zi /Fdevc_winced_x86\minimal.pdb /Od /I ".\..\..\lib\evc_x86_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "_i386_" /D "i_386_" /D "_X86_" /D "x86" /Gs8192 /GF /Zi /Fdevc_winced_x86\minimal.pdb /Od /I ".\..\..\lib\evc_x86_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_winced_x86\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_x86_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) $(CEx86Corelibc) /MACHINE:IX86 /nodefaultlib:"OLDNAMES.lib" /out:"evc_winced_x86\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_x86_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE SH4) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_sh4" +# PROP BASE Intermediate_Dir "evc_wincedll_sh4\minimal" +# PROP BASE CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_sh4" +# PROP Intermediate_Dir "evc_wincedll_sh4\minimal" +# PROP CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh4_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh4_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=shcl.exe +# ADD BASE CPP /nologo /D "SHx" /D "SH4" /D "_SH4_" /Qsh4 /Fdevc_wincedll_sh4\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_sh4_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "SHx" /D "SH4" /D "_SH4_" /Qsh4 /Fdevc_wincedll_sh4\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_sh4_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 /out:"evc_wincedll_sh4\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_sh4_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 /out:"evc_wincedll_sh4\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_sh4_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE SH4) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_sh4" +# PROP BASE Intermediate_Dir "evc_winceddll_sh4\minimal" +# PROP BASE CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_sh4" +# PROP Intermediate_Dir "evc_winceddll_sh4\minimal" +# PROP CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh4_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh4_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=shcl.exe +# ADD BASE CPP /nologo /D "SHx" /D "SH4" /D "_SH4_" /Qsh4 /Zi /Fdevc_winceddll_sh4\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_sh4_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "SHx" /D "SH4" /D "_SH4_" /Qsh4 /Zi /Fdevc_winceddll_sh4\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_sh4_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 /out:"evc_winceddll_sh4\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_sh4_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 /out:"evc_winceddll_sh4\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_sh4_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE SH4) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_sh4" +# PROP BASE Intermediate_Dir "evc_wince_sh4\minimal" +# PROP BASE CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_sh4" +# PROP Intermediate_Dir "evc_wince_sh4\minimal" +# PROP CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh4_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh4_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=shcl.exe +# ADD BASE CPP /nologo /D "SHx" /D "SH4" /D "_SH4_" /Qsh4 /Fdevc_wince_sh4\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_sh4_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "SHx" /D "SH4" /D "_SH4_" /Qsh4 /Fdevc_wince_sh4\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_sh4_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 /out:"evc_wince_sh4\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_sh4_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 /out:"evc_wince_sh4\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_sh4_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE SH4) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_sh4" +# PROP BASE Intermediate_Dir "evc_winced_sh4\minimal" +# PROP BASE CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_sh4" +# PROP Intermediate_Dir "evc_winced_sh4\minimal" +# PROP CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh4_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh4_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=shcl.exe +# ADD BASE CPP /nologo /D "SHx" /D "SH4" /D "_SH4_" /Qsh4 /Zi /Fdevc_winced_sh4\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_sh4_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "SHx" /D "SH4" /D "_SH4_" /Qsh4 /Zi /Fdevc_winced_sh4\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_sh4_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 /out:"evc_winced_sh4\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_sh4_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH4 /out:"evc_winced_sh4\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_sh4_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE SH3) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_sh3" +# PROP BASE Intermediate_Dir "evc_wincedll_sh3\minimal" +# PROP BASE CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_sh3" +# PROP Intermediate_Dir "evc_wincedll_sh3\minimal" +# PROP CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh3_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh3_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=shcl.exe +# ADD BASE CPP /nologo /D "SHx" /D "SH3" /D "_SH3_" /Fdevc_wincedll_sh3\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_sh3_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "SHx" /D "SH3" /D "_SH3_" /Fdevc_wincedll_sh3\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_sh3_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 /out:"evc_wincedll_sh3\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_sh3_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 /out:"evc_wincedll_sh3\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_sh3_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE SH3) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_sh3" +# PROP BASE Intermediate_Dir "evc_winceddll_sh3\minimal" +# PROP BASE CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_sh3" +# PROP Intermediate_Dir "evc_winceddll_sh3\minimal" +# PROP CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh3_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh3_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=shcl.exe +# ADD BASE CPP /nologo /D "SHx" /D "SH3" /D "_SH3_" /Zi /Fdevc_winceddll_sh3\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_sh3_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "SHx" /D "SH3" /D "_SH3_" /Zi /Fdevc_winceddll_sh3\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_sh3_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 /out:"evc_winceddll_sh3\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_sh3_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 /out:"evc_winceddll_sh3\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_sh3_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE SH3) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_sh3" +# PROP BASE Intermediate_Dir "evc_wince_sh3\minimal" +# PROP BASE CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_sh3" +# PROP Intermediate_Dir "evc_wince_sh3\minimal" +# PROP CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh3_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh3_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=shcl.exe +# ADD BASE CPP /nologo /D "SHx" /D "SH3" /D "_SH3_" /Fdevc_wince_sh3\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_sh3_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "SHx" /D "SH3" /D "_SH3_" /Fdevc_wince_sh3\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_sh3_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 /out:"evc_wince_sh3\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_sh3_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 /out:"evc_wince_sh3\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_sh3_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE SH3) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_sh3" +# PROP BASE Intermediate_Dir "evc_winced_sh3\minimal" +# PROP BASE CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_sh3" +# PROP Intermediate_Dir "evc_winced_sh3\minimal" +# PROP CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh3_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_sh3_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=shcl.exe +# ADD BASE CPP /nologo /D "SHx" /D "SH3" /D "_SH3_" /Zi /Fdevc_winced_sh3\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_sh3_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "SHx" /D "SH3" /D "_SH3_" /Zi /Fdevc_winced_sh3\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_sh3_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 /out:"evc_winced_sh3\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_sh3_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:SH3 /align:4096 /out:"evc_winced_sh3\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_sh3_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSIV_FP) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_mipsiv_fp" +# PROP BASE Intermediate_Dir "evc_wincedll_mipsiv_fp\minimal" +# PROP BASE CPU_ID "{046A430D-7770-48AB-89B5-24C2D300B03F}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_mipsiv_fp" +# PROP Intermediate_Dir "evc_wincedll_mipsiv_fp\minimal" +# PROP CPU_ID "{046A430D-7770-48AB-89B5-24C2D300B03F}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_fp_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_fp_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /QMmips4 /QMn32 /QMFPE- /Fdevc_wincedll_mipsiv_fp\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsiv_fp_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /QMmips4 /QMn32 /QMFPE- /Fdevc_wincedll_mipsiv_fp\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsiv_fp_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_wincedll_mipsiv_fp\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsiv_fp_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_wincedll_mipsiv_fp\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsiv_fp_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSIV_FP) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_mipsiv_fp" +# PROP BASE Intermediate_Dir "evc_winceddll_mipsiv_fp\minimal" +# PROP BASE CPU_ID "{046A430D-7770-48AB-89B5-24C2D300B03F}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_mipsiv_fp" +# PROP Intermediate_Dir "evc_winceddll_mipsiv_fp\minimal" +# PROP CPU_ID "{046A430D-7770-48AB-89B5-24C2D300B03F}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_fp_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_fp_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /QMmips4 /QMn32 /QMFPE- /Zi /Fdevc_winceddll_mipsiv_fp\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsiv_fp_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /QMmips4 /QMn32 /QMFPE- /Zi /Fdevc_winceddll_mipsiv_fp\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsiv_fp_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_winceddll_mipsiv_fp\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsiv_fp_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_winceddll_mipsiv_fp\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsiv_fp_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSIV_FP) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_mipsiv_fp" +# PROP BASE Intermediate_Dir "evc_wince_mipsiv_fp\minimal" +# PROP BASE CPU_ID "{046A430D-7770-48AB-89B5-24C2D300B03F}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_mipsiv_fp" +# PROP Intermediate_Dir "evc_wince_mipsiv_fp\minimal" +# PROP CPU_ID "{046A430D-7770-48AB-89B5-24C2D300B03F}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_fp_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_fp_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /QMmips4 /QMn32 /QMFPE- /Fdevc_wince_mipsiv_fp\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsiv_fp_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /QMmips4 /QMn32 /QMFPE- /Fdevc_wince_mipsiv_fp\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsiv_fp_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_wince_mipsiv_fp\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsiv_fp_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_wince_mipsiv_fp\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsiv_fp_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSIV_FP) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_mipsiv_fp" +# PROP BASE Intermediate_Dir "evc_winced_mipsiv_fp\minimal" +# PROP BASE CPU_ID "{046A430D-7770-48AB-89B5-24C2D300B03F}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_mipsiv_fp" +# PROP Intermediate_Dir "evc_winced_mipsiv_fp\minimal" +# PROP CPU_ID "{046A430D-7770-48AB-89B5-24C2D300B03F}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_fp_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_fp_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /QMmips4 /QMn32 /QMFPE- /Zi /Fdevc_winced_mipsiv_fp\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsiv_fp_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /D "MIPSIV_FP" /QMmips4 /QMn32 /QMFPE- /Zi /Fdevc_winced_mipsiv_fp\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsiv_fp_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_winced_mipsiv_fp\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsiv_fp_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_winced_mipsiv_fp\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsiv_fp_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSIV) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_mipsiv" +# PROP BASE Intermediate_Dir "evc_wincedll_mipsiv\minimal" +# PROP BASE CPU_ID "{0B2FE524-26C5-4194-8CEF-B1582DEB5A98}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_mipsiv" +# PROP Intermediate_Dir "evc_wincedll_mipsiv\minimal" +# PROP CPU_ID "{0B2FE524-26C5-4194-8CEF-B1582DEB5A98}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /QMmips4 /QMn32 /QMFPE /Fdevc_wincedll_mipsiv\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsiv_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /QMmips4 /QMn32 /QMFPE /Fdevc_wincedll_mipsiv\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsiv_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_wincedll_mipsiv\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsiv_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_wincedll_mipsiv\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsiv_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSIV) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_mipsiv" +# PROP BASE Intermediate_Dir "evc_winceddll_mipsiv\minimal" +# PROP BASE CPU_ID "{0B2FE524-26C5-4194-8CEF-B1582DEB5A98}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_mipsiv" +# PROP Intermediate_Dir "evc_winceddll_mipsiv\minimal" +# PROP CPU_ID "{0B2FE524-26C5-4194-8CEF-B1582DEB5A98}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /QMmips4 /QMn32 /QMFPE /Zi /Fdevc_winceddll_mipsiv\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsiv_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /QMmips4 /QMn32 /QMFPE /Zi /Fdevc_winceddll_mipsiv\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsiv_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_winceddll_mipsiv\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsiv_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_winceddll_mipsiv\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsiv_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSIV) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_mipsiv" +# PROP BASE Intermediate_Dir "evc_wince_mipsiv\minimal" +# PROP BASE CPU_ID "{0B2FE524-26C5-4194-8CEF-B1582DEB5A98}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_mipsiv" +# PROP Intermediate_Dir "evc_wince_mipsiv\minimal" +# PROP CPU_ID "{0B2FE524-26C5-4194-8CEF-B1582DEB5A98}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /QMmips4 /QMn32 /QMFPE /Fdevc_wince_mipsiv\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsiv_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /QMmips4 /QMn32 /QMFPE /Fdevc_wince_mipsiv\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsiv_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_wince_mipsiv\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsiv_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_wince_mipsiv\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsiv_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSIV) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_mipsiv" +# PROP BASE Intermediate_Dir "evc_winced_mipsiv\minimal" +# PROP BASE CPU_ID "{0B2FE524-26C5-4194-8CEF-B1582DEB5A98}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_mipsiv" +# PROP Intermediate_Dir "evc_winced_mipsiv\minimal" +# PROP CPU_ID "{0B2FE524-26C5-4194-8CEF-B1582DEB5A98}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsiv_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /QMmips4 /QMn32 /QMFPE /Zi /Fdevc_winced_mipsiv\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsiv_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "_MIPS64" /D "R4000" /D "MIPSIV" /QMmips4 /QMn32 /QMFPE /Zi /Fdevc_winced_mipsiv\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsiv_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_winced_mipsiv\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsiv_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPSFPU /out:"evc_winced_mipsiv\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsiv_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSII_FP) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_mipsii_fp" +# PROP BASE Intermediate_Dir "evc_wincedll_mipsii_fp\minimal" +# PROP BASE CPU_ID "{D8AC856C-B213-4895-9E83-9EC51A55201E}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_mipsii_fp" +# PROP Intermediate_Dir "evc_wincedll_mipsii_fp\minimal" +# PROP CPU_ID "{D8AC856C-B213-4895-9E83-9EC51A55201E}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_fp_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_fp_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /QMmips2 /QMFPE- /Fdevc_wincedll_mipsii_fp\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsii_fp_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /QMmips2 /QMFPE- /Fdevc_wincedll_mipsii_fp\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsii_fp_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_wincedll_mipsii_fp\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsii_fp_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_wincedll_mipsii_fp\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsii_fp_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSII_FP) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_mipsii_fp" +# PROP BASE Intermediate_Dir "evc_winceddll_mipsii_fp\minimal" +# PROP BASE CPU_ID "{D8AC856C-B213-4895-9E83-9EC51A55201E}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_mipsii_fp" +# PROP Intermediate_Dir "evc_winceddll_mipsii_fp\minimal" +# PROP CPU_ID "{D8AC856C-B213-4895-9E83-9EC51A55201E}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_fp_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_fp_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /QMmips2 /QMFPE- /Zi /Fdevc_winceddll_mipsii_fp\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsii_fp_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /QMmips2 /QMFPE- /Zi /Fdevc_winceddll_mipsii_fp\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsii_fp_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_winceddll_mipsii_fp\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsii_fp_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_winceddll_mipsii_fp\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsii_fp_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSII_FP) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_mipsii_fp" +# PROP BASE Intermediate_Dir "evc_wince_mipsii_fp\minimal" +# PROP BASE CPU_ID "{D8AC856C-B213-4895-9E83-9EC51A55201E}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_mipsii_fp" +# PROP Intermediate_Dir "evc_wince_mipsii_fp\minimal" +# PROP CPU_ID "{D8AC856C-B213-4895-9E83-9EC51A55201E}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_fp_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_fp_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /QMmips2 /QMFPE- /Fdevc_wince_mipsii_fp\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsii_fp_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /QMmips2 /QMFPE- /Fdevc_wince_mipsii_fp\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsii_fp_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_wince_mipsii_fp\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsii_fp_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_wince_mipsii_fp\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsii_fp_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSII_FP) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_mipsii_fp" +# PROP BASE Intermediate_Dir "evc_winced_mipsii_fp\minimal" +# PROP BASE CPU_ID "{D8AC856C-B213-4895-9E83-9EC51A55201E}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_mipsii_fp" +# PROP Intermediate_Dir "evc_winced_mipsii_fp\minimal" +# PROP CPU_ID "{D8AC856C-B213-4895-9E83-9EC51A55201E}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_fp_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_fp_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /QMmips2 /QMFPE- /Zi /Fdevc_winced_mipsii_fp\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsii_fp_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPSII_FP" /QMmips2 /QMFPE- /Zi /Fdevc_winced_mipsii_fp\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsii_fp_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_winced_mipsii_fp\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsii_fp_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_winced_mipsii_fp\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsii_fp_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSII) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_mipsii" +# PROP BASE Intermediate_Dir "evc_wincedll_mipsii\minimal" +# PROP BASE CPU_ID "{689DDC64-9D9D-11D5-96F8-00207802C01C}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_mipsii" +# PROP Intermediate_Dir "evc_wincedll_mipsii\minimal" +# PROP CPU_ID "{689DDC64-9D9D-11D5-96F8-00207802C01C}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /QMmips2 /QMFPE /Fdevc_wincedll_mipsii\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsii_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /QMmips2 /QMFPE /Fdevc_wincedll_mipsii\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsii_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_wincedll_mipsii\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsii_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_wincedll_mipsii\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsii_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSII) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_mipsii" +# PROP BASE Intermediate_Dir "evc_winceddll_mipsii\minimal" +# PROP BASE CPU_ID "{689DDC64-9D9D-11D5-96F8-00207802C01C}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_mipsii" +# PROP Intermediate_Dir "evc_winceddll_mipsii\minimal" +# PROP CPU_ID "{689DDC64-9D9D-11D5-96F8-00207802C01C}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /QMmips2 /QMFPE /Zi /Fdevc_winceddll_mipsii\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsii_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /QMmips2 /QMFPE /Zi /Fdevc_winceddll_mipsii\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsii_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_winceddll_mipsii\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsii_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_winceddll_mipsii\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsii_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSII) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_mipsii" +# PROP BASE Intermediate_Dir "evc_wince_mipsii\minimal" +# PROP BASE CPU_ID "{689DDC64-9D9D-11D5-96F8-00207802C01C}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_mipsii" +# PROP Intermediate_Dir "evc_wince_mipsii\minimal" +# PROP CPU_ID "{689DDC64-9D9D-11D5-96F8-00207802C01C}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /QMmips2 /QMFPE /Fdevc_wince_mipsii\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsii_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /QMmips2 /QMFPE /Fdevc_wince_mipsii\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mipsii_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_wince_mipsii\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsii_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_wince_mipsii\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mipsii_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPSII) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_mipsii" +# PROP BASE Intermediate_Dir "evc_winced_mipsii\minimal" +# PROP BASE CPU_ID "{689DDC64-9D9D-11D5-96F8-00207802C01C}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_mipsii" +# PROP Intermediate_Dir "evc_winced_mipsii\minimal" +# PROP CPU_ID "{689DDC64-9D9D-11D5-96F8-00207802C01C}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mipsii_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /QMmips2 /QMFPE /Zi /Fdevc_winced_mipsii\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsii_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /QMmips2 /QMFPE /Zi /Fdevc_winced_mipsii\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mipsii_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_winced_mipsii\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsii_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS /out:"evc_winced_mipsii\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mipsii_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPS16) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_mips16" +# PROP BASE Intermediate_Dir "evc_wincedll_mips16\minimal" +# PROP BASE CPU_ID "{D6519013-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_mips16" +# PROP Intermediate_Dir "evc_wincedll_mips16\minimal" +# PROP CPU_ID "{D6519013-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mips16_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mips16_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /QMmips16 /Fdevc_wincedll_mips16\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mips16_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /QMmips16 /Fdevc_wincedll_mips16\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mips16_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 /out:"evc_wincedll_mips16\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mips16_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 /out:"evc_wincedll_mips16\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mips16_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPS16) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_mips16" +# PROP BASE Intermediate_Dir "evc_winceddll_mips16\minimal" +# PROP BASE CPU_ID "{D6519013-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_mips16" +# PROP Intermediate_Dir "evc_winceddll_mips16\minimal" +# PROP CPU_ID "{D6519013-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mips16_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mips16_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /QMmips16 /Zi /Fdevc_winceddll_mips16\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mips16_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /QMmips16 /Zi /Fdevc_winceddll_mips16\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mips16_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 /out:"evc_winceddll_mips16\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mips16_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 /out:"evc_winceddll_mips16\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mips16_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPS16) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_mips16" +# PROP BASE Intermediate_Dir "evc_wince_mips16\minimal" +# PROP BASE CPU_ID "{D6519013-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_mips16" +# PROP Intermediate_Dir "evc_wince_mips16\minimal" +# PROP CPU_ID "{D6519013-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mips16_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mips16_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /QMmips16 /Fdevc_wince_mips16\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mips16_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /QMmips16 /Fdevc_wince_mips16\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_mips16_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 /out:"evc_wince_mips16\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mips16_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 /out:"evc_wince_mips16\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_mips16_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE MIPS16) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_mips16" +# PROP BASE Intermediate_Dir "evc_winced_mips16\minimal" +# PROP BASE CPU_ID "{D6519013-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_mips16" +# PROP Intermediate_Dir "evc_winced_mips16\minimal" +# PROP CPU_ID "{D6519013-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mips16_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_mips16_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clmips.exe +# ADD BASE CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /QMmips16 /Zi /Fdevc_winced_mips16\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mips16_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "MIPS" /D "_MIPS_" /D "R4000" /D "MIPSII" /D "MIPS16" /D "_MIPS16_" /D "MIPS16SUPPORT" /QMmips16 /Zi /Fdevc_winced_mips16\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_mips16_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 /out:"evc_winced_mips16\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mips16_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:MIPS16 /ALIGN:4096 /out:"evc_winced_mips16\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_mips16_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4T) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_armv4t" +# PROP BASE Intermediate_Dir "evc_wincedll_armv4t\minimal" +# PROP BASE CPU_ID "{F52316A9-3B7C-4FE7-A67F-68350B41240D}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_armv4t" +# PROP Intermediate_Dir "evc_wincedll_armv4t\minimal" +# PROP CPU_ID "{F52316A9-3B7C-4FE7-A67F-68350B41240D}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4t_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4t_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clthumb.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /QRarch4T /QRinterwork-return /Fdevc_wincedll_armv4t\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4t_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /QRarch4T /QRinterwork-return /Fdevc_wincedll_armv4t\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4t_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_wincedll_armv4t\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4t_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_wincedll_armv4t\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4t_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4T) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_armv4t" +# PROP BASE Intermediate_Dir "evc_winceddll_armv4t\minimal" +# PROP BASE CPU_ID "{F52316A9-3B7C-4FE7-A67F-68350B41240D}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_armv4t" +# PROP Intermediate_Dir "evc_winceddll_armv4t\minimal" +# PROP CPU_ID "{F52316A9-3B7C-4FE7-A67F-68350B41240D}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4t_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4t_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clthumb.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /QRarch4T /QRinterwork-return /Zi /Fdevc_winceddll_armv4t\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4t_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /QRarch4T /QRinterwork-return /Zi /Fdevc_winceddll_armv4t\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4t_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_winceddll_armv4t\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4t_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_winceddll_armv4t\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4t_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4T) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_armv4t" +# PROP BASE Intermediate_Dir "evc_wince_armv4t\minimal" +# PROP BASE CPU_ID "{F52316A9-3B7C-4FE7-A67F-68350B41240D}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_armv4t" +# PROP Intermediate_Dir "evc_wince_armv4t\minimal" +# PROP CPU_ID "{F52316A9-3B7C-4FE7-A67F-68350B41240D}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4t_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4t_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clthumb.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /QRarch4T /QRinterwork-return /Fdevc_wince_armv4t\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4t_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /QRarch4T /QRinterwork-return /Fdevc_wince_armv4t\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4t_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_wince_armv4t\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4t_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_wince_armv4t\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4t_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4T) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_armv4t" +# PROP BASE Intermediate_Dir "evc_winced_armv4t\minimal" +# PROP BASE CPU_ID "{F52316A9-3B7C-4FE7-A67F-68350B41240D}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_armv4t" +# PROP Intermediate_Dir "evc_winced_armv4t\minimal" +# PROP CPU_ID "{F52316A9-3B7C-4FE7-A67F-68350B41240D}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4t_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4t_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clthumb.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /QRarch4T /QRinterwork-return /Zi /Fdevc_winced_armv4t\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4t_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "THUMB" /D "_THUMB_" /D "ARMV4T" /QRarch4T /QRinterwork-return /Zi /Fdevc_winced_armv4t\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4t_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_winced_armv4t\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4t_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_winced_armv4t\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4t_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4I) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_armv4i" +# PROP BASE Intermediate_Dir "evc_wincedll_armv4i\minimal" +# PROP BASE CPU_ID "{DC70F430-E78B-494F-A9D5-62ADC56443B8}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_armv4i" +# PROP Intermediate_Dir "evc_wincedll_armv4i\minimal" +# PROP CPU_ID "{DC70F430-E78B-494F-A9D5-62ADC56443B8}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4I" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4i_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4I" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4i_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4I" /QRarch4T /QRinterwork-return /Fdevc_wincedll_armv4i\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4i_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4I" /QRarch4T /QRinterwork-return /Fdevc_wincedll_armv4i\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4i_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_wincedll_armv4i\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4i_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_wincedll_armv4i\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4i_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4I) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_armv4i" +# PROP BASE Intermediate_Dir "evc_winceddll_armv4i\minimal" +# PROP BASE CPU_ID "{DC70F430-E78B-494F-A9D5-62ADC56443B8}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_armv4i" +# PROP Intermediate_Dir "evc_winceddll_armv4i\minimal" +# PROP CPU_ID "{DC70F430-E78B-494F-A9D5-62ADC56443B8}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4I" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4i_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4I" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4i_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4I" /QRarch4T /QRinterwork-return /Zi /Fdevc_winceddll_armv4i\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4i_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4I" /QRarch4T /QRinterwork-return /Zi /Fdevc_winceddll_armv4i\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4i_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_winceddll_armv4i\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4i_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_winceddll_armv4i\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4i_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4I) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_armv4i" +# PROP BASE Intermediate_Dir "evc_wince_armv4i\minimal" +# PROP BASE CPU_ID "{DC70F430-E78B-494F-A9D5-62ADC56443B8}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_armv4i" +# PROP Intermediate_Dir "evc_wince_armv4i\minimal" +# PROP CPU_ID "{DC70F430-E78B-494F-A9D5-62ADC56443B8}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4I" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4i_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4I" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4i_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4I" /QRarch4T /QRinterwork-return /Fdevc_wince_armv4i\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4i_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4I" /QRarch4T /QRinterwork-return /Fdevc_wince_armv4i\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4i_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_wince_armv4i\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4i_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_wince_armv4i\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4i_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4I) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_armv4i" +# PROP BASE Intermediate_Dir "evc_winced_armv4i\minimal" +# PROP BASE CPU_ID "{DC70F430-E78B-494F-A9D5-62ADC56443B8}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_armv4i" +# PROP Intermediate_Dir "evc_winced_armv4i\minimal" +# PROP CPU_ID "{DC70F430-E78B-494F-A9D5-62ADC56443B8}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4I" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4i_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4I" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4i_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4I" /QRarch4T /QRinterwork-return /Zi /Fdevc_winced_armv4i\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4i_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4I" /QRarch4T /QRinterwork-return /Zi /Fdevc_winced_armv4i\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4i_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_winced_armv4i\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4i_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /MACHINE:THUMB /out:"evc_winced_armv4i\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4i_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_armv4" +# PROP BASE Intermediate_Dir "evc_wincedll_armv4\minimal" +# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_armv4" +# PROP Intermediate_Dir "evc_wincedll_armv4\minimal" +# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4" /Fdevc_wincedll_armv4\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4" /Fdevc_wincedll_armv4\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_wincedll_armv4\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_wincedll_armv4\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_armv4" +# PROP BASE Intermediate_Dir "evc_winceddll_armv4\minimal" +# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_armv4" +# PROP Intermediate_Dir "evc_winceddll_armv4\minimal" +# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4" /Zi /Fdevc_winceddll_armv4\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4" /Zi /Fdevc_winceddll_armv4\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_winceddll_armv4\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_winceddll_armv4\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_armv4" +# PROP BASE Intermediate_Dir "evc_wince_armv4\minimal" +# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_armv4" +# PROP Intermediate_Dir "evc_wince_armv4\minimal" +# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4" /Fdevc_wince_armv4\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4" /Fdevc_wince_armv4\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_armv4_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_wince_armv4\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_wince_armv4\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_armv4_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARMV4) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_armv4" +# PROP BASE Intermediate_Dir "evc_winced_armv4\minimal" +# PROP BASE CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_armv4" +# PROP Intermediate_Dir "evc_winced_armv4\minimal" +# PROP CPU_ID "{ECBEA43D-CD7B-4852-AD55-D4227B5D624B}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /D "ARMV4" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_armv4_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4" /Zi /Fdevc_winced_armv4\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /D "ARMV4" /Zi /Fdevc_winced_armv4\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_armv4_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_winced_armv4\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_winced_armv4\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_armv4_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARM) DLL Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wincedll_arm" +# PROP BASE Intermediate_Dir "evc_wincedll_arm\minimal" +# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wincedll_arm" +# PROP Intermediate_Dir "evc_wincedll_arm\minimal" +# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_arm_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_arm_dll\wince" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /Fdevc_wincedll_arm\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_arm_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /Fdevc_wincedll_arm\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_arm_dll\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_wincedll_arm\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_arm_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_wincedll_arm\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_arm_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARM) DLL Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winceddll_arm" +# PROP BASE Intermediate_Dir "evc_winceddll_arm\minimal" +# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winceddll_arm" +# PROP Intermediate_Dir "evc_winceddll_arm\minimal" +# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_arm_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_arm_dll\winced" /i ".\..\..\include" /i "." /d "WXUSINGDLL" /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /Zi /Fdevc_winceddll_arm\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_arm_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /Zi /Fdevc_winceddll_arm\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_arm_dll\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "WXUSINGDLL" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_winceddll_arm\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_arm_dll" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_winceddll_arm\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_arm_dll" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARM) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "evc_wince_arm" +# PROP BASE Intermediate_Dir "evc_wince_arm\minimal" +# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "evc_wince_arm" +# PROP Intermediate_Dir "evc_wince_arm\minimal" +# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_arm_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /d "__WXWINCE__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_arm_lib\wince" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /Fdevc_wince_arm\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_arm_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /Fdevc_wince_arm\minimal.pdb /M$(CECrtMT) /O2 /I ".\..\..\lib\evc_arm_lib\wince" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "__WXWINCE__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_wince_arm\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_arm_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26.lib wxjpeg.lib wxpng.lib wxzlib.lib wxexpat.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_wince_arm\minimal.exe" /entry:"WinMainCRTStartup" /libpath:".\..\..\lib\evc_arm_lib" /subsystem:windows + +!ELSEIF "$(CFG)" == "minimal - Win32 (WCE ARM) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "evc_winced_arm" +# PROP BASE Intermediate_Dir "evc_winced_arm\minimal" +# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "evc_winced_arm" +# PROP Intermediate_Dir "evc_winced_arm\minimal" +# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +RSC=rc.exe +# ADD BASE RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_arm_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +# ADD RSC /l 0x409 /d UNDER_CE=$(CEVersion) /d _WIN32_WCE=$(CEVersion) /d "UNICODE" /d "_UNICODE" /d "$(CePlatform)" /D "ARM" /D "_ARM_" /d "DEBUG" /d "__WXWINCE__" /d "__WXDEBUG__" /d "wxNO_EXCEPTIONS" /d "wxNO_RTTI" /d "_UNICODE" /i ".\..\..\lib\evc_arm_lib\winced" /i ".\..\..\include" /i "." /i ".\..\..\samples" /d "NOPCH" /r +CPP=clarm.exe +# ADD BASE CPP /nologo /D "ARM" /D "_ARM_" /Zi /Fdevc_winced_arm\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_arm_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +# ADD CPP /nologo /D "ARM" /D "_ARM_" /Zi /Fdevc_winced_arm\minimal.pdb /M$(CECrtMTDebug) /Od /I ".\..\..\lib\evc_arm_lib\winced" /I ".\..\..\include" /W4 /I "." /I ".\..\..\samples" /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /c +MTL=midl.exe +# ADD BASE MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +# ADD MTL /nologo /D UNDER_CE=$(CEVersion) /D _WIN32_WCE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "$(CePlatform)" /D "DEBUG" /D "__WXWINCE__" /D "__WXDEBUG__" /D "wxNO_EXCEPTIONS" /D "wxNO_RTTI" /D "_UNICODE" /D "NOPCH" /mktyplib203 /o "NUL" /win32 +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_winced_arm\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_arm_lib" /subsystem:windows +# ADD LINK32 coredll.lib wxwince26d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib winsock.lib wininet.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /nodefaultlib:"$(CENoDefaultLib)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM /out:"evc_winced_arm\minimal.exe" /entry:"WinMainCRTStartup" /debug /libpath:".\..\..\lib\evc_arm_lib" /subsystem:windows + +!ENDIF + +# Begin Target + +# Name "minimal - Win32 (WCE emulator) DLL Release" +# Name "minimal - Win32 (WCE emulator) DLL Debug" +# Name "minimal - Win32 (WCE emulator) Release" +# Name "minimal - Win32 (WCE emulator) Debug" +# Name "minimal - Win32 (WCE x86) DLL Release" +# Name "minimal - Win32 (WCE x86) DLL Debug" +# Name "minimal - Win32 (WCE x86) Release" +# Name "minimal - Win32 (WCE x86) Debug" +# Name "minimal - Win32 (WCE SH4) DLL Release" +# Name "minimal - Win32 (WCE SH4) DLL Debug" +# Name "minimal - Win32 (WCE SH4) Release" +# Name "minimal - Win32 (WCE SH4) Debug" +# Name "minimal - Win32 (WCE SH3) DLL Release" +# Name "minimal - Win32 (WCE SH3) DLL Debug" +# Name "minimal - Win32 (WCE SH3) Release" +# Name "minimal - Win32 (WCE SH3) Debug" +# Name "minimal - Win32 (WCE MIPSIV_FP) DLL Release" +# Name "minimal - Win32 (WCE MIPSIV_FP) DLL Debug" +# Name "minimal - Win32 (WCE MIPSIV_FP) Release" +# Name "minimal - Win32 (WCE MIPSIV_FP) Debug" +# Name "minimal - Win32 (WCE MIPSIV) DLL Release" +# Name "minimal - Win32 (WCE MIPSIV) DLL Debug" +# Name "minimal - Win32 (WCE MIPSIV) Release" +# Name "minimal - Win32 (WCE MIPSIV) Debug" +# Name "minimal - Win32 (WCE MIPSII_FP) DLL Release" +# Name "minimal - Win32 (WCE MIPSII_FP) DLL Debug" +# Name "minimal - Win32 (WCE MIPSII_FP) Release" +# Name "minimal - Win32 (WCE MIPSII_FP) Debug" +# Name "minimal - Win32 (WCE MIPSII) DLL Release" +# Name "minimal - Win32 (WCE MIPSII) DLL Debug" +# Name "minimal - Win32 (WCE MIPSII) Release" +# Name "minimal - Win32 (WCE MIPSII) Debug" +# Name "minimal - Win32 (WCE MIPS16) DLL Release" +# Name "minimal - Win32 (WCE MIPS16) DLL Debug" +# Name "minimal - Win32 (WCE MIPS16) Release" +# Name "minimal - Win32 (WCE MIPS16) Debug" +# Name "minimal - Win32 (WCE ARMV4T) DLL Release" +# Name "minimal - Win32 (WCE ARMV4T) DLL Debug" +# Name "minimal - Win32 (WCE ARMV4T) Release" +# Name "minimal - Win32 (WCE ARMV4T) Debug" +# Name "minimal - Win32 (WCE ARMV4I) DLL Release" +# Name "minimal - Win32 (WCE ARMV4I) DLL Debug" +# Name "minimal - Win32 (WCE ARMV4I) Release" +# Name "minimal - Win32 (WCE ARMV4I) Debug" +# Name "minimal - Win32 (WCE ARMV4) DLL Release" +# Name "minimal - Win32 (WCE ARMV4) DLL Debug" +# Name "minimal - Win32 (WCE ARMV4) Release" +# Name "minimal - Win32 (WCE ARMV4) Debug" +# Name "minimal - Win32 (WCE ARM) DLL Release" +# Name "minimal - Win32 (WCE ARM) DLL Debug" +# Name "minimal - Win32 (WCE ARM) Release" +# Name "minimal - Win32 (WCE ARM) Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\minimal.cpp +# End Source File +# Begin Source File + +SOURCE=.\..\..\samples\sample.rc +# End Source File +# End Group +# End Target +# End Project + diff --git a/minimal.vcproj b/minimal.vcproj new file mode 100755 index 0000000..95cd41b --- /dev/null +++ b/minimal.vcproj @@ -0,0 +1,2462 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/minimal.vcproj.8.00.old b/minimal.vcproj.8.00.old new file mode 100755 index 0000000..87bd62f --- /dev/null +++ b/minimal.vcproj.8.00.old @@ -0,0 +1,2477 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/minimal.vcproj.86352161F90541E.Administrator.user b/minimal.vcproj.86352161F90541E.Administrator.user new file mode 100755 index 0000000..136fce2 --- /dev/null +++ b/minimal.vcproj.86352161F90541E.Administrator.user @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/minimal.vcproj.BILLCONA-193C07.billconan.user b/minimal.vcproj.BILLCONA-193C07.billconan.user new file mode 100755 index 0000000..a9010dc --- /dev/null +++ b/minimal.vcproj.BILLCONA-193C07.billconan.user @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/minimal.vcproj.BILLCONA-37C5A6.billconan.user b/minimal.vcproj.BILLCONA-37C5A6.billconan.user new file mode 100755 index 0000000..d337ca3 --- /dev/null +++ b/minimal.vcproj.BILLCONA-37C5A6.billconan.user @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/minimal.vcproj.BILLCONA.billconan.user b/minimal.vcproj.BILLCONA.billconan.user new file mode 100755 index 0000000..ab59b17 --- /dev/null +++ b/minimal.vcproj.BILLCONA.billconan.user @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/minimal.vcproj.LIAOHUSHENG.billconan.user b/minimal.vcproj.LIAOHUSHENG.billconan.user new file mode 100755 index 0000000..4e23d44 --- /dev/null +++ b/minimal.vcproj.LIAOHUSHENG.billconan.user @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/minimal.vcproj.UCD-F9B259DC97F.billconan.user b/minimal.vcproj.UCD-F9B259DC97F.billconan.user new file mode 100755 index 0000000..c16662b --- /dev/null +++ b/minimal.vcproj.UCD-F9B259DC97F.billconan.user @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/minimal.vcw b/minimal.vcw new file mode 100755 index 0000000..8f34852 --- /dev/null +++ b/minimal.vcw @@ -0,0 +1,17 @@ +Microsoft eMbedded Visual Tools Workspace File, Format Version 4.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "minimal"=minimal.vcp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + diff --git a/minimalW7.xml b/minimalW7.xml new file mode 100755 index 0000000..19caa36 --- /dev/null +++ b/minimalW7.xml @@ -0,0 +1,1968 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + wxWin App Release + + + + UserSourceTrees + + + AlwaysSearchUserPathstrue + InterpretDOSAndUnixPathstrue + RequireFrameworkStyleIncludesfalse + UserSearchPaths + + SearchPath + Path: + PathFormatMacOS + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SystemSearchPaths + + SearchPath + Path:MSL: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\..\lib\cw7msw\include + PathFormatWindows + PathRootProject + + Recursivefalse + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\..\include + PathFormatWindows + PathRootProject + + Recursivefalse + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\..\lib + PathFormatWindows + PathRootProject + + Recursivefalse + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:Win32-x86 Support:Headers: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:Win32-x86 Support:Libraries: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:Win32-x86 Support:Headers:Win32 SDK: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + + + MWRuntimeSettings_WorkingDirectory + MWRuntimeSettings_CommandLine + MWRuntimeSettings_HostApplication + Path + PathFormatGeneric + PathRootAbsolute + + MWRuntimeSettings_EnvVars + + + LinkerWin32 x86 Linker + PreLinker + PostLinker + TargetnamewxWin App Release + OutputDirectory + Path: + PathFormatMacOS + PathRootProject + + SaveEntriesUsingRelativePathsfalse + + + FileMappings + + FileTypeTEXT + FileExtension.c + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.c++ + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cc + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cp + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cpp + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.def + Compiler + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.h + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMaketrue + + + FileTypeTEXT + FileExtension.pch + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pch++ + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.rc + CompilerMW WinRC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.res + CompilerWinRes Import + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.doc + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFilefalse + IgnoredByMaketrue + + + FileExtension.lib + CompilerLib Import x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.obj + CompilerObj Import x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + + + CacheModDatestrue + ActivateBrowsertrue + DumpBrowserInfofalse + CacheSubprojectstrue + UseThirdPartyDebuggerfalse + DebuggerAppPath + Path + PathFormatGeneric + PathRootAbsolute + + DebuggerCmdLineArgs + DebuggerWorkingDir + Path + PathFormatGeneric + PathRootAbsolute + + + + LogSystemMessagestrue + AutoTargetDLLsfalse + StopAtWatchpointstrue + PauseWhileRunningfalse + PauseInterval5 + PauseUIFlags0 + AltExePath + Path + PathFormatGeneric + PathRootAbsolute + + StopAtTempBPOnLaunchtrue + CacheSymbolicstrue + TempBPFunctionNamemain + TempBPType0 + + + Enabledfalse + ConnectionName + DownloadPath + LaunchRemoteAppfalse + RemoteAppPath + + + OtherExecutables + + + CustomColor1 + Red0 + Green32767 + Blue0 + + CustomColor2 + Red0 + Green32767 + Blue0 + + CustomColor3 + Red0 + Green32767 + Blue0 + + CustomColor4 + Red0 + Green32767 + Blue0 + + + + Perl_Prefix_Filename + + + MWCodeGen_PPC_structalignmentMC68K + MWCodeGen_PPC_tracebacktablesNone + MWCodeGen_PPC_processorGeneric + MWCodeGen_PPC_readonlystrings0 + MWCodeGen_PPC_tocdata1 + MWCodeGen_PPC_profiler0 + MWCodeGen_PPC_fpcontract1 + MWCodeGen_PPC_schedule0 + MWCodeGen_PPC_peephole1 + MWCodeGen_PPC_processorspecific0 + MWCodeGen_PPC_altivec0 + MWCodeGen_PPC_vectortocdata0 + MWCodeGen_PPC_vrsave0 + + + MWCodeGen_X86_processorPentiumII + MWCodeGen_X86_alignmentbytes8 + MWCodeGen_X86_exceptionsZeroOverhead + MWCodeGen_X86_extinst_mmx0 + MWCodeGen_X86_extinst_3dnow0 + MWCodeGen_X86_use_mmx_3dnow_convention0 + MWCodeGen_X86_machinecodelisting0 + MWCodeGen_X86_intrinsics1 + MWCodeGen_X86_syminfo0 + MWCodeGen_X86_codeviewinfo0 + MWCodeGen_X86_extinst_cmov_fcomi0 + MWCodeGen_X86_extinst_sse0 + + + MWDebugger_X86_Exceptions + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + PDisasmX86_showHeaderstrue + PDisasmX86_showSymTabtrue + PDisasmX86_showCodetrue + PDisasmX86_showSourcefalse + PDisasmX86_showHextrue + PDisasmX86_showRelocationtrue + PDisasmX86_showCommentsfalse + PDisasmX86_showDebugfalse + PDisasmX86_showExceptionsfalse + PDisasmX86_showDatatrue + PDisasmX86_showRawfalse + PDisasmX86_verbosefalse + + + MWDisassembler_PPC_showcode1 + MWDisassembler_PPC_extended1 + MWDisassembler_PPC_mix0 + MWDisassembler_PPC_nohex0 + MWDisassembler_PPC_showdata1 + MWDisassembler_PPC_showexceptions1 + MWDisassembler_PPC_showsym0 + MWDisassembler_PPC_shownames1 + + + MWFrontEnd_C_cplusplus0 + MWFrontEnd_C_checkprotos0 + MWFrontEnd_C_arm0 + MWFrontEnd_C_trigraphs0 + MWFrontEnd_C_onlystdkeywords0 + MWFrontEnd_C_enumsalwaysint0 + MWFrontEnd_C_mpwpointerstyle0 + MWFrontEnd_C_prefixname/wx/wx_cw.h + MWFrontEnd_C_ansistrict0 + MWFrontEnd_C_mpwcnewline0 + MWFrontEnd_C_wchar_type1 + MWFrontEnd_C_enableexceptions1 + MWFrontEnd_C_dontreusestrings0 + MWFrontEnd_C_poolstrings0 + MWFrontEnd_C_dontinline0 + MWFrontEnd_C_useRTTI1 + MWFrontEnd_C_multibyteaware0 + MWFrontEnd_C_unsignedchars0 + MWFrontEnd_C_autoinline0 + MWFrontEnd_C_booltruefalse1 + MWFrontEnd_C_direct_to_som0 + MWFrontEnd_C_som_env_check0 + MWFrontEnd_C_alwaysinline0 + MWFrontEnd_C_inlinelevel0 + MWFrontEnd_C_ecplusplus0 + MWFrontEnd_C_objective_c0 + MWFrontEnd_C_defer_codegen0 + + + MWFTP_Post_hostName + MWFTP_Post_username + MWFTP_Post_password0€9 + MWFTP_Post_remoteDir + MWFTP_Post_ftp_PathVersion1 + MWFTP_Post_ftp_PathType0 + MWFTP_Post_ftp_PathFormat0 + MWFTP_Post_ftp_tree + MWFTP_Post_uploadDir + MWFTP_Post_ftp_port21 + MWFTP_Post_SendBin1 + MWFTP_Post_ShouldLog1 + + + MWCommandLine_Java_clsName + MWCommandLine_Java_args + + + MWVJavaDebugging_Protocol1 + MWVJavaDebugging_JDKVersion1 + MWVJavaDebugging_TimeOut25 + MWVJavaDebugging_SupportSlowDevicesfalse + + + MWJavaDoc_Proj_Version1 + MWJavaDoc_Proj_Depricated1 + MWJavaDoc_Proj_Author1 + MWJavaDoc_Proj_Index1 + MWJavaDoc_Proj_Tree1 + MWJavaDoc_Proj_SunResolveToSame0 + MWJavaDoc_Proj_Shortnames1 + MWJavaDoc_Proj_Folder0 + MWJavaDoc_Proj_GenerateAPILinks0 + MWJavaDoc_Proj_scopePublic + MWJavaDoc_Proj_encodingName + MWJavaDoc_Proj_decodingName + MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ + + + MWJava_Language_optimizefalse + MWJava_Language_warnDeprecatedfalse + MWJava_Language_emitMapfalse + MWJava_Language_strictFileNamesfalse + MWJava_Language_strictFileHierarchyfalse + MWJava_Language_1_1_Compatiblefalse + MWJava_Language_emitHeaders0 + MWJava_Language_headerTypeJNINativeHeaders + MWJava_Language_packageFilter + MWJava_Language_genCommentstrue + MWJava_Language_genHeadersfalse + + + MWJava_Output_outputtypeJarFile + MWJava_Output_outfileJavaClasses.jar + MWJava_Output_ftype542132570 + MWJava_Output_fcreator1348097869 + MWJava_Output_compress0 + MWJava_Output_genManifest0 + MWJava_Output_trunctypeFront + MWJava_Output_deleteClasses0 + MWJava_Output_consoleApp1 + + + MWJava_Proj_projtypeApplet + MWJava_Proj_mainClassName + MWJava_Proj_HTMLAppCreator1145457748 + MWJava_Proj_HTMLAppNameMetrowerks Java + MWJava_Proj_PathVersion1 + MWJava_Proj_PathType0 + MWJava_Proj_PathFormat0 + MWJava_Proj_tree + MWJava_Proj_HTMLAppWin32NameInternet Explorer + MWJava_Proj_compress0 + MWJava_Proj_useVM1 + MWJava_Proj_vmarguments + MWJava_Proj_vmName + MWJava_Proj_simPropFile + MWJava_Proj_useJCVM1 + MWJava_Proj_aidData + + + MWLinker_PPC_linksym1 + MWLinker_PPC_symfullpath1 + MWLinker_PPC_linkmap0 + MWLinker_PPC_nolinkwarnings0 + MWLinker_PPC_dontdeadstripinitcode0 + MWLinker_PPC_permitmultdefs0 + MWLinker_PPC_linkmodeFast + MWLinker_PPC_initname + MWLinker_PPC_mainname__start + MWLinker_PPC_termname + + + MWLinker_X86_entrypointusageDefault + MWLinker_X86_entrypoint + MWLinker_X86_subsystemWinGUI + MWLinker_X86_subsysmajorid4 + MWLinker_X86_subsysminorid0 + MWLinker_X86_usrmajorid0 + MWLinker_X86_usrminorid0 + MWLinker_X86_commandfile + MWLinker_X86_generatemap0 + MWLinker_X86_linksym0 + MWLinker_X86_linkCV0 + + + MWMerge_MacOS_projectTypeApplication + MWMerge_MacOS_outputNameMerge Out + MWMerge_MacOS_outputCreator???? + MWMerge_MacOS_outputTypeAPPL + MWMerge_MacOS_suppressWarning0 + MWMerge_MacOS_copyFragments1 + MWMerge_MacOS_copyResources1 + MWMerge_MacOS_flattenResource0 + MWMerge_MacOS_flatFileNamea.rsrc + MWMerge_MacOS_flatFileOutputPath + Path: + PathFormatMacOS + PathRootProject + + MWMerge_MacOS_skipResources + DLGX + ckid + Proj + WSPC + + + + MWMacOSPackager_UsePackager0 + MWMacOSPackager_FolderToPackage + Path: + PathFormatMacOS + PathRootProject + + MWMacOSPackager_CreateClassicAlias0 + MWMacOSPackager_ClassicAliasMethodUseTargetOutput + MWMacOSPackager_ClassicAliasPath + Path: + PathFormatMacOS + PathRootProject + + MWMacOSPackager_CreatePkgInfo0 + MWMacOSPackager_PkgCreatorType???? + MWMacOSPackager_PkgFileTypeLPPA + + + MWPEF_exportsNone + MWPEF_libfolder0 + MWPEF_sortcodeNone + MWPEF_expandbss0 + MWPEF_sharedata0 + MWPEF_olddefversion0 + MWPEF_oldimpversion0 + MWPEF_currentversion0 + MWPEF_fragmentname + MWPEF_collapsereloads0 + + + MWAssembler_PPC_auxheader0 + MWAssembler_PPC_symmodeMac + MWAssembler_PPC_dialectPPC + MWAssembler_PPC_prefixfile + MWAssembler_PPC_typecheck0 + MWAssembler_PPC_warnings0 + MWAssembler_PPC_casesensitive0 + + + GlobalOptimizer_PPC_optimizationlevelLevel0 + GlobalOptimizer_PPC_optforSpeed + + + MWProject_PPC_typeApplication + MWProject_PPC_outfilea.out + MWProject_PPC_filecreator???? + MWProject_PPC_filetypeAPPL + MWProject_PPC_size384 + MWProject_PPC_minsize384 + MWProject_PPC_stacksize64 + MWProject_PPC_flags22720 + MWProject_PPC_symfilename + MWProject_PPC_rsrcname + MWProject_PPC_rsrcheaderNative + MWProject_PPC_rsrctype???? + MWProject_PPC_rsrcid0 + MWProject_PPC_rsrcflags0 + MWProject_PPC_rsrcstore0 + MWProject_PPC_rsrcmerge0 + MWProject_PPC_flatrsrc0 + MWProject_PPC_flatrsrcoutputdir + Path: + PathFormatMacOS + PathRootProject + + MWProject_PPC_flatrsrcfilename + + + MWProject_X86_typeApplication + MWProject_X86_outfileAppRelease.exe + MWProject_X86_baseaddress4194304 + MWProject_X86_maxstacksize1024 + MWProject_X86_minstacksize4 + MWProject_X86_size1024 + MWProject_X86_minsize4 + MWProject_X86_importlib + Resource Flattener Panel + 0100000000000000000000000000000000000000000000000000000000000000 + 0000074F75742E62696E00000000000000000000000000000000000000000000 + 0000 + + + + MWRez_Language_maxwidth80 + MWRez_Language_scriptRoman + MWRez_Language_alignmentAlign1 + MWRez_Language_filtermodeFilterSkip + MWRez_Language_suppresswarnings0 + MWRez_Language_escapecontrolchars1 + MWRez_Language_prefixname + MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' + + + MWWarning_C_warn_illpragma0 + MWWarning_C_warn_emptydecl0 + MWWarning_C_warn_possunwant0 + MWWarning_C_warn_unusedvar0 + MWWarning_C_warn_unusedarg0 + MWWarning_C_warn_extracomma0 + MWWarning_C_pedantic0 + MWWarning_C_warningerrors0 + MWWarning_C_warn_hidevirtual0 + MWWarning_C_warn_implicitconv0 + MWWarning_C_warn_notinlined0 + MWWarning_C_warn_structclass0 + + + MWWinRC_prefixname + + + GlobalOptimizer_X86__optimizationlevelLevel4 + GlobalOptimizer_X86__optforSpeed + + + + Name + MSL_All_x86.lib + Windows + Unknown + Debug + + + Name + COMDLG32.LIB + MacOS + Text + Debug + + + Name + GDI32.LIB + MacOS + Text + Debug + + + Name + KERNEL32.LIB + MacOS + Text + Debug + + + Name + USER32.LIB + MacOS + Text + Debug + + + Name + COMCTL32.LIB + MacOS + Text + Debug + + + Name + SHELL32.LIB + MacOS + Text + Debug + + + Name + OLE32.LIB + MacOS + Text + Debug + + + Name + UUID.LIB + MacOS + Text + Debug + + + Name + wx_x86.lib + Windows + Library + Debug + + + Name + WINSPOOL.LIB + Windows + Library + Debug + + + Name + advapi32.lib + Windows + Library + Debug + + + Name + WSOCK32.LIB + Windows + Library + Debug + + + Name + rpcrt4.lib + Windows + Library + Debug + + + Name + odbc32.lib + Windows + Library + Debug + + + Name + minimal.rc + Windows + Text + Debug + + + Name + minimal.cpp + Windows + Text + Debug + + + + + Name + wx_x86.lib + Windows + + + Name + MSL_All_x86.lib + Windows + + + Name + COMDLG32.LIB + MacOS + + + Name + GDI32.LIB + MacOS + + + Name + KERNEL32.LIB + MacOS + + + Name + USER32.LIB + MacOS + + + Name + COMCTL32.LIB + MacOS + + + Name + SHELL32.LIB + MacOS + + + Name + OLE32.LIB + MacOS + + + Name + UUID.LIB + MacOS + + + Name + WINSPOOL.LIB + Windows + + + Name + advapi32.lib + Windows + + + Name + WSOCK32.LIB + Windows + + + Name + rpcrt4.lib + Windows + + + Name + odbc32.lib + Windows + + + Name + minimal.rc + Windows + + + Name + minimal.cpp + Windows + + + + + wxWin App Debug + + + + UserSourceTrees + + + AlwaysSearchUserPathstrue + InterpretDOSAndUnixPathstrue + RequireFrameworkStyleIncludesfalse + UserSearchPaths + + SearchPath + Path: + PathFormatMacOS + PathRootProject + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SystemSearchPaths + + SearchPath + Path:MSL: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\..\lib\cw7mswd\include + PathFormatWindows + PathRootProject + + Recursivefalse + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\..\include + PathFormatWindows + PathRootProject + + Recursivefalse + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path..\..\lib + PathFormatWindows + PathRootProject + + Recursivefalse + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:Win32-x86 Support:Headers: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:Win32-x86 Support:Libraries: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + SearchPath + Path:Win32-x86 Support:Headers:Win32 SDK: + PathFormatMacOS + PathRootCodeWarrior + + Recursivetrue + FrameworkPathfalse + HostFlagsAll + + + + + MWRuntimeSettings_WorkingDirectory + MWRuntimeSettings_CommandLine + MWRuntimeSettings_HostApplication + Path + PathFormatGeneric + PathRootAbsolute + + MWRuntimeSettings_EnvVars + + + LinkerWin32 x86 Linker + PreLinker + PostLinker + TargetnamewxWin App Debug + OutputDirectory + Path: + PathFormatMacOS + PathRootProject + + SaveEntriesUsingRelativePathsfalse + + + FileMappings + + FileTypeTEXT + FileExtension.c + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.c++ + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cc + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cp + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.cpp + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.def + Compiler + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.h + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMaketrue + + + FileTypeTEXT + FileExtension.pch + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.pch++ + CompilerMW C/C++ x86 + EditLanguageC/C++ + Precompiletrue + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.rc + CompilerMW WinRC + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileTypeTEXT + FileExtension.res + CompilerWinRes Import + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.doc + Compiler + EditLanguage + Precompilefalse + Launchabletrue + ResourceFilefalse + IgnoredByMaketrue + + + FileExtension.lib + CompilerLib Import x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + FileExtension.obj + CompilerObj Import x86 + EditLanguage + Precompilefalse + Launchablefalse + ResourceFilefalse + IgnoredByMakefalse + + + + + CacheModDatestrue + ActivateBrowsertrue + DumpBrowserInfofalse + CacheSubprojectstrue + UseThirdPartyDebuggerfalse + DebuggerAppPath + Path + PathFormatGeneric + PathRootAbsolute + + DebuggerCmdLineArgs + DebuggerWorkingDir + Path + PathFormatGeneric + PathRootAbsolute + + + + LogSystemMessagestrue + AutoTargetDLLstrue + StopAtWatchpointstrue + PauseWhileRunningfalse + PauseInterval5 + PauseUIFlags0 + AltExePath + Path + PathFormatGeneric + PathRootAbsolute + + StopAtTempBPOnLaunchtrue + CacheSymbolicstrue + TempBPFunctionNamemain + TempBPType0 + + + Enabledfalse + ConnectionName + DownloadPath + LaunchRemoteAppfalse + RemoteAppPath + + + OtherExecutables + + + CustomColor1 + Red0 + Green32767 + Blue0 + + CustomColor2 + Red0 + Green32767 + Blue0 + + CustomColor3 + Red0 + Green32767 + Blue0 + + CustomColor4 + Red0 + Green32767 + Blue0 + + + + Perl_Prefix_Filename + + + MWCodeGen_PPC_structalignmentMC68K + MWCodeGen_PPC_tracebacktablesNone + MWCodeGen_PPC_processorGeneric + MWCodeGen_PPC_readonlystrings0 + MWCodeGen_PPC_tocdata1 + MWCodeGen_PPC_profiler0 + MWCodeGen_PPC_fpcontract1 + MWCodeGen_PPC_schedule0 + MWCodeGen_PPC_peephole1 + MWCodeGen_PPC_processorspecific0 + MWCodeGen_PPC_altivec0 + MWCodeGen_PPC_vectortocdata0 + MWCodeGen_PPC_vrsave0 + + + MWCodeGen_X86_processorGeneric + MWCodeGen_X86_alignmentbytes8 + MWCodeGen_X86_exceptionsZeroOverhead + MWCodeGen_X86_extinst_mmx0 + MWCodeGen_X86_extinst_3dnow0 + MWCodeGen_X86_use_mmx_3dnow_convention0 + MWCodeGen_X86_machinecodelisting0 + MWCodeGen_X86_intrinsics0 + MWCodeGen_X86_syminfo0 + MWCodeGen_X86_codeviewinfo1 + MWCodeGen_X86_extinst_cmov_fcomi0 + MWCodeGen_X86_extinst_sse0 + + + MWDebugger_X86_Exceptions + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + PDisasmX86_showHeaderstrue + PDisasmX86_showSymTabtrue + PDisasmX86_showCodetrue + PDisasmX86_showSourcefalse + PDisasmX86_showHextrue + PDisasmX86_showRelocationtrue + PDisasmX86_showCommentsfalse + PDisasmX86_showDebugfalse + PDisasmX86_showExceptionsfalse + PDisasmX86_showDatatrue + PDisasmX86_showRawfalse + PDisasmX86_verbosefalse + + + MWDisassembler_PPC_showcode1 + MWDisassembler_PPC_extended1 + MWDisassembler_PPC_mix0 + MWDisassembler_PPC_nohex0 + MWDisassembler_PPC_showdata1 + MWDisassembler_PPC_showexceptions1 + MWDisassembler_PPC_showsym0 + MWDisassembler_PPC_shownames1 + + + MWFrontEnd_C_cplusplus0 + MWFrontEnd_C_checkprotos0 + MWFrontEnd_C_arm0 + MWFrontEnd_C_trigraphs0 + MWFrontEnd_C_onlystdkeywords0 + MWFrontEnd_C_enumsalwaysint0 + MWFrontEnd_C_mpwpointerstyle0 + MWFrontEnd_C_prefixname/wx/wx_cw_d.h + MWFrontEnd_C_ansistrict0 + MWFrontEnd_C_mpwcnewline0 + MWFrontEnd_C_wchar_type1 + MWFrontEnd_C_enableexceptions1 + MWFrontEnd_C_dontreusestrings0 + MWFrontEnd_C_poolstrings0 + MWFrontEnd_C_dontinline0 + MWFrontEnd_C_useRTTI1 + MWFrontEnd_C_multibyteaware0 + MWFrontEnd_C_unsignedchars0 + MWFrontEnd_C_autoinline0 + MWFrontEnd_C_booltruefalse1 + MWFrontEnd_C_direct_to_som0 + MWFrontEnd_C_som_env_check0 + MWFrontEnd_C_alwaysinline0 + MWFrontEnd_C_inlinelevel0 + MWFrontEnd_C_ecplusplus0 + MWFrontEnd_C_objective_c0 + MWFrontEnd_C_defer_codegen0 + + + MWFTP_Post_hostName + MWFTP_Post_username + MWFTP_Post_password0€9ð…9@|ø…9@|ÿGDÎ + MWFTP_Post_remoteDir + MWFTP_Post_ftp_PathVersion1 + MWFTP_Post_ftp_PathType0 + MWFTP_Post_ftp_PathFormat0 + MWFTP_Post_ftp_tree + MWFTP_Post_uploadDir + MWFTP_Post_ftp_port21 + MWFTP_Post_SendBin1 + MWFTP_Post_ShouldLog1 + + + MWCommandLine_Java_clsName + MWCommandLine_Java_args + + + MWVJavaDebugging_Protocol1 + MWVJavaDebugging_JDKVersion1 + MWVJavaDebugging_TimeOut25 + MWVJavaDebugging_SupportSlowDevicesfalse + + + MWJavaDoc_Proj_Version1 + MWJavaDoc_Proj_Depricated1 + MWJavaDoc_Proj_Author1 + MWJavaDoc_Proj_Index1 + MWJavaDoc_Proj_Tree1 + MWJavaDoc_Proj_SunResolveToSame0 + MWJavaDoc_Proj_Shortnames1 + MWJavaDoc_Proj_Folder0 + MWJavaDoc_Proj_GenerateAPILinks0 + MWJavaDoc_Proj_scopePublic + MWJavaDoc_Proj_encodingName + MWJavaDoc_Proj_decodingName + MWJavaDoc_Proj_javaPackagePathhttp://java.sun.com/products/jdk/1.1/docs/api/ + + + MWJava_Language_optimizefalse + MWJava_Language_warnDeprecatedfalse + MWJava_Language_emitMapfalse + MWJava_Language_strictFileNamesfalse + MWJava_Language_strictFileHierarchyfalse + MWJava_Language_1_1_Compatiblefalse + MWJava_Language_emitHeaders0 + MWJava_Language_headerTypeJNINativeHeaders + MWJava_Language_packageFilter + MWJava_Language_genCommentstrue + MWJava_Language_genHeadersfalse + + + MWJava_Output_outputtypeJarFile + MWJava_Output_outfileJavaClasses.jar + MWJava_Output_ftype542132570 + MWJava_Output_fcreator1348097869 + MWJava_Output_compress0 + MWJava_Output_genManifest0 + MWJava_Output_trunctypeFront + MWJava_Output_deleteClasses0 + MWJava_Output_consoleApp1 + + + MWJava_Proj_projtypeApplet + MWJava_Proj_mainClassName + MWJava_Proj_HTMLAppCreator1145457748 + MWJava_Proj_HTMLAppNameMetrowerks Java + MWJava_Proj_PathVersion1 + MWJava_Proj_PathType0 + MWJava_Proj_PathFormat0 + MWJava_Proj_tree + MWJava_Proj_HTMLAppWin32NameInternet Explorer + MWJava_Proj_compress0 + MWJava_Proj_useVM1 + MWJava_Proj_vmarguments + MWJava_Proj_vmName + MWJava_Proj_simPropFile + MWJava_Proj_useJCVM1 + MWJava_Proj_aidData + + + MWLinker_PPC_linksym1 + MWLinker_PPC_symfullpath1 + MWLinker_PPC_linkmap0 + MWLinker_PPC_nolinkwarnings0 + MWLinker_PPC_dontdeadstripinitcode0 + MWLinker_PPC_permitmultdefs0 + MWLinker_PPC_linkmodeFast + MWLinker_PPC_initname + MWLinker_PPC_mainname__start + MWLinker_PPC_termname + + + MWLinker_X86_entrypointusageDefault + MWLinker_X86_entrypoint + MWLinker_X86_subsystemWinGUI + MWLinker_X86_subsysmajorid4 + MWLinker_X86_subsysminorid0 + MWLinker_X86_usrmajorid0 + MWLinker_X86_usrminorid0 + MWLinker_X86_commandfile + MWLinker_X86_generatemap0 + MWLinker_X86_linksym0 + MWLinker_X86_linkCV1 + + + MWMerge_MacOS_projectTypeApplication + MWMerge_MacOS_outputNameMerge Out + MWMerge_MacOS_outputCreator???? + MWMerge_MacOS_outputTypeAPPL + MWMerge_MacOS_suppressWarning0 + MWMerge_MacOS_copyFragments1 + MWMerge_MacOS_copyResources1 + MWMerge_MacOS_flattenResource0 + MWMerge_MacOS_flatFileNamea.rsrc + MWMerge_MacOS_flatFileOutputPath + Path: + PathFormatMacOS + PathRootProject + + MWMerge_MacOS_skipResources + DLGX + ckid + Proj + WSPC + + + + MWMacOSPackager_UsePackager0 + MWMacOSPackager_FolderToPackage + Path: + PathFormatMacOS + PathRootProject + + MWMacOSPackager_CreateClassicAlias0 + MWMacOSPackager_ClassicAliasMethodUseTargetOutput + MWMacOSPackager_ClassicAliasPath + Path: + PathFormatMacOS + PathRootProject + + MWMacOSPackager_CreatePkgInfo0 + MWMacOSPackager_PkgCreatorType???? + MWMacOSPackager_PkgFileTypeLPPA + + + MWPEF_exportsNone + MWPEF_libfolder0 + MWPEF_sortcodeNone + MWPEF_expandbss0 + MWPEF_sharedata0 + MWPEF_olddefversion0 + MWPEF_oldimpversion0 + MWPEF_currentversion0 + MWPEF_fragmentname + MWPEF_collapsereloads0 + + + MWAssembler_PPC_auxheader0 + MWAssembler_PPC_symmodeMac + MWAssembler_PPC_dialectPPC + MWAssembler_PPC_prefixfile + MWAssembler_PPC_typecheck0 + MWAssembler_PPC_warnings0 + MWAssembler_PPC_casesensitive0 + + + GlobalOptimizer_PPC_optimizationlevelLevel0 + GlobalOptimizer_PPC_optforSpeed + + + MWProject_PPC_typeApplication + MWProject_PPC_outfilea.out + MWProject_PPC_filecreator???? + MWProject_PPC_filetypeAPPL + MWProject_PPC_size384 + MWProject_PPC_minsize384 + MWProject_PPC_stacksize64 + MWProject_PPC_flags22720 + MWProject_PPC_symfilename + MWProject_PPC_rsrcname + MWProject_PPC_rsrcheaderNative + MWProject_PPC_rsrctype???? + MWProject_PPC_rsrcid0 + MWProject_PPC_rsrcflags0 + MWProject_PPC_rsrcstore0 + MWProject_PPC_rsrcmerge0 + MWProject_PPC_flatrsrc0 + MWProject_PPC_flatrsrcoutputdir + Path: + PathFormatMacOS + PathRootProject + + MWProject_PPC_flatrsrcfilename + + + MWProject_X86_typeApplication + MWProject_X86_outfileAppDebug.exe + MWProject_X86_baseaddress4194304 + MWProject_X86_maxstacksize1024 + MWProject_X86_minstacksize4 + MWProject_X86_size1024 + MWProject_X86_minsize4 + MWProject_X86_importlib + Resource Flattener Panel + 0100000000000000000000000000000000000000000000000000000000000000 + 0000074F75742E62696E00000000000000000000000000000000000000000000 + 0000 + + + + MWRez_Language_maxwidth80 + MWRez_Language_scriptRoman + MWRez_Language_alignmentAlign1 + MWRez_Language_filtermodeFilterSkip + MWRez_Language_suppresswarnings0 + MWRez_Language_escapecontrolchars1 + MWRez_Language_prefixname + MWRez_Language_filteredtypes'CODE' 'DATA' 'PICT' + + + MWWarning_C_warn_illpragma0 + MWWarning_C_warn_emptydecl0 + MWWarning_C_warn_possunwant0 + MWWarning_C_warn_unusedvar0 + MWWarning_C_warn_unusedarg0 + MWWarning_C_warn_extracomma0 + MWWarning_C_pedantic0 + MWWarning_C_warningerrors0 + MWWarning_C_warn_hidevirtual0 + MWWarning_C_warn_implicitconv0 + MWWarning_C_warn_notinlined0 + MWWarning_C_warn_structclass0 + + + MWWinRC_prefixname + + + GlobalOptimizer_X86__optimizationlevelLevel0 + GlobalOptimizer_X86__optforSpeed + + + + Name + COMDLG32.LIB + MacOS + Text + Debug + + + Name + GDI32.LIB + MacOS + Text + Debug + + + Name + KERNEL32.LIB + MacOS + Text + Debug + + + Name + USER32.LIB + MacOS + Text + Debug + + + Name + COMCTL32.LIB + MacOS + Text + Debug + + + Name + SHELL32.LIB + MacOS + Text + Debug + + + Name + OLE32.LIB + MacOS + Text + Debug + + + Name + UUID.LIB + MacOS + Text + Debug + + + Name + MSL_All_x86_D.lib + Windows + Unknown + Debug + + + Name + wx_x86_d.lib + MacOS + Unknown + Debug + + + Name + WINSPOOL.LIB + Windows + Library + Debug + + + Name + advapi32.lib + Windows + Library + Debug + + + Name + WSOCK32.LIB + Windows + Library + Debug + + + Name + rpcrt4.lib + Windows + Library + Debug + + + Name + odbc32.lib + Windows + Library + Debug + + + Name + minimal.rc + Windows + Text + Debug + + + Name + minimal.cpp + Windows + Text + Debug + + + + + Name + wx_x86_d.lib + MacOS + + + Name + MSL_All_x86_D.lib + Windows + + + Name + advapi32.lib + Windows + + + Name + COMDLG32.LIB + MacOS + + + Name + GDI32.LIB + MacOS + + + Name + KERNEL32.LIB + MacOS + + + Name + USER32.LIB + MacOS + + + Name + COMCTL32.LIB + MacOS + + + Name + SHELL32.LIB + MacOS + + + Name + OLE32.LIB + MacOS + + + Name + UUID.LIB + MacOS + + + Name + WINSPOOL.LIB + Windows + + + Name + WSOCK32.LIB + Windows + + + Name + rpcrt4.lib + Windows + + + Name + odbc32.lib + Windows + + + Name + minimal.rc + Windows + + + Name + minimal.cpp + Windows + + + + + + + wxWin App Debug + wxWin App Release + + + + Source + + wxWin App Release + Name + minimal.rc + Windows + + + wxWin App Release + Name + minimal.cpp + Windows + + + wx + + wxWin App Release + Name + wx_x86.lib + Windows + + + wxWin App Debug + Name + wx_x86_d.lib + MacOS + + + MSL ANSI Libraries + + wxWin App Release + Name + MSL_All_x86.lib + Windows + + + wxWin App Debug + Name + MSL_All_x86_D.lib + Windows + + + Win32 SDK + + wxWin App Release + Name + advapi32.lib + Windows + + + wxWin App Release + Name + COMCTL32.LIB + MacOS + + + wxWin App Release + Name + COMDLG32.LIB + MacOS + + + wxWin App Release + Name + GDI32.LIB + MacOS + + + wxWin App Release + Name + KERNEL32.LIB + MacOS + + + wxWin App Release + Name + odbc32.lib + Windows + + + wxWin App Release + Name + OLE32.LIB + MacOS + + + wxWin App Release + Name + rpcrt4.lib + Windows + + + wxWin App Release + Name + SHELL32.LIB + MacOS + + + wxWin App Release + Name + USER32.LIB + MacOS + + + wxWin App Release + Name + UUID.LIB + MacOS + + + wxWin App Release + Name + WINSPOOL.LIB + Windows + + + wxWin App Release + Name + WSOCK32.LIB + Windows + + + + + diff --git a/mondrian.r b/mondrian.r new file mode 100755 index 0000000..1a5f5a9 --- /dev/null +++ b/mondrian.r @@ -0,0 +1,2675 @@ +data 'vers' (2) { +$"0100 2000 0000 0531 2E30 6430 0531 2E30" +$"6430"} ; + +data 'vers' (1) { +$"0100 2000 0000 0531 2E30 6430 0531 2E30" +$"6430"} ; + +data 'ICN#' (-16455, "Item Icon") { + $"FFFF FFFF F700 001D BB00 002B D700 0057" + $"ED00 009D BB00 0539 DD00 1261 F700 A4E1" + $"FFFE 539F 8100 A52F 8102 AED7 8105 4BAB" + $"8103 BD12 810E 4A65 8105 2492 8102 F926" + $"810B 5FA9 8114 0B7E 8108 05AC 8100 0021" + $"8100 0027 8100 0021 8100 0021 8100 0021" + $"81FF FFE1 8100 0FE1 8122 0AE1 8108 2FA1" + $"8141 0DE1 8104 0B61 8100 9DA1 FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" +}; + +data 'icl4' (-16455, "Item Icon") { + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"F333 333F 0000 0000 0000 0000 0003 3E0F" + $"F333 333F 0000 0000 0000 0000 00A4 3AEF" + $"F333 333F 0000 0000 0000 0000 0DCA 3EEF" + $"F333 333F 0000 0000 0000 0000 E1C5 FE0F" + $"F333 333F 0000 0000 000C CDCB 1DEA E00F" + $"F333 333F 0000 0000 0CCC 1CB1 C3FD 000F" + $"F333 333F 0000 0000 D02C CB1D A9E0 000F" + $"FFFF FFFF FFFF FFFC C2C3 BCD3 EDDF FFFF" + $"F000 000F 0000 00CC 2DAB 02BF 2DDD 666F" + $"F000 000F 0000 0C1D BBB1 BEAB BDCB D66F" + $"F000 000F 0000 CCD4 E2CB BAEE B42C CD6F" + $"F000 000F 0000 C2BA BD2E FF3B DCC2 DCDD" + $"F000 000F 0000 D3BD D2CC 2DCD 02D0 DCEB" + $"F000 000F 0000 0EAC CDB2 CCCC 20D2 CDDB" + $"F000 000F 0000 CBBB 3AAE E2D2 CC2C C2DC" + $"F000 000F 0000 BC2E DD4A EEAE EBBB BBCD" + $"F000 000F 000C DEDD 00CD DAEA AAEF 35DC" + $"F000 000F 000B D000 0000 CCD4 DEBE EADC" + $"F000 000F 0000 0000 0000 0000 00F0 0BCD" + $"F000 000F 0000 0000 0000 0000 00F0 0FEE" + $"F000 000F 0000 0000 0000 0000 00F0 000F" + $"F000 000F 0000 0000 0000 0000 00F0 000F" + $"F000 000F 0000 0000 0000 0000 00F0 000F" + $"F000 000F FFFF FFFF FFFF FFFF FFF0 000F" + $"F000 000F 1111 1111 1111 F999 99F0 000F" + $"F000 000F 1111 1111 1111 F898 99F0 000F" + $"F000 000F 1111 1111 1111 F999 98F0 000F" + $"F000 000F 1111 1111 1111 F989 99F0 000F" + $"F000 000F 1111 1111 1111 F899 89F0 000F" + $"F000 000F 1111 1111 1111 F989 98F0 000F" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" +}; + +data 'icl8' (-16455, "Item Icon") { + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 00DB 22FC 00FF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 DB21 6BDB FCFF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0081 2BDA 6BB2 FCFF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 FB03 5581 FDFB 00FF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"0000 0007 2C32 325E 0358 88DE FC00 00FF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"002B 0832 0832 5803 3988 ADFB 0000 00FF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"3208 3208 5658 0934 88AD FC00 0000 00FF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FF32" + $"0833 3964 5809 3388 AD32 FBFF FFFF FFFF" + $"FF00 0000 0000 00FF 0000 0000 0000 3208" + $"3339 8858 0934 82DF 3933 3281 D2D2 D2FF" + $"FF00 0000 0000 00FF 0000 0000 002C 0833" + $"6488 5E09 3388 B35E 6433 3233 81D2 D2FF" + $"FF00 0000 0000 00FF 0000 0000 F608 395D" + $"8858 0934 82E0 8888 5E39 332C 3281 D2FF" + $"FF00 0000 0000 00FF 0000 0000 F739 5E8E" + $"820F 5788 FFFD 645E 3357 0E32 3332 81F9" + $"FF00 0000 0000 00FF 0000 0000 3965 8833" + $"3933 3332 3357 320E 2C0E 322C 0E2D 815D" + $"FF00 0000 0000 00FF 0000 0000 F5FC 8808" + $"325D 5D34 320E 082C 0E2C 3233 3232 FA58" + $"FF00 0000 0000 00FF 0000 0000 2B58 3464" + $"88DE 8988 885E 5D33 3232 3332 335E F954" + $"FF00 0000 0000 00FF 0000 0000 5D33 5D82" + $"FA5D 8789 8EAC 89AC 885E 645E 5D64 5654" + $"FF00 0000 0000 00FF 0000 002C 8187 5756" + $"0000 F632 8189 B2DE 89B2 88AC 8888 F9F8" + $"FF00 0000 0000 00FF 0000 0081 562B 0000" + $"0000 0000 F6F7 325D 815E FB88 88FC 5656" + $"FF00 0000 0000 00FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 FF00 005D 57F8" + $"FF00 0000 0000 00FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 FF00 00FD AB88" + $"FF00 0000 0000 00FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 FF00 0000 00FF" + $"FF00 0000 0000 00FF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE6 E6E6 E6E6 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE5 E6E5 E6E6 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE6 E6E6 E6E5 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE6 E5E6 E6E6 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE6 E6E6 E5E6 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE5 E6E6 E6E6 FF00 0000 00FF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" +}; + +data 'icm#' (-16455, "Item Icon") { + $"F24B D007 B028 5557 81B1 124A 8236 1005" + $"8000 1ABD 8030 557D FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" +}; + +data 'icm4' (-16455, "Item Icon") { + $"A33F CDCC DCCD CAAE A333 0000 0000 CDEE" + $"333A 0000 CCCB 2E0D EDCE CDCD DB2B DB6F" + $"D00D 00C2 BBEA BCD5 D00D 00BD 2D2D CC2D" + $"D00D 0CDC CCDB BADC D00D 0000 0000 0DCE" + $"D00D 0000 0000 0D0D D00D B1BB 1BF9 FD0D" + $"D00D 1111 1199 8D0D ECDB BB1B B1F9 FECE" +}; + +data 'icm8' (-16455, "Item Icon") { + $"DDDA DADD F8F8 F8F8 F8F8 F8F8 F864 8EAC" + $"DB23 23DC 0000 0000 0000 0000 F85C 89FB" + $"DC23 23DB 0000 0000 F608 3234 5E82 2AFA" + $"FBF8 F8FB F8F8 5633 335D 3488 575D EFF1" + $"F900 00FA 0000 2C63 5E34 FD64 5D2C 33AA" + $"FA00 00F9 0000 395E 5D5D 5733 0832 33F9" + $"F900 00FA 00F6 F92C 2B32 5D88 8888 88F8" + $"FA00 00F9 0000 0000 0000 0000 00FA F781" + $"F900 00FA 0000 0000 0000 0000 00F9 00F9" + $"FA00 00F9 3559 5335 5959 E9E7 E7FA 00FA" + $"F900 00FA 0505 0505 0505 E8E6 E6F9 00F9" + $"FBF8 F8FB 592F 5959 2F59 E9E7 E7FB F8FB" +}; + +data 'icns' (-16455, "Item Icon") { + $"6963 6E73 0000 9AB8 4943 4E23 0000 0108" + $"FFFF FFFF F700 001D BB00 002B D700 0057" + $"ED00 009D BB00 0539 DD00 1261 F700 A4E1" + $"FFFE 539F 8100 A52F 8102 AED7 8105 4BAB" + $"8103 BD12 810E 4A65 8105 2492 8102 F926" + $"810B 5FA9 8114 0B7E 8108 05AC 8100 0021" + $"8100 0027 8100 0021 8100 0021 8100 0021" + $"81FF FFE1 8100 0FE1 8122 0AE1 8108 2FA1" + $"8141 0DE1 8104 0B61 8100 9DA1 FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"6963 6C34 0000 0208 FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF F333 333F 0000 0000" + $"0000 0000 0003 3E0F F333 333F 0000 0000" + $"0000 0000 00A4 3AEF F333 333F 0000 0000" + $"0000 0000 0DCA 3EEF F333 333F 0000 0000" + $"0000 0000 E1C5 FE0F F333 333F 0000 0000" + $"000C CDCB 1DEA E00F F333 333F 0000 0000" + $"0CCC 1CB1 C3FD 000F F333 333F 0000 0000" + $"D02C CB1D A9E0 000F FFFF FFFF FFFF FFFC" + $"C2C3 BCD3 EDDF FFFF F000 000F 0000 00CC" + $"2DAB 02BF 2DDD 666F F000 000F 0000 0C1D" + $"BBB1 BEAB BDCB D66F F000 000F 0000 CCD4" + $"E2CB BAEE B42C CD6F F000 000F 0000 C2BA" + $"BD2E FF3B DCC2 DCDD F000 000F 0000 D3BD" + $"D2CC 2DCD 02D0 DCEB F000 000F 0000 0EAC" + $"CDB2 CCCC 20D2 CDDB F000 000F 0000 CBBB" + $"3AAE E2D2 CC2C C2DC F000 000F 0000 BC2E" + $"DD4A EEAE EBBB BBCD F000 000F 000C DEDD" + $"00CD DAEA AAEF 35DC F000 000F 000B D000" + $"0000 CCD4 DEBE EADC F000 000F 0000 0000" + $"0000 0000 00F0 0BCD F000 000F 0000 0000" + $"0000 0000 00F0 0FEE F000 000F 0000 0000" + $"0000 0000 00F0 000F F000 000F 0000 0000" + $"0000 0000 00F0 000F F000 000F 0000 0000" + $"0000 0000 00F0 000F F000 000F FFFF FFFF" + $"FFFF FFFF FFF0 000F F000 000F 1111 1111" + $"1111 F999 99F0 000F F000 000F 1111 1111" + $"1111 F898 99F0 000F F000 000F 1111 1111" + $"1111 F999 98F0 000F F000 000F 1111 1111" + $"1111 F989 99F0 000F F000 000F 1111 1111" + $"1111 F899 89F0 000F F000 000F 1111 1111" + $"1111 F989 98F0 000F FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF 6963 6C38 0000 0408" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 00DB 22FC 00FF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 DB21 6BDB FCFF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0081 2BDA 6BB2 FCFF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 FB03 5581 FDFB 00FF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"0000 0007 2C32 325E 0358 88DE FC00 00FF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"002B 0832 0832 5803 3988 ADFB 0000 00FF" + $"FF23 2323 2323 23FF 0000 0000 0000 0000" + $"3208 3208 5658 0934 88AD FC00 0000 00FF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FF32" + $"0833 3964 5809 3388 AD32 FBFF FFFF FFFF" + $"FF00 0000 0000 00FF 0000 0000 0000 3208" + $"3339 8858 0934 82DF 3933 3281 D2D2 D2FF" + $"FF00 0000 0000 00FF 0000 0000 002C 0833" + $"6488 5E09 3388 B35E 6433 3233 81D2 D2FF" + $"FF00 0000 0000 00FF 0000 0000 F608 395D" + $"8858 0934 82E0 8888 5E39 332C 3281 D2FF" + $"FF00 0000 0000 00FF 0000 0000 F739 5E8E" + $"820F 5788 FFFD 645E 3357 0E32 3332 81F9" + $"FF00 0000 0000 00FF 0000 0000 3965 8833" + $"3933 3332 3357 320E 2C0E 322C 0E2D 815D" + $"FF00 0000 0000 00FF 0000 0000 F5FC 8808" + $"325D 5D34 320E 082C 0E2C 3233 3232 FA58" + $"FF00 0000 0000 00FF 0000 0000 2B58 3464" + $"88DE 8988 885E 5D33 3232 3332 335E F954" + $"FF00 0000 0000 00FF 0000 0000 5D33 5D82" + $"FA5D 8789 8EAC 89AC 885E 645E 5D64 5654" + $"FF00 0000 0000 00FF 0000 002C 8187 5756" + $"0000 F632 8189 B2DE 89B2 88AC 8888 F9F8" + $"FF00 0000 0000 00FF 0000 0081 562B 0000" + $"0000 0000 F6F7 325D 815E FB88 88FC 5656" + $"FF00 0000 0000 00FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 FF00 005D 57F8" + $"FF00 0000 0000 00FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 FF00 00FD AB88" + $"FF00 0000 0000 00FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 FF00 0000 00FF" + $"FF00 0000 0000 00FF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE6 E6E6 E6E6 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE5 E6E5 E6E6 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE6 E6E6 E6E5 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE6 E5E6 E6E6 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE6 E6E6 E5E6 FF00 0000 00FF" + $"FF00 0000 0000 00FF 0505 0505 0505 0505" + $"0505 0505 FFE5 E6E6 E6E6 FF00 0000 00FF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"696C 3332 0000 0670 9E00 83FF 0000 90FF" + $"058E EA44 FF00 0083 FF00 008F FF06 8FEA" + $"AB8E 4400 0083 FF00 008E FF07 5ABE AB8E" + $"4544 0000 83FF 0000 8DFF 0864 FE91 6945" + $"44FF 0000 83FF 0000 88FF 0DE2 E1CB B8A1" + $"FEB1 6245 44FF FF00 0083 FF00 0086 FF0A" + $"E2E6 E9EF B89F FEC1 6245 4480 FF01 0000" + $"83FF 0000 85FF 0AD9 E4E9 EBB8 9FFE C362" + $"4544 81FF 8D00 0BD7 E3DE BA8F A2FE C662" + $"45D0 6183 0083 FF00 0083 FF0D DAE5 D4B3" + $"679A FEC8 6245 A5C9 D361 8200 83FF 0000" + $"82FF 0FDC E2D4 A469 9EF2 C962 4579 9BC2" + $"D2D0 6181 0083 FF00 0081 FF11 E8DD D2B3" + $"6AA0 F3C7 5C1B 5D89 9CB5 CDD5 D361 8000" + $"83FF 0000 81FF 14DF C29C 657A DEB3 6A0D" + $"2082 ADBD C3D1 D5D7 D069 8800 83FF 0000" + $"81FF 14AE 8170 B9C5 C1CE C7B2 AFDA E7EA" + $"E1D9 D8D9 D469 8600 83FF 0000 81FF 14EE" + $"5C75 EBD4 9FB3 C4DE E7EC EBE3 E4DD D6CE" + $"C672 9C00 83FF 0000 81FF 14C6 A2C7 886F" + $"4D61 6F7F 9094 C1DB CCC1 C0B7 AB82 A200" + $"83FF 0000 81FF 1499 BFAE 5C8A 856D 504E" + $"5A5B 556C 8F8B 8C95 888F A400 83FF 0000" + $"80FF 15CA 667C 8C9F FFFF DCB5 8251 4A43" + $"3F4B 535E 6860 8FA6 0083 FF00 0080 FF02" + $"669F C283 FF0C DCC3 A88D 847B 686D 5A5E" + $"8FAF 0083 FF00 008F FF06 00FF FF81 8FB5" + $"0083 FF00 008F FF06 00FF FF22 4444 0083" + $"FF00 008F FF00 0081 FF01 0000 83FF 0000" + $"8FFF 0000 81FF 0100 0083 FF00 008F FF00" + $"0081 FF01 0000 83FF 9100 81FF 0100 0083" + $"FF00 0089 FF84 0081 FF01 0000 83FF 0000" + $"89FF 8400 81FF 0100 0083 FF00 0089 FF84" + $"0081 FF01 0000 83FF 0000 89FF 8400 81FF" + $"0100 0083 FF00 0089 FF84 0081 FF01 0000" + $"83FF 0000 89FF 8400 81FF 9E00 A500 90FF" + $"0301 0044 FF86 008F FF04 0900 0001 4486" + $"008E FF05 67BC 0001 1944 8600 8DFF 0666" + $"E49D 7119 44FF 8600 88FF 0BC9 BEA7 9B82" + $"E489 4419 44FF FF86 0086 FF0A CFB6 B9BB" + $"9B79 E493 4419 4480 FF86 0085 FF0A B2AC" + $"B6B5 9B7D E497 4419 4481 FF8D 000B AFAF" + $"A06E 5180 E49A 4419 9B62 8300 83FF 0000" + $"83FF 0DB2 B397 682E 76E4 9D44 1963 96A1" + $"6282 0083 FF00 0082 FF0F BEB0 9953 307E" + $"CF9C 4619 3459 8BA6 9C62 8100 83FF 0000" + $"81FF 11E0 B191 672E 7ED0 9A44 0E2A 3C55" + $"7BA0 A8A2 6280 0083 FF00 0081 FF14 C576" + $"4B2D 51B5 864F 040E 3461 818A 9FA8 A7A1" + $"687C 0083 FF00 0081 FF14 722D 3A7D 8683" + $"9998 8C85 A0B3 B9AE A9AA AAA5 687E 0083" + $"FF00 0081 FF14 E844 38B3 A962 6F7D 9DB2" + $"BEBC B5B7 AFA5 9B95 7392 0083 FF00 0081" + $"FF14 C283 9A44 3D1E 2934 4455 5C8E AC9A" + $"8B89 7D75 829A 0083 FF00 0081 FF14 6E8B" + $"8044 746B 4522 222F 302E 425C 5558 6055" + $"8E9E 0083 FF00 0080 FF15 B466 5A81 9FFF" + $"FFD6 9F5B 231B 1310 202B 333C 378E A000" + $"83FF 0000 80FF 0266 9FC2 83FF 0CD6 B692" + $"6F66 5B47 4931 3B8E A600 83FF 0000 8FFF" + $"0600 FFFF 728E AB00 83FF 0000 8FFF 0600" + $"FFFF 2244 4400 83FF 0000 8FFF 0000 81FF" + $"0100 0083 FF00 008F FF00 0081 FF01 0000" + $"83FF 0000 8FFF 0000 81FF 0100 0083 FF91" + $"0081 FF01 0000 83FF 0000 89FF 0000 827B" + $"0000 81FF 0100 0083 FF00 0089 FF00 0082" + $"7B00 0081 FF01 0000 83FF 0000 89FF 0000" + $"827B 0000 81FF 0100 0083 FF00 0089 FF00" + $"0082 7B00 0081 FF01 0000 83FF 0000 89FF" + $"0000 827B 0000 81FF 0100 0083 FF00 0089" + $"FF00 0082 7B00 0081 FF9E 00A5 0090 FF03" + $"0F43 44FF 8600 8FFF 0417 4316 0F44 8600" + $"8EFF 0565 C416 0F1A 4486 008D FF06 5567" + $"A76C 1A44 FF86 0088 FF0B BCA9 9293 3E67" + $"4D23 1A44 FFFF 8600 86FF 0AC6 9A98 9893" + $"3167 4A23 1A44 80FF 8600 85FF 0A9C 8E99" + $"9593 3767 4F23 1A44 81FF 8D00 0B92 8F86" + $"5747 3967 5223 1A7A 6183 0083 FF00 0083" + $"FF0D 9591 7C51 2A32 6753 231A 4B78 8361" + $"80FF 0100 0083 FF00 0082 FF13 A98B 7D41" + $"2C37 6353 241A 2C44 6D8A 8061 FFFF 0000" + $"83FF 0000 81FF 14DA 9278 5427 3761 5122" + $"1124 323F 6084 8D86 61FF 0000 83FF 0000" + $"81FF 14B7 5B3C 2730 5956 2A0A 0C2C 4F65" + $"6C85 8D89 8869 8800 83FF 0000 81FF 1461" + $"202F 6A76 7683 8378 748C 9A9D 918E 8E8C" + $"8869 5500 83FF 0000 81FF 14E7 2230 9694" + $"5354 5F80 95A2 9E9A 9D94 8881 7A73 4400" + $"83FF 0000 81FF 14C6 4651 3538 191F 2A36" + $"444A 7591 8173 7268 6081 FF00 83FF 0000" + $"81FF 0859 6A49 2277 683C 1A1D 8028 0838" + $"4D47 484F 478E FF00 83FF 0000 80FF 15A8" + $"654A 7F9F FFFF D39A 551C 140E 0B1B 262B" + $"3330 8E9A 0083 FF00 0080 FF02 659F C283" + $"FF0C D3B2 8E69 5F56 4243 2B35 8E9F 0083" + $"FF00 008F FF06 00FF FF6B 8EA7 0083 FF00" + $"008F FF06 00FF FF22 4444 0083 FF00 008F" + $"FF00 0081 FF01 0000 83FF 0000 8FFF 0000" + $"81FF 0100 0083 FF00 008F FF00 0081 FF01" + $"0000 83FF 9100 81FF 0100 0083 FF91 0081" + $"FF01 0000 83FF 9100 81FF 0100 0083 FF91" + $"0081 FF01 0000 83FF 9100 81FF 0100 0083" + $"FF91 0081 FF01 0000 83FF 9100 81FF 9E00" + $"6C38 6D6B 0000 0408 FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF 6963 6823 0000 0248" + $"FFFF FFFF FFFF FFFF FFFF FFFF F770 0000" + $"0001 EEB0 0000 0001 F5D0 0000 0001 EF70" + $"0000 0001 DBB0 0000 0001 F570 0000 0001" + $"FED0 0000 0001 D5B0 0000 0001 EF70 0000" + $"0001 FAD0 0000 0001 FFFF FFFF FFFF FFFF" + $"FFFF FFFF C010 0000 01FF C010 0000 01FF" + $"C010 0000 01EF C010 0000 01FF C010 0000" + $"01FB C010 0000 01DF C010 0000 01FF C010" + $"0000 01FF C010 0000 01FF C010 0000 0181" + $"C010 0000 0181 C010 0000 0181 C010 0000" + $"0181 C010 0000 0181 C010 0000 0181 C010" + $"0000 0181 C010 0000 0181 C010 0000 0181" + $"C010 0000 0181 C010 0000 0181 C010 0000" + $"0181 C010 0000 0181 C01F FFFF FF81 C01F" + $"FFFF FF81 C010 0003 FF81 C011 1113 D581" + $"C010 4443 6F81 C012 000B BB81 C010 8883" + $"DD81 C014 2203 6B81 C011 004B BD81 C010" + $"1103 F781 C014 0423 5B81 FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"6963 6834 0000 0488 FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FF33 3333 333F 0000" + $"0000 0000 0000 0000 0000 0000 0000 000F" + $"FF33 3333 333F 0000 0000 0000 0000 0000" + $"0000 0000 0000 000F FF33 3333 333F 0000" + $"0000 0000 0000 0000 0000 0000 0000 000F" + $"FF33 3333 333F 0000 0000 0000 0000 0000" + $"0000 0000 0000 000F FF33 3333 333F 0000" + $"0000 0000 0000 0000 0000 0000 0000 000F" + $"FF33 3333 333F 0000 0000 0000 0000 0000" + $"0000 0000 0000 000F FF33 3333 333F 0000" + $"0000 0000 0000 0000 0000 0000 0000 000F" + $"FF33 3333 333F 0000 0000 0000 0000 0000" + $"0000 0000 0000 000F FF33 3333 333F 0000" + $"0000 0000 0000 0000 0000 0000 0000 000F" + $"FF33 3333 333F 0000 0000 0000 0000 0000" + $"0000 0000 0000 000F FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F F666 666F" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F F666 666F FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F F666 666F" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F F666 666F FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F F666 666F" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F F666 666F FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F F666 666F" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F FFFF FFFF FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F FFFF FFFF" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F F000 000F FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F F000 000F" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F F000 000F FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F F000 000F" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F F000 000F FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F F000 000F" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F F000 000F FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F F000 000F" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F F000 000F FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F F000 000F" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F F000 000F FF00 0000 000F 0000" + $"0000 0000 0000 0000 0000 000F F000 000F" + $"FF00 0000 000F 0000 0000 0000 0000 0000" + $"0000 000F F000 000F FF00 0000 000F FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF F000 000F" + $"FF00 0000 000F FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF F000 000F FF00 0000 000F 1111" + $"1111 1111 1111 11FF 9999 999F F000 000F" + $"FF00 0000 000F 1111 1111 1111 1111 11FF" + $"9989 898F F000 000F FF00 0000 000F 1111" + $"1111 1111 1111 11FF 8998 999F F000 000F" + $"FF00 0000 000F 1111 1111 1111 1111 11FF" + $"9899 989F F000 000F FF00 0000 000F 1111" + $"1111 1111 1111 11FF 9989 998F F000 000F" + $"FF00 0000 000F 1111 1111 1111 1111 11FF" + $"8999 899F F000 000F FF00 0000 000F 1111" + $"1111 1111 1111 11FF 9899 989F F000 000F" + $"FF00 0000 000F 1111 1111 1111 1111 11FF" + $"9999 899F F000 000F FF00 0000 000F 1111" + $"1111 1111 1111 11FF 8989 989F F000 000F" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF 6963 6838 0000 0908" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF 2323 2323 2323 2323 23FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 00FF" + $"FFFF 2323 2323 2323 2323 23FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 00FF" + $"FFFF 2323 2323 2323 2323 23FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 00FF" + $"FFFF 2323 2323 2323 2323 23FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 00FF" + $"FFFF 2323 2323 2323 2323 23FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 00FF" + $"FFFF 2323 2323 2323 2323 23FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 00FF" + $"FFFF 2323 2323 2323 2323 23FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 00FF" + $"FFFF 2323 2323 2323 2323 23FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 00FF" + $"FFFF 2323 2323 2323 2323 23FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 00FF" + $"FFFF 2323 2323 2323 2323 23FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 00FF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FFD2 D2D2 D2D2 D2FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FFFF FFFF FFFF FFFF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FFFF FFFF FFFF FFFF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0000 0000" + $"0000 0000 0000 0000 0000 0000 0000 0000" + $"0000 0000 0000 00FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0505 0505" + $"0505 0505 0505 0505 0505 0505 0505 FFFF" + $"E6E6 E6E6 E6E6 E6FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0505 0505" + $"0505 0505 0505 0505 0505 0505 0505 FFFF" + $"E6E6 E5E6 E5E6 E5FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0505 0505" + $"0505 0505 0505 0505 0505 0505 0505 FFFF" + $"E5E6 E6E6 E6E6 E6FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0505 0505" + $"0505 0505 0505 0505 0505 0505 0505 FFFF" + $"E6E6 E6E5 E6E5 E6FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0505 0505" + $"0505 0505 0505 0505 0505 0505 0505 FFFF" + $"E6E5 E6E6 E6E6 E5FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0505 0505" + $"0505 0505 0505 0505 0505 0505 0505 FFFF" + $"E6E6 E6E6 E5E6 E6FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0505 0505" + $"0505 0505 0505 0505 0505 0505 0505 FFFF" + $"E5E6 E6E6 E6E5 E6FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0505 0505" + $"0505 0505 0505 0505 0505 0505 0505 FFFF" + $"E6E6 E6E5 E6E6 E6FF FF00 0000 0000 00FF" + $"FFFF 0000 0000 0000 0000 00FF 0505 0505" + $"0505 0505 0505 0505 0505 0505 0505 FFFF" + $"E6E5 E6E6 E5E6 E6FF FF00 0000 0000 00FF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"6968 3332 0000 052A DF00 86FF 0000 A0FF" + $"8000 86FF 0000 A0FF 8000 86FF 0000 A0FF" + $"8000 86FF 0000 A0FF 8000 86FF 0000 A0FF" + $"8000 86FF 0000 A0FF 8000 86FF 0000 A0FF" + $"8000 86FF 0000 A0FF 8000 86FF 0000 A0FF" + $"8000 86FF 0000 A0FF E000 86FF 0000 98FF" + $"8800 86FF 0000 98FF 8800 86FF 0000 98FF" + $"8800 86FF 0000 98FF 8800 86FF 0000 98FF" + $"8800 86FF 0000 98FF 8800 86FF 0000 98FF" + $"8800 86FF 0000 98FF 8800 86FF 0000 98FF" + $"8800 86FF 0000 98FF 0100 0083 FF80 0086" + $"FF00 0098 FF01 0000 83FF 8000 86FF 0000" + $"98FF 0100 0083 FF80 0086 FF00 0098 FF01" + $"0000 83FF 8000 86FF 0000 98FF 0100 0083" + $"FF80 0086 FF00 0098 FF01 0000 83FF 8000" + $"86FF 0000 98FF 0100 0083 FF80 0086 FF00" + $"0098 FF01 0000 83FF 8000 86FF 0000 98FF" + $"0100 0083 FF80 0086 FF00 0098 FF01 0000" + $"83FF 8000 86FF 0000 98FF 0100 0083 FF80" + $"0086 FF00 0098 FF01 0000 83FF 8000 86FF" + $"0000 98FF 0100 0083 FF80 0086 FF9B 0083" + $"FF80 0086 FF9B 0083 FF80 0086 FF00 008F" + $"FF88 0083 FF80 0086 FF00 008F FF88 0083" + $"FF80 0086 FF00 008F FF88 0083 FF80 0086" + $"FF00 008F FF88 0083 FF80 0086 FF00 008F" + $"FF88 0083 FF80 0086 FF00 008F FF88 0083" + $"FF80 0086 FF00 008F FF88 0083 FF80 0086" + $"FF00 008F FF88 0083 FF80 0086 FF00 008F" + $"FF88 0083 FFAE 00E9 00A0 FF8A 00A0 FF8A" + $"00A0 FF8A 00A0 FF8A 00A0 FF8A 00A0 FF8A" + $"00A0 FF8A 00A0 FF8A 00A0 FF8A 00A0 FFE0" + $"0086 FF00 0098 FF88 0086 FF00 0098 FF88" + $"0086 FF00 0098 FF88 0086 FF00 0098 FF88" + $"0086 FF00 0098 FF88 0086 FF00 0098 FF88" + $"0086 FF00 0098 FF88 0086 FF00 0098 FF88" + $"0086 FF00 0098 FF88 0086 FF00 0098 FF01" + $"0000 83FF 8000 86FF 0000 98FF 0100 0083" + $"FF80 0086 FF00 0098 FF01 0000 83FF 8000" + $"86FF 0000 98FF 0100 0083 FF80 0086 FF00" + $"0098 FF01 0000 83FF 8000 86FF 0000 98FF" + $"0100 0083 FF80 0086 FF00 0098 FF01 0000" + $"83FF 8000 86FF 0000 98FF 0100 0083 FF80" + $"0086 FF00 0098 FF01 0000 83FF 8000 86FF" + $"0000 98FF 0100 0083 FF80 0086 FF00 0098" + $"FF01 0000 83FF 8000 86FF 0000 98FF 0100" + $"0083 FF80 0086 FF00 0098 FF01 0000 83FF" + $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF" + $"8000 86FF 0000 8FFF 0100 0084 7B01 0000" + $"83FF 8000 86FF 0000 8FFF 0100 0084 7B01" + $"0000 83FF 8000 86FF 0000 8FFF 0100 0084" + $"7B01 0000 83FF 8000 86FF 0000 8FFF 0100" + $"0084 7B01 0000 83FF 8000 86FF 0000 8FFF" + $"0100 0084 7B01 0000 83FF 8000 86FF 0000" + $"8FFF 0100 0084 7B01 0000 83FF 8000 86FF" + $"0000 8FFF 0100 0084 7B01 0000 83FF 8000" + $"86FF 0000 8FFF 0100 0084 7B01 0000 83FF" + $"8000 86FF 0000 8FFF 0100 0084 7B01 0000" + $"83FF AE00 E900 A0FF 8A00 A0FF 8A00 A0FF" + $"8A00 A0FF 8A00 A0FF 8A00 A0FF 8A00 A0FF" + $"8A00 A0FF 8A00 A0FF 8A00 A0FF E000 86FF" + $"0000 98FF 0100 0083 FF80 0086 FF00 0098" + $"FF01 0000 83FF 8000 86FF 0000 98FF 0100" + $"0083 FF80 0086 FF00 0098 FF01 0000 83FF" + $"8000 86FF 0000 98FF 0100 0083 FF80 0086" + $"FF00 0098 FF01 0000 83FF 8000 86FF 0000" + $"98FF 0100 0083 FF80 0086 FF00 0098 FF88" + $"0086 FF00 0098 FF88 0086 FF00 0098 FF01" + $"0000 83FF 8000 86FF 0000 98FF 0100 0083" + $"FF80 0086 FF00 0098 FF01 0000 83FF 8000" + $"86FF 0000 98FF 0100 0083 FF80 0086 FF00" + $"0098 FF01 0000 83FF 8000 86FF 0000 98FF" + $"0100 0083 FF80 0086 FF00 0098 FF01 0000" + $"83FF 8000 86FF 0000 98FF 0100 0083 FF80" + $"0086 FF00 0098 FF01 0000 83FF 8000 86FF" + $"0000 98FF 0100 0083 FF80 0086 FF00 0098" + $"FF01 0000 83FF 8000 86FF 0000 98FF 0100" + $"0083 FF80 0086 FF00 0098 FF01 0000 83FF" + $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF" + $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF" + $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF" + $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF" + $"8000 86FF 9B00 83FF 8000 86FF 9B00 83FF" + $"8000 86FF 9B00 83FF AE00 6838 6D6B 0000" + $"0908 FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF 6963 7323 0000 0048 F557 D001 700E" + $"E024 9A9B 0175 9299 0162 923E 0001 9004" + $"0000 9BBC 102C 8434 5AFD FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF 6963 7334 0000" + $"0088 AA3F DDDD DDDD DDAE A333 0000 0000" + $"0C3E 333A 0000 000C DBEC A333 0000 0CBC" + $"2A00 EDDF DDDB D2CB ECFF D00D 00CD BBBA" + $"B2D6 D00D 00B2 DDBB DCCB D00D 00D4 D2D2" + $"CC2D D00D 00BD CCE5 3EEC D00D 0C00 0000" + $"CBCB D00D 0000 0000 0D0D D00D 0000 0000" + $"0D00 D00D ABAB ABAF 9F00 D00D 1111 11B8" + $"9900 D00D 1111 1189 9F00 EDDA 8291 ABAF" + $"9FDD 6963 7338 0000 0108 DEDC DBB3 F9FA" + $"F9FA F9FA F9FA F9FA 8FFB DC23 23DB 0000" + $"0000 0000 0000 0032 6A88 DB23 23DC 0000" + $"0000 0000 F52B 3357 882B DC23 23DB 0000" + $"0000 F608 3234 33AD F600 FCFA F9AC F9FA" + $"F95D 0E5D 3457 8833 F1F2 FA00 00F9 0000" + $"0733 825E 33AD 6432 33EF F900 00FA 0000" + $"5D5E 5D33 825D 3332 2C57 FA00 00F9 0000" + $"5739 5D64 5D33 3232 335C F900 00FA 00F5" + $"5D57 F732 828E 8988 88F9 FA00 00F9 00F6" + $"F600 0000 F5F6 4F5D F85D F900 00FA 0000" + $"0000 0000 0000 00FA 0056 FA00 00FA 0000" + $"0000 0000 0000 00F9 0000 F900 00F9 8359" + $"8359 8359 ADD1 E8EA 0000 FA00 00FA 0505" + $"0505 0505 5FE5 E6E8 0000 F900 00F9 0505" + $"0505 0505 7DE6 E6D1 0000 ACF9 FAFC 8359" + $"8359 8359 ADD1 E8E9 FAF9 6973 3332 0000" + $"026C 0340 8080 4087 8005 5E51 80FF FF80" + $"86FF 06AA B457 80FF FF80 83FF 09F1 E1C1" + $"A94E D180 FFFF 8081 FF0B ECE6 DFBE BA4D" + $"D1FF 4080 8040 8080 4FA6 DCAD B3BC 65B4" + $"1900 80FF FF80 FFFF E9CF 87A7 B848 8FC6" + $"B719 80FF FF80 FFFF B58B A0C9 7D8B CFD4" + $"D89E 80FF FF80 FFFF ADAC A280 A5BE DBD4" + $"C79A 80FF FF80 FFF2 8F8E C5B4 7655 516E" + $"7A82 80FF FF80 FFD9 D880 FF09 F7DB C479" + $"B280 80FF FF80 86FF 0680 FF9A 80FF FF80" + $"86FF 0580 FFFF 80FF FF84 8000 4080 0005" + $"FFFF 80FF FF80 83FF 0080 8000 05FF FF80" + $"FFFF 8083 FF00 8080 0005 FFFF 4080 8040" + $"8380 0040 8000 0180 8081 0087 8001 0151" + $"8100 86FF 028B 0129 8100 83FF 05E2 D0B3" + $"943A D181 0081 FF0B D9BA B19E 952F D1FF" + $"4080 8040 8080 4F85 A369 8B98 378E 1900" + $"80FF FF80 FFFF D491 417F 9326 4893 9219" + $"80FF FF80 FFFF 774C 6C96 5E5A 94A0 A986" + $"80FF FF80 FFFF 9D73 7346 6589 ABA3 9280" + $"80FF FF80 FFED 6F7A BAA2 5028 253F 4A6A" + $"80FF FF80 FFD9 D880 FF09 F5D2 B569 9E73" + $"80FF FF80 86FF 0680 FF9A 80FF FF80 86FF" + $"0580 FFFF 80FF FF84 8009 403E 3E1F FFFF" + $"80FF FF80 83FF 0980 7B7B 3EFF FF80 FFFF" + $"8083 FF09 807B 7B3E FFFF 4080 8040 8380" + $"0540 3E3E 1F80 8081 0087 8001 1551 8100" + $"86FF 0290 202D 8100 83FF 05D9 C97F 6039" + $"D181 0081 FF0B CEA2 9759 4927 D1FF 4080" + $"8040 8080 4F6F 8657 474C 2976 5980 80FF" + $"FF80 FFFF C676 343F 4B1D 3977 7ED8 80FF" + $"FF80 FFFF 6540 536B 4C4E 7B85 8D79 80FF" + $"FF80 FFFF 8654 6638 5072 908A 7974 80FF" + $"FF80 FFEA 5D63 BB9E 4A20 1F36 3E65 80FF" + $"FF80 FFD9 D880 FF09 F4D0 B266 9B6F 80FF" + $"FF80 86FF 0680 FF9A 80FF FF80 86FF 0680" + $"FFFF 80FF FF80 8700 05FF FF80 FFFF 8087" + $"0005 FFFF 80FF FF80 8700 05FF FF40 8080" + $"4087 0001 8080 7338 6D6B 0000 0108 FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF 6963" + $"6D23 0000 0038 F24B D007 B028 5557 81B1" + $"124A 8236 1005 8000 1ABD 8030 557D FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF 6963 6D34 0000 0068 A33F" + $"CDCC DCCD CAAE A333 0000 0000 CDEE 333A" + $"0000 CCCB 2E0D EDCE CDCD DB2B DB6F D00D" + $"00C2 BBEA BCD5 D00D 00BD 2D2D CC2D D00D" + $"0CDC CCDB BADC D00D 0000 0000 0DCE D00D" + $"0000 0000 0D0D D00D B1BB 1BF9 FD0D D00D" + $"1111 1199 8D0D ECDB BB1B B1F9 FECE 6963" + $"6D38 0000 00C8 DDDA DADD F8F8 F8F8 F8F8" + $"F8F8 F864 8EAC DB23 23DC 0000 0000 0000" + $"0000 F85C 89FB DC23 23DB 0000 0000 F608" + $"3234 5E82 2AFA FBF8 F8FB F8F8 5633 335D" + $"3488 575D EFF1 F900 00FA 0000 2C63 5E34" + $"FD64 5D2C 33AA FA00 00F9 0000 395E 5D5D" + $"5733 0832 33F9 F900 00FA 00F6 F92C 2B32" + $"5D88 8888 88F8 FA00 00F9 0000 0000 0000" + $"0000 00FA F781 F900 00FA 0000 0000 0000" + $"0000 00F9 00F9 FA00 00F9 3559 5335 5959" + $"E9E7 E7FA 00FA F900 00FA 0505 0505 0505" + $"E8E6 E6F9 00F9 FBF8 F8FB 592F 5959 2F59" + $"E9E7 E7FB F8FB 6974 3332 0000 245A 0000" + $"0000 FF00 FF00 FF00 FB00 95FF 8100 C9FF" + $"818E 81EA 8144 81FF 8500 95FF 8100 C9FF" + $"818E 81EA 8144 81FF 8500 95FF 8100 C9FF" + $"818E 81EA 8144 81FF 8500 95FF 8100 C9FF" + $"818E 81EA 8144 81FF 8500 95FF 8100 C5FF" + $"818F 81EA 81AB 818E 8144 8500 95FF 8100" + $"C5FF 818F 81EA 81AB 818E 8144 8500 95FF" + $"8100 C5FF 818F 81EA 81AB 818E 8144 8500" + $"95FF 8100 C5FF 818F 81EA 81AB 818E 8144" + $"8500 95FF 8100 C1FF 815A 81BE 81AB 818E" + $"8145 8144 8500 95FF 8100 C1FF 815A 81BE" + $"81AB 818E 8145 8144 8500 95FF 8100 C1FF" + $"815A 81BE 81AB 818E 8145 8144 8500 95FF" + $"8100 C1FF 815A 81BE 81AB 818E 8145 8144" + $"8500 95FF 8100 BDFF 8164 81FE 8191 8169" + $"8145 8144 81FF 8500 95FF 8100 BDFF 8164" + $"81FE 8191 8169 8145 8144 81FF 8500 95FF" + $"8100 BDFF 8164 81FE 8191 8169 8145 8144" + $"81FF 8500 95FF 8100 BDFF 8164 81FE 8191" + $"8169 8145 8144 81FF 8500 95FF 8100 A9FF" + $"81E2 81E1 81CB 81B8 81A1 81FE 81B1 8162" + $"8145 8144 85FF 8500 95FF 8100 A9FF 81E2" + $"81E1 81CB 81B8 81A1 81FE 81B1 8162 8145" + $"8144 85FF 8500 95FF 8100 A9FF 81E2 81E1" + $"81CB 81B8 81A1 81FE 81B1 8162 8145 8144" + $"85FF 8500 95FF 8100 A9FF 81E2 81E1 81CB" + $"81B8 81A1 81FE 81B1 8162 8145 8144 85FF" + $"8500 95FF 8100 A1FF 81E2 81E6 81E9 81EF" + $"81B8 819F 81FE 81C1 8162 8145 8144 89FF" + $"8500 95FF 8100 A1FF 81E2 81E6 81E9 81EF" + $"81B8 819F 81FE 81C1 8162 8145 8144 89FF" + $"8500 95FF 8100 A1FF 81E2 81E6 81E9 81EF" + $"81B8 819F 81FE 81C1 8162 8145 8144 89FF" + $"8500 95FF 8100 A1FF 81E2 81E6 81E9 81EF" + $"81B8 819F 81FE 81C1 8162 8145 8144 89FF" + $"8500 95FF 8100 9DFF 81D9 81E4 81E9 81EB" + $"81B8 819F 81FE 81C3 8162 8145 8144 8DFF" + $"8500 95FF 8100 9DFF 81D9 81E4 81E9 81EB" + $"81B8 819F 81FE 81C3 8162 8145 8144 8DFF" + $"8500 95FF 8100 9DFF 81D9 81E4 81E9 81EB" + $"81B8 819F 81FE 81C3 8162 8145 8144 8DFF" + $"8500 95FF 8100 9DFF 81D9 81E4 81E9 81EB" + $"81B8 819F 81FE 81C3 8162 8145 8144 8DFF" + $"BD00 81D7 81E3 81DE 81BA 818F 81A2 81FE" + $"81C6 8162 8145 81D0 8161 CD00 81D7 81E3" + $"81DE 81BA 818F 81A2 81FE 81C6 8162 8145" + $"81D0 8161 CD00 81D7 81E3 81DE 81BA 818F" + $"81A2 81FE 81C6 8162 8145 81D0 8161 CD00" + $"81D7 81E3 81DE 81BA 818F 81A2 81FE 81C6" + $"8162 8145 81D0 8161 9500 95FF 8100 95FF" + $"81DA 81E5 81D4 81B3 8167 819A 81FE 81C8" + $"8162 8145 81A5 81C9 81D3 8161 9100 95FF" + $"8100 95FF 81DA 81E5 81D4 81B3 8167 819A" + $"81FE 81C8 8162 8145 81A5 81C9 81D3 8161" + $"9100 95FF 8100 95FF 81DA 81E5 81D4 81B3" + $"8167 819A 81FE 81C8 8162 8145 81A5 81C9" + $"81D3 8161 9100 95FF 8100 95FF 81DA 81E5" + $"81D4 81B3 8167 819A 81FE 81C8 8162 8145" + $"81A5 81C9 81D3 8161 9100 95FF 8100 91FF" + $"81DC 81E2 81D4 81A4 8169 819E 81F2 81C9" + $"8162 8145 8179 819B 81C2 81D2 81D0 8161" + $"8D00 95FF 8100 91FF 81DC 81E2 81D4 81A4" + $"8169 819E 81F2 81C9 8162 8145 8179 819B" + $"81C2 81D2 81D0 8161 8D00 95FF 8100 91FF" + $"81DC 81E2 81D4 81A4 8169 819E 81F2 81C9" + $"8162 8145 8179 819B 81C2 81D2 81D0 8161" + $"8D00 95FF 8100 91FF 81DC 81E2 81D4 81A4" + $"8169 819E 81F2 81C9 8162 8145 8179 819B" + $"81C2 81D2 81D0 8161 8D00 95FF 8100 8DFF" + $"81E8 81DD 81D2 81B3 816A 81A0 81F3 81C7" + $"815C 811B 815D 8189 819C 81B5 81CD 81D5" + $"81D3 8161 8900 95FF 8100 8DFF 81E8 81DD" + $"81D2 81B3 816A 81A0 81F3 81C7 815C 811B" + $"815D 8189 819C 81B5 81CD 81D5 81D3 8161" + $"8900 95FF 8100 8DFF 81E8 81DD 81D2 81B3" + $"816A 81A0 81F3 81C7 815C 811B 815D 8189" + $"819C 81B5 81CD 81D5 81D3 8161 8900 95FF" + $"8100 8DFF 81E8 81DD 81D2 81B3 816A 81A0" + $"81F3 81C7 815C 811B 815D 8189 819C 81B5" + $"81CD 81D5 81D3 8161 8900 95FF 8100 8DFF" + $"81DF 81C2 819C 8165 817A 81DE 81B3 816A" + $"810D 8120 8182 81AD 81BD 81C3 81D1 81D5" + $"81D7 81D0 8169 8188 8100 95FF 8100 8DFF" + $"81DF 81C2 819C 8165 817A 81DE 81B3 816A" + $"810D 8120 8182 81AD 81BD 81C3 81D1 81D5" + $"81D7 81D0 8169 8188 8100 95FF 8100 8DFF" + $"81DF 81C2 819C 8165 817A 81DE 81B3 816A" + $"810D 8120 8182 81AD 81BD 81C3 81D1 81D5" + $"81D7 81D0 8169 8188 8100 95FF 8100 8DFF" + $"81DF 81C2 819C 8165 817A 81DE 81B3 816A" + $"810D 8120 8182 81AD 81BD 81C3 81D1 81D5" + $"81D7 81D0 8169 8188 8100 95FF 8100 8DFF" + $"81AE 8181 8170 81B9 81C5 81C1 81CE 81C7" + $"81B2 81AF 81DA 81E7 81EA 81E1 81D9 81D8" + $"81D9 81D4 8169 8186 8100 95FF 8100 8DFF" + $"81AE 8181 8170 81B9 81C5 81C1 81CE 81C7" + $"81B2 81AF 81DA 81E7 81EA 81E1 81D9 81D8" + $"81D9 81D4 8169 8186 8100 95FF 8100 8DFF" + $"81AE 8181 8170 81B9 81C5 81C1 81CE 81C7" + $"81B2 81AF 81DA 81E7 81EA 81E1 81D9 81D8" + $"81D9 81D4 8169 8186 8100 95FF 8100 8DFF" + $"81AE 8181 8170 81B9 81C5 81C1 81CE 81C7" + $"81B2 81AF 81DA 81E7 81EA 81E1 81D9 81D8" + $"81D9 81D4 8169 8186 8100 95FF 8100 8DFF" + $"81EE 815C 8175 81EB 81D4 819F 81B3 81C4" + $"81DE 81E7 81EC 81EB 81E3 81E4 81DD 81D6" + $"81CE 81C6 8172 819C 8100 95FF 8100 8DFF" + $"81EE 815C 8175 81EB 81D4 819F 81B3 81C4" + $"81DE 81E7 81EC 81EB 81E3 81E4 81DD 81D6" + $"81CE 81C6 8172 819C 8100 95FF 8100 8DFF" + $"81EE 815C 8175 81EB 81D4 819F 81B3 81C4" + $"81DE 81E7 81EC 81EB 81E3 81E4 81DD 81D6" + $"81CE 81C6 8172 819C 8100 95FF 8100 8DFF" + $"81EE 815C 8175 81EB 81D4 819F 81B3 81C4" + $"81DE 81E7 81EC 81EB 81E3 81E4 81DD 81D6" + $"81CE 81C6 8172 819C 8100 95FF 8100 8DFF" + $"81C6 81A2 81C7 8188 816F 814D 8161 816F" + $"817F 8190 8194 81C1 81DB 81CC 81C1 81C0" + $"81B7 81AB 8182 81A2 8100 95FF 8100 8DFF" + $"81C6 81A2 81C7 8188 816F 814D 8161 816F" + $"817F 8190 8194 81C1 81DB 81CC 81C1 81C0" + $"81B7 81AB 8182 81A2 8100 95FF 8100 8DFF" + $"81C6 81A2 81C7 8188 816F 814D 8161 816F" + $"817F 8190 8194 81C1 81DB 81CC 81C1 81C0" + $"81B7 81AB 8182 81A2 8100 95FF 8100 8DFF" + $"81C6 81A2 81C7 8188 816F 814D 8161 816F" + $"817F 8190 8194 81C1 81DB 81CC 81C1 81C0" + $"81B7 81AB 8182 81A2 8100 95FF 8100 8DFF" + $"8199 81BF 81AE 815C 818A 8185 816D 8150" + $"814E 815A 815B 8155 816C 818F 818B 818C" + $"8195 8188 818F 81A4 8100 95FF 8100 8DFF" + $"8199 81BF 81AE 815C 818A 8185 816D 8150" + $"814E 815A 815B 8155 816C 818F 818B 818C" + $"8195 8188 818F 81A4 8100 95FF 8100 8DFF" + $"8199 81BF 81AE 815C 818A 8185 816D 8150" + $"814E 815A 815B 8155 816C 818F 818B 818C" + $"8195 8188 818F 81A4 8100 95FF 8100 8DFF" + $"8199 81BF 81AE 815C 818A 8185 816D 8150" + $"814E 815A 815B 8155 816C 818F 818B 818C" + $"8195 8188 818F 81A4 8100 95FF 8100 89FF" + $"81CA 8166 817C 818C 819F 85FF 81DC 81B5" + $"8182 8151 814A 8143 813F 814B 8153 815E" + $"8168 8160 818F 81A6 8100 95FF 8100 89FF" + $"81CA 8166 817C 818C 819F 85FF 81DC 81B5" + $"8182 8151 814A 8143 813F 814B 8153 815E" + $"8168 8160 818F 81A6 8100 95FF 8100 89FF" + $"81CA 8166 817C 818C 819F 85FF 81DC 81B5" + $"8182 8151 814A 8143 813F 814B 8153 815E" + $"8168 8160 818F 81A6 8100 95FF 8100 89FF" + $"81CA 8166 817C 818C 819F 85FF 81DC 81B5" + $"8182 8151 814A 8143 813F 814B 8153 815E" + $"8168 8160 818F 81A6 8100 95FF 8100 89FF" + $"8166 819F 81C2 95FF 81DC 81C3 81A8 818D" + $"8184 817B 8168 816D 815A 815E 818F 81AF" + $"8100 95FF 8100 89FF 8166 819F 81C2 95FF" + $"81DC 81C3 81A8 818D 8184 817B 8168 816D" + $"815A 815E 818F 81AF 8100 95FF 8100 89FF" + $"8166 819F 81C2 95FF 81DC 81C3 81A8 818D" + $"8184 817B 8168 816D 815A 815E 818F 81AF" + $"8100 95FF 8100 89FF 8166 819F 81C2 95FF" + $"81DC 81C3 81A8 818D 8184 817B 8168 816D" + $"815A 815E 818F 81AF 8100 95FF 8100 C5FF" + $"8100 85FF 8181 818F 81B5 8100 95FF 8100" + $"C5FF 8100 85FF 8181 818F 81B5 8100 95FF" + $"8100 C5FF 8100 85FF 8181 818F 81B5 8100" + $"95FF 8100 C5FF 8100 85FF 8181 818F 81B5" + $"8100 95FF 8100 C5FF 8100 85FF 8122 8544" + $"8100 95FF 8100 C5FF 8100 85FF 8122 8544" + $"8100 95FF 8100 C5FF 8100 85FF 8122 8544" + $"8100 95FF 8100 C5FF 8100 85FF 8122 8544" + $"8100 95FF 8100 C5FF 8100 8DFF 8500 95FF" + $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF" + $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF" + $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF" + $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF" + $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF" + $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF" + $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF" + $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF" + $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF" + $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF" + $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF" + $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF" + $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF" + $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF" + $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF" + $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF" + $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF" + $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF" + $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF" + $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF" + $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF" + $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF" + $"8500 95FF 8100 ADFF 9900 8DFF 8500 95FF" + $"8100 ADFF 9900 8DFF 8500 95FF 8100 ADFF" + $"9900 8DFF 8500 95FF 8100 ADFF 9900 8DFF" + $"FF00 FF00 FF00 FB00 FF00 FF00 FF00 FF00" + $"9500 C9FF 8101 8100 8144 81FF A100 C9FF" + $"8101 8100 8144 81FF A100 C9FF 8101 8100" + $"8144 81FF A100 C9FF 8101 8100 8144 81FF" + $"A100 C5FF 8109 8500 8101 8144 A100 C5FF" + $"8109 8500 8101 8144 A100 C5FF 8109 8500" + $"8101 8144 A100 C5FF 8109 8500 8101 8144" + $"A100 C1FF 8167 81BC 8100 8101 8119 8144" + $"A100 C1FF 8167 81BC 8100 8101 8119 8144" + $"A100 C1FF 8167 81BC 8100 8101 8119 8144" + $"A100 C1FF 8167 81BC 8100 8101 8119 8144" + $"A100 BDFF 8166 81E4 819D 8171 8119 8144" + $"81FF A100 BDFF 8166 81E4 819D 8171 8119" + $"8144 81FF A100 BDFF 8166 81E4 819D 8171" + $"8119 8144 81FF A100 BDFF 8166 81E4 819D" + $"8171 8119 8144 81FF A100 A9FF 81C9 81BE" + $"81A7 819B 8182 81E4 8189 8144 8119 8144" + $"85FF A100 A9FF 81C9 81BE 81A7 819B 8182" + $"81E4 8189 8144 8119 8144 85FF A100 A9FF" + $"81C9 81BE 81A7 819B 8182 81E4 8189 8144" + $"8119 8144 85FF A100 A9FF 81C9 81BE 81A7" + $"819B 8182 81E4 8189 8144 8119 8144 85FF" + $"A100 A1FF 81CF 81B6 81B9 81BB 819B 8179" + $"81E4 8193 8144 8119 8144 89FF A100 A1FF" + $"81CF 81B6 81B9 81BB 819B 8179 81E4 8193" + $"8144 8119 8144 89FF A100 A1FF 81CF 81B6" + $"81B9 81BB 819B 8179 81E4 8193 8144 8119" + $"8144 89FF A100 A1FF 81CF 81B6 81B9 81BB" + $"819B 8179 81E4 8193 8144 8119 8144 89FF" + $"A100 9DFF 81B2 81AC 81B6 81B5 819B 817D" + $"81E4 8197 8144 8119 8144 8DFF A100 9DFF" + $"81B2 81AC 81B6 81B5 819B 817D 81E4 8197" + $"8144 8119 8144 8DFF A100 9DFF 81B2 81AC" + $"81B6 81B5 819B 817D 81E4 8197 8144 8119" + $"8144 8DFF A100 9DFF 81B2 81AC 81B6 81B5" + $"819B 817D 81E4 8197 8144 8119 8144 8DFF" + $"BD00 85AF 81A0 816E 8151 8180 81E4 819A" + $"8144 8119 819B 8162 CD00 85AF 81A0 816E" + $"8151 8180 81E4 819A 8144 8119 819B 8162" + $"CD00 85AF 81A0 816E 8151 8180 81E4 819A" + $"8144 8119 819B 8162 CD00 85AF 81A0 816E" + $"8151 8180 81E4 819A 8144 8119 819B 8162" + $"9500 95FF 8100 95FF 81B2 81B3 8197 8168" + $"812E 8176 81E4 819D 8144 8119 8163 8196" + $"81A1 8162 9100 95FF 8100 95FF 81B2 81B3" + $"8197 8168 812E 8176 81E4 819D 8144 8119" + $"8163 8196 81A1 8162 9100 95FF 8100 95FF" + $"81B2 81B3 8197 8168 812E 8176 81E4 819D" + $"8144 8119 8163 8196 81A1 8162 9100 95FF" + $"8100 95FF 81B2 81B3 8197 8168 812E 8176" + $"81E4 819D 8144 8119 8163 8196 81A1 8162" + $"9100 95FF 8100 91FF 81BE 81B0 8199 8153" + $"8130 817E 81CF 819C 8146 8119 8134 8159" + $"818B 81A6 819C 8162 8D00 95FF 8100 91FF" + $"81BE 81B0 8199 8153 8130 817E 81CF 819C" + $"8146 8119 8134 8159 818B 81A6 819C 8162" + $"8D00 95FF 8100 91FF 81BE 81B0 8199 8153" + $"8130 817E 81CF 819C 8146 8119 8134 8159" + $"818B 81A6 819C 8162 8D00 95FF 8100 91FF" + $"81BE 81B0 8199 8153 8130 817E 81CF 819C" + $"8146 8119 8134 8159 818B 81A6 819C 8162" + $"8D00 95FF 8100 8DFF 81E0 81B1 8191 8167" + $"812E 817E 81D0 819A 8144 810E 812A 813C" + $"8155 817B 81A0 81A8 81A2 8162 8900 95FF" + $"8100 8DFF 81E0 81B1 8191 8167 812E 817E" + $"81D0 819A 8144 810E 812A 813C 8155 817B" + $"81A0 81A8 81A2 8162 8900 95FF 8100 8DFF" + $"81E0 81B1 8191 8167 812E 817E 81D0 819A" + $"8144 810E 812A 813C 8155 817B 81A0 81A8" + $"81A2 8162 8900 95FF 8100 8DFF 81E0 81B1" + $"8191 8167 812E 817E 81D0 819A 8144 810E" + $"812A 813C 8155 817B 81A0 81A8 81A2 8162" + $"8900 95FF 8100 8DFF 81C5 8176 814B 812D" + $"8151 81B5 8186 814F 8104 810E 8134 8161" + $"8181 818A 819F 81A8 81A7 81A1 8168 817C" + $"8100 95FF 8100 8DFF 81C5 8176 814B 812D" + $"8151 81B5 8186 814F 8104 810E 8134 8161" + $"8181 818A 819F 81A8 81A7 81A1 8168 817C" + $"8100 95FF 8100 8DFF 81C5 8176 814B 812D" + $"8151 81B5 8186 814F 8104 810E 8134 8161" + $"8181 818A 819F 81A8 81A7 81A1 8168 817C" + $"8100 95FF 8100 8DFF 81C5 8176 814B 812D" + $"8151 81B5 8186 814F 8104 810E 8134 8161" + $"8181 818A 819F 81A8 81A7 81A1 8168 817C" + $"8100 95FF 8100 8DFF 8172 812D 813A 817D" + $"8186 8183 8199 8198 818C 8185 81A0 81B3" + $"81B9 81AE 81A9 85AA 81A5 8168 817E 8100" + $"95FF 8100 8DFF 8172 812D 813A 817D 8186" + $"8183 8199 8198 818C 8185 81A0 81B3 81B9" + $"81AE 81A9 85AA 81A5 8168 817E 8100 95FF" + $"8100 8DFF 8172 812D 813A 817D 8186 8183" + $"8199 8198 818C 8185 81A0 81B3 81B9 81AE" + $"81A9 85AA 81A5 8168 817E 8100 95FF 8100" + $"8DFF 8172 812D 813A 817D 8186 8183 8199" + $"8198 818C 8185 81A0 81B3 81B9 81AE 81A9" + $"85AA 81A5 8168 817E 8100 95FF 8100 8DFF" + $"81E8 8144 8138 81B3 81A9 8162 816F 817D" + $"819D 81B2 81BE 81BC 81B5 81B7 81AF 81A5" + $"819B 8195 8173 8192 8100 95FF 8100 8DFF" + $"81E8 8144 8138 81B3 81A9 8162 816F 817D" + $"819D 81B2 81BE 81BC 81B5 81B7 81AF 81A5" + $"819B 8195 8173 8192 8100 95FF 8100 8DFF" + $"81E8 8144 8138 81B3 81A9 8162 816F 817D" + $"819D 81B2 81BE 81BC 81B5 81B7 81AF 81A5" + $"819B 8195 8173 8192 8100 95FF 8100 8DFF" + $"81E8 8144 8138 81B3 81A9 8162 816F 817D" + $"819D 81B2 81BE 81BC 81B5 81B7 81AF 81A5" + $"819B 8195 8173 8192 8100 95FF 8100 8DFF" + $"81C2 8183 819A 8144 813D 811E 8129 8134" + $"8144 8155 815C 818E 81AC 819A 818B 8189" + $"817D 8175 8182 819A 8100 95FF 8100 8DFF" + $"81C2 8183 819A 8144 813D 811E 8129 8134" + $"8144 8155 815C 818E 81AC 819A 818B 8189" + $"817D 8175 8182 819A 8100 95FF 8100 8DFF" + $"81C2 8183 819A 8144 813D 811E 8129 8134" + $"8144 8155 815C 818E 81AC 819A 818B 8189" + $"817D 8175 8182 819A 8100 95FF 8100 8DFF" + $"81C2 8183 819A 8144 813D 811E 8129 8134" + $"8144 8155 815C 818E 81AC 819A 818B 8189" + $"817D 8175 8182 819A 8100 95FF 8100 8DFF" + $"816E 818B 8180 8144 8174 816B 8145 8522" + $"812F 8130 812E 8142 815C 8155 8158 8160" + $"8155 818E 819E 8100 95FF 8100 8DFF 816E" + $"818B 8180 8144 8174 816B 8145 8522 812F" + $"8130 812E 8142 815C 8155 8158 8160 8155" + $"818E 819E 8100 95FF 8100 8DFF 816E 818B" + $"8180 8144 8174 816B 8145 8522 812F 8130" + $"812E 8142 815C 8155 8158 8160 8155 818E" + $"819E 8100 95FF 8100 8DFF 816E 818B 8180" + $"8144 8174 816B 8145 8522 812F 8130 812E" + $"8142 815C 8155 8158 8160 8155 818E 819E" + $"8100 95FF 8100 89FF 81B4 8166 815A 8181" + $"819F 85FF 81D6 819F 815B 8123 811B 8113" + $"8110 8120 812B 8133 813C 8137 818E 81A0" + $"8100 95FF 8100 89FF 81B4 8166 815A 8181" + $"819F 85FF 81D6 819F 815B 8123 811B 8113" + $"8110 8120 812B 8133 813C 8137 818E 81A0" + $"8100 95FF 8100 89FF 81B4 8166 815A 8181" + $"819F 85FF 81D6 819F 815B 8123 811B 8113" + $"8110 8120 812B 8133 813C 8137 818E 81A0" + $"8100 95FF 8100 89FF 81B4 8166 815A 8181" + $"819F 85FF 81D6 819F 815B 8123 811B 8113" + $"8110 8120 812B 8133 813C 8137 818E 81A0" + $"8100 95FF 8100 89FF 8166 819F 81C2 95FF" + $"81D6 81B6 8192 816F 8166 815B 8147 8149" + $"8131 813B 818E 81A6 8100 95FF 8100 89FF" + $"8166 819F 81C2 95FF 81D6 81B6 8192 816F" + $"8166 815B 8147 8149 8131 813B 818E 81A6" + $"8100 95FF 8100 89FF 8166 819F 81C2 95FF" + $"81D6 81B6 8192 816F 8166 815B 8147 8149" + $"8131 813B 818E 81A6 8100 95FF 8100 89FF" + $"8166 819F 81C2 95FF 81D6 81B6 8192 816F" + $"8166 815B 8147 8149 8131 813B 818E 81A6" + $"8100 95FF 8100 C5FF 8100 85FF 8172 818E" + $"81AB 8100 95FF 8100 C5FF 8100 85FF 8172" + $"818E 81AB 8100 95FF 8100 C5FF 8100 85FF" + $"8172 818E 81AB 8100 95FF 8100 C5FF 8100" + $"85FF 8172 818E 81AB 8100 95FF 8100 C5FF" + $"8100 85FF 8122 8544 8100 95FF 8100 C5FF" + $"8100 85FF 8122 8544 8100 95FF 8100 C5FF" + $"8100 85FF 8122 8544 8100 95FF 8100 C5FF" + $"8100 85FF 8122 8544 8100 95FF 8100 C5FF" + $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF" + $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF" + $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF" + $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF" + $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF" + $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF" + $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF" + $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF" + $"8100 C5FF 8100 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF 8500 95FF 8100 ADFF" + $"8100 917B 8100 8DFF FF00 FF00 FF00 FB00" + $"FF00 FF00 FF00 FF00 9500 C9FF 810F 8143" + $"8144 81FF A100 C9FF 810F 8143 8144 81FF" + $"A100 C9FF 810F 8143 8144 81FF A100 C9FF" + $"810F 8143 8144 81FF A100 C5FF 8117 8143" + $"8116 810F 8144 A100 C5FF 8117 8143 8116" + $"810F 8144 A100 C5FF 8117 8143 8116 810F" + $"8144 A100 C5FF 8117 8143 8116 810F 8144" + $"A100 C1FF 8165 81C4 8116 810F 811A 8144" + $"A100 C1FF 8165 81C4 8116 810F 811A 8144" + $"A100 C1FF 8165 81C4 8116 810F 811A 8144" + $"A100 C1FF 8165 81C4 8116 810F 811A 8144" + $"A100 BDFF 8155 8167 81A7 816C 811A 8144" + $"81FF A100 BDFF 8155 8167 81A7 816C 811A" + $"8144 81FF A100 BDFF 8155 8167 81A7 816C" + $"811A 8144 81FF A100 BDFF 8155 8167 81A7" + $"816C 811A 8144 81FF A100 A9FF 81BC 81A9" + $"8192 8193 813E 8167 814D 8123 811A 8144" + $"85FF A100 A9FF 81BC 81A9 8192 8193 813E" + $"8167 814D 8123 811A 8144 85FF A100 A9FF" + $"81BC 81A9 8192 8193 813E 8167 814D 8123" + $"811A 8144 85FF A100 A9FF 81BC 81A9 8192" + $"8193 813E 8167 814D 8123 811A 8144 85FF" + $"A100 A1FF 81C6 819A 8598 8193 8131 8167" + $"814A 8123 811A 8144 89FF A100 A1FF 81C6" + $"819A 8598 8193 8131 8167 814A 8123 811A" + $"8144 89FF A100 A1FF 81C6 819A 8598 8193" + $"8131 8167 814A 8123 811A 8144 89FF A100" + $"A1FF 81C6 819A 8598 8193 8131 8167 814A" + $"8123 811A 8144 89FF A100 9DFF 819C 818E" + $"8199 8195 8193 8137 8167 814F 8123 811A" + $"8144 8DFF A100 9DFF 819C 818E 8199 8195" + $"8193 8137 8167 814F 8123 811A 8144 8DFF" + $"A100 9DFF 819C 818E 8199 8195 8193 8137" + $"8167 814F 8123 811A 8144 8DFF A100 9DFF" + $"819C 818E 8199 8195 8193 8137 8167 814F" + $"8123 811A 8144 8DFF BD00 8192 818F 8186" + $"8157 8147 8139 8167 8152 8123 811A 817A" + $"8161 CD00 8192 818F 8186 8157 8147 8139" + $"8167 8152 8123 811A 817A 8161 CD00 8192" + $"818F 8186 8157 8147 8139 8167 8152 8123" + $"811A 817A 8161 CD00 8192 818F 8186 8157" + $"8147 8139 8167 8152 8123 811A 817A 8161" + $"9500 95FF 8100 95FF 8195 8191 817C 8151" + $"812A 8132 8167 8153 8123 811A 814B 8178" + $"8183 8161 89FF 8500 95FF 8100 95FF 8195" + $"8191 817C 8151 812A 8132 8167 8153 8123" + $"811A 814B 8178 8183 8161 89FF 8500 95FF" + $"8100 95FF 8195 8191 817C 8151 812A 8132" + $"8167 8153 8123 811A 814B 8178 8183 8161" + $"89FF 8500 95FF 8100 95FF 8195 8191 817C" + $"8151 812A 8132 8167 8153 8123 811A 814B" + $"8178 8183 8161 89FF 8500 95FF 8100 91FF" + $"81A9 818B 817D 8141 812C 8137 8163 8153" + $"8124 811A 812C 8144 816D 818A 8180 8161" + $"85FF 8500 95FF 8100 91FF 81A9 818B 817D" + $"8141 812C 8137 8163 8153 8124 811A 812C" + $"8144 816D 818A 8180 8161 85FF 8500 95FF" + $"8100 91FF 81A9 818B 817D 8141 812C 8137" + $"8163 8153 8124 811A 812C 8144 816D 818A" + $"8180 8161 85FF 8500 95FF 8100 91FF 81A9" + $"818B 817D 8141 812C 8137 8163 8153 8124" + $"811A 812C 8144 816D 818A 8180 8161 85FF" + $"8500 95FF 8100 8DFF 81DA 8192 8178 8154" + $"8127 8137 8161 8151 8122 8111 8124 8132" + $"813F 8160 8184 818D 8186 8161 81FF 8500" + $"95FF 8100 8DFF 81DA 8192 8178 8154 8127" + $"8137 8161 8151 8122 8111 8124 8132 813F" + $"8160 8184 818D 8186 8161 81FF 8500 95FF" + $"8100 8DFF 81DA 8192 8178 8154 8127 8137" + $"8161 8151 8122 8111 8124 8132 813F 8160" + $"8184 818D 8186 8161 81FF 8500 95FF 8100" + $"8DFF 81DA 8192 8178 8154 8127 8137 8161" + $"8151 8122 8111 8124 8132 813F 8160 8184" + $"818D 8186 8161 81FF 8500 95FF 8100 8DFF" + $"81B7 815B 813C 8127 8130 8159 8156 812A" + $"810A 810C 812C 814F 8165 816C 8185 818D" + $"8189 8188 8169 8188 8100 95FF 8100 8DFF" + $"81B7 815B 813C 8127 8130 8159 8156 812A" + $"810A 810C 812C 814F 8165 816C 8185 818D" + $"8189 8188 8169 8188 8100 95FF 8100 8DFF" + $"81B7 815B 813C 8127 8130 8159 8156 812A" + $"810A 810C 812C 814F 8165 816C 8185 818D" + $"8189 8188 8169 8188 8100 95FF 8100 8DFF" + $"81B7 815B 813C 8127 8130 8159 8156 812A" + $"810A 810C 812C 814F 8165 816C 8185 818D" + $"8189 8188 8169 8188 8100 95FF 8100 8DFF" + $"8161 8120 812F 816A 8576 8583 8178 8174" + $"818C 819A 819D 8191 858E 818C 8188 8169" + $"8155 8100 95FF 8100 8DFF 8161 8120 812F" + $"816A 8576 8583 8178 8174 818C 819A 819D" + $"8191 858E 818C 8188 8169 8155 8100 95FF" + $"8100 8DFF 8161 8120 812F 816A 8576 8583" + $"8178 8174 818C 819A 819D 8191 858E 818C" + $"8188 8169 8155 8100 95FF 8100 8DFF 8161" + $"8120 812F 816A 8576 8583 8178 8174 818C" + $"819A 819D 8191 858E 818C 8188 8169 8155" + $"8100 95FF 8100 8DFF 81E7 8122 8130 8196" + $"8194 8153 8154 815F 8180 8195 81A2 819E" + $"819A 819D 8194 8188 8181 817A 8173 8144" + $"8100 95FF 8100 8DFF 81E7 8122 8130 8196" + $"8194 8153 8154 815F 8180 8195 81A2 819E" + $"819A 819D 8194 8188 8181 817A 8173 8144" + $"8100 95FF 8100 8DFF 81E7 8122 8130 8196" + $"8194 8153 8154 815F 8180 8195 81A2 819E" + $"819A 819D 8194 8188 8181 817A 8173 8144" + $"8100 95FF 8100 8DFF 81E7 8122 8130 8196" + $"8194 8153 8154 815F 8180 8195 81A2 819E" + $"819A 819D 8194 8188 8181 817A 8173 8144" + $"8100 95FF 8100 8DFF 81C6 8146 8151 8135" + $"8138 8119 811F 812A 8136 8144 814A 8175" + $"8191 8181 8173 8172 8168 8160 8181 81FF" + $"8100 95FF 8100 8DFF 81C6 8146 8151 8135" + $"8138 8119 811F 812A 8136 8144 814A 8175" + $"8191 8181 8173 8172 8168 8160 8181 81FF" + $"8100 95FF 8100 8DFF 81C6 8146 8151 8135" + $"8138 8119 811F 812A 8136 8144 814A 8175" + $"8191 8181 8173 8172 8168 8160 8181 81FF" + $"8100 95FF 8100 8DFF 81C6 8146 8151 8135" + $"8138 8119 811F 812A 8136 8144 814A 8175" + $"8191 8181 8173 8172 8168 8160 8181 81FF" + $"8100 95FF 8100 8DFF 8159 816A 8149 8122" + $"8177 8168 813C 811A 811D 8928 8138 814D" + $"8147 8148 814F 8147 818E 81FF 8100 95FF" + $"8100 8DFF 8159 816A 8149 8122 8177 8168" + $"813C 811A 811D 8928 8138 814D 8147 8148" + $"814F 8147 818E 81FF 8100 95FF 8100 8DFF" + $"8159 816A 8149 8122 8177 8168 813C 811A" + $"811D 8928 8138 814D 8147 8148 814F 8147" + $"818E 81FF 8100 95FF 8100 8DFF 8159 816A" + $"8149 8122 8177 8168 813C 811A 811D 8928" + $"8138 814D 8147 8148 814F 8147 818E 81FF" + $"8100 95FF 8100 89FF 81A8 8165 814A 817F" + $"819F 85FF 81D3 819A 8155 811C 8114 810E" + $"810B 811B 8126 812B 8133 8130 818E 819A" + $"8100 95FF 8100 89FF 81A8 8165 814A 817F" + $"819F 85FF 81D3 819A 8155 811C 8114 810E" + $"810B 811B 8126 812B 8133 8130 818E 819A" + $"8100 95FF 8100 89FF 81A8 8165 814A 817F" + $"819F 85FF 81D3 819A 8155 811C 8114 810E" + $"810B 811B 8126 812B 8133 8130 818E 819A" + $"8100 95FF 8100 89FF 81A8 8165 814A 817F" + $"819F 85FF 81D3 819A 8155 811C 8114 810E" + $"810B 811B 8126 812B 8133 8130 818E 819A" + $"8100 95FF 8100 89FF 8165 819F 81C2 95FF" + $"81D3 81B2 818E 8169 815F 8156 8142 8143" + $"812B 8135 818E 819F 8100 95FF 8100 89FF" + $"8165 819F 81C2 95FF 81D3 81B2 818E 8169" + $"815F 8156 8142 8143 812B 8135 818E 819F" + $"8100 95FF 8100 89FF 8165 819F 81C2 95FF" + $"81D3 81B2 818E 8169 815F 8156 8142 8143" + $"812B 8135 818E 819F 8100 95FF 8100 89FF" + $"8165 819F 81C2 95FF 81D3 81B2 818E 8169" + $"815F 8156 8142 8143 812B 8135 818E 819F" + $"8100 95FF 8100 C5FF 8100 85FF 816B 818E" + $"81A7 8100 95FF 8100 C5FF 8100 85FF 816B" + $"818E 81A7 8100 95FF 8100 C5FF 8100 85FF" + $"816B 818E 81A7 8100 95FF 8100 C5FF 8100" + $"85FF 816B 818E 81A7 8100 95FF 8100 C5FF" + $"8100 85FF 8122 8544 8100 95FF 8100 C5FF" + $"8100 85FF 8122 8544 8100 95FF 8100 C5FF" + $"8100 85FF 8122 8544 8100 95FF 8100 C5FF" + $"8100 85FF 8122 8544 8100 95FF 8100 C5FF" + $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF" + $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF" + $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF" + $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF" + $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF" + $"8100 C5FF 8100 8DFF 8500 95FF 8100 C5FF" + $"8100 8DFF 8500 95FF 8100 C5FF 8100 8DFF" + $"8500 95FF 8100 C5FF 8100 8DFF 8500 95FF" + $"8100 C5FF 8100 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF 8500 95FF CD00 8DFF" + $"8500 95FF CD00 8DFF FF00 FF00 FF00 FB00" + $"7438 6D6B 0000 4008 FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF" +}; + +data 'ics#' (-16455, "Item Icon") { + $"F557 D001 700E E024 9A9B 0175 9299 0162" + $"923E 0001 9004 0000 9BBC 102C 8434 5AFD" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" + $"FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF" +}; + +data 'ics4' (-16455, "Item Icon") { + $"AA3F DDDD DDDD DDAE A333 0000 0000 0C3E" + $"333A 0000 000C DBEC A333 0000 0CBC 2A00" + $"EDDF DDDB D2CB ECFF D00D 00CD BBBA B2D6" + $"D00D 00B2 DDBB DCCB D00D 00D4 D2D2 CC2D" + $"D00D 00BD CCE5 3EEC D00D 0C00 0000 CBCB" + $"D00D 0000 0000 0D0D D00D 0000 0000 0D00" + $"D00D ABAB ABAF 9F00 D00D 1111 11B8 9900" + $"D00D 1111 1189 9F00 EDDA 8291 ABAF 9FDD" +}; + +data 'ics8' (-16455, "Item Icon") { + $"DEDC DBB3 F9FA F9FA F9FA F9FA F9FA 8FFB" + $"DC23 23DB 0000 0000 0000 0000 0032 6A88" + $"DB23 23DC 0000 0000 0000 F52B 3357 882B" + $"DC23 23DB 0000 0000 F608 3234 33AD F600" + $"FCFA F9AC F9FA F95D 0E5D 3457 8833 F1F2" + $"FA00 00F9 0000 0733 825E 33AD 6432 33EF" + $"F900 00FA 0000 5D5E 5D33 825D 3332 2C57" + $"FA00 00F9 0000 5739 5D64 5D33 3232 335C" + $"F900 00FA 00F5 5D57 F732 828E 8988 88F9" + $"FA00 00F9 00F6 F600 0000 F5F6 4F5D F85D" + $"F900 00FA 0000 0000 0000 0000 00FA 0056" + $"FA00 00FA 0000 0000 0000 0000 00F9 0000" + $"F900 00F9 8359 8359 8359 ADD1 E8EA 0000" + $"FA00 00FA 0505 0505 0505 5FE5 E6E8 0000" + $"F900 00F9 0505 0505 0505 7DE6 E6D1 0000" + $"ACF9 FAFC 8359 8359 8359 ADD1 E8E9 FAF9" +}; + diff --git a/mondros2.ico b/mondros2.ico new file mode 100755 index 0000000..8b0e58c Binary files /dev/null and b/mondros2.ico differ diff --git a/pillow.ico b/pillow.ico new file mode 100755 index 0000000..c03c805 Binary files /dev/null and b/pillow.ico differ diff --git a/sample.rc b/sample.rc new file mode 100755 index 0000000..67beeae --- /dev/null +++ b/sample.rc @@ -0,0 +1,32 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: samples/samples.rc +// Purpose: a standard Win32 .rc file for the wxWindows samples +// Author: Vadim Zeitlin +// Modified by: +// Created: 04.08.03 +// RCS-ID: $Id: sample.rc,v 1.2 2003/08/14 14:08:53 VS Exp $ +// Copyright: (c) 2003 Vadim Zeitlin +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +// this minimal resource file is all what is needed for most of the wxWindows +// samples + +// note that the icon used by the Explorer (i.e. the programs icon) is the +// first icon in the executable and the icons are sorted both by their order +// (Win9x) and by alphabetically (!) (NT), so put this icon first and give it +// a name starting with "a" +aaaaaaaa ICON "sample.ico" + +// this icon is used with wxFrame::SetIcon() +sample ICON "sample.ico" + +// set this to 1 if you don't want to use manifest resource (manifest resource +// is needed to enable visual styles on Windows XP - see docs/msw/winxp.txt +// for more information) +#define wxUSE_NO_MANIFEST 0 + +// this is not always needed but doesn't hurt (except making the executable +// very slightly larger): this file contains the standard icons, cursors, ... +#include "wx/msw/wx.rc" + diff --git a/sdf.txt b/sdf.txt new file mode 100755 index 0000000..56a6051 --- /dev/null +++ b/sdf.txt @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/splash.dat b/splash.dat new file mode 100755 index 0000000..d6d6440 Binary files /dev/null and b/splash.dat differ diff --git a/toolStripBG.png b/toolStripBG.png new file mode 100755 index 0000000..2b79f54 Binary files /dev/null and b/toolStripBG.png differ diff --git a/toolStripLeft.png b/toolStripLeft.png new file mode 100755 index 0000000..a20ee57 Binary files /dev/null and b/toolStripLeft.png differ diff --git a/toolStripRight.png b/toolStripRight.png new file mode 100755 index 0000000..7106e86 Binary files /dev/null and b/toolStripRight.png differ diff --git a/ui.dat b/ui.dat new file mode 100755 index 0000000..76519f9 Binary files /dev/null and b/ui.dat differ diff --git a/ve-92.tmp b/ve-92.tmp new file mode 100755 index 0000000..1457dc4 --- /dev/null +++ b/ve-92.tmp @@ -0,0 +1,125 @@ + + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif //__BORLANDC__ + +#ifndef WX_PRECOMP +#include +#endif //WX_PRECOMP + +#include "MaterialDialog.h" +#include "Scene.h" +/////////////////////////////////////////////////////////////////////////// + +MaterialDialog::MaterialDialog( wxWindow* parent, int id, wxString title, wxPoint pos, wxSize size, int style ) : wxDialog( parent, id, title, pos, size, style ) +{ + wxBoxSizer* mainSizer; + mainSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* settingSizer; + settingSizer = new wxStaticBoxSizer( new wxStaticBox( this, -1, wxT("Material:") ), wxVERTICAL ); + + wxGridSizer* settingGirdSizer; + settingGirdSizer = new wxGridSizer( 2, 2, 0, 0 ); + + ambientStaticText = new wxStaticText( this, ID_DEFAULT, wxT("ambient:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( ambientStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + ambientButton = new wxButton( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); + ambientButton->SetBackgroundColour( wxColour( 38, 21, 249 ) ); + + settingGirdSizer->Add( ambientbutton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5 ); + + diffuseStaticText = new wxStaticText( this, ID_DEFAULT, wxT("diffuse:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( diffuseStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + diffuseButton = new wxButton( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); + diffuseButton->SetBackgroundColour( wxColour( 247, 51, 40 ) ); + + settingGirdSizer->Add( diffuseButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5 ); + + specularStaticText = new wxStaticText( this, ID_DEFAULT, wxT("specular:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( specularStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + specularButton = new wxButton( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); + specularButton->SetBackgroundColour( wxColour( 253, 243, 55 ) ); + + settingGirdSizer->Add( specularButton, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); + + emissionStaticText = new wxStaticText( this, ID_DEFAULT, wxT("emission:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( emissionStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + emissionButton = new wxButton( this, ID_DEFAULT, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); + emissionButton->SetBackgroundColour( wxColour( 134, 248, 73 ) ); + + settingGirdSizer->Add( emissionButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + shininessStaticText = new wxStaticText( this, ID_DEFAULT, wxT("shininess:"), wxDefaultPosition, wxDefaultSize, 0 ); + settingGirdSizer->Add( shininessStaticText, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + shininessSlider = new wxSlider( this, ID_DEFAULT, 10, 0, 20, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL ); + settingGirdSizer->Add( shininessSlider, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + settingSizer->Add( settingGirdSizer, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + mainSizer->Add( settingSizer, 1, wxEXPAND|wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + wxBoxSizer* buttonSizer; + buttonSizer = new wxBoxSizer( wxHORIZONTAL ); + + OKButton = new wxButton( this, ID_DEFAULT, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( OKButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + cancelButton = new wxButton( this, ID_DEFAULT, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + buttonSizer->Add( cancelButton, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + mainSizer->Add( buttonSizer, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + this->SetSizer( mainSizer ); + this->Layout(); + Fit(); + initializeData(); +} + + +//MaterialDialog::~MaterialDialog(void){} +void MaterialDialog::initializeData() +{ + float ambient[4]; + float diffuse[4]; + float specular[4]; + float emission[4]; + float shininess; + theScene->getSelectionMaterial(ambient,diffuse,specular,emission,&shininess); + ambientButton->SetBackgroundColour( wxColour( 255.0f*ambient[0],255.0f*ambient[1],255.0f*ambient[2] ) ); + diffuseButton->SetBackgroundColour( wxColour( 255.0f*diffuse[0],255.0f*diffuse[1],255.0f*diffuse[2] ) ); + specularButton->SetBackgroundColour( wxColour( 255.0f*specular[0],255.0f*specular[1],255.0f*specular[2] ) ); + emissionButton->SetBackgroundColour( wxColour( 255.0f*emission[0],255.0f*emission[1],255.0f*emission[2] ) ); + shininessSlider->SetValue(shininess); +} + +void MaterialDialog::onAmbientbutton(wxCommandEvent& event) +{ + +}; + +void MaterialDialog::onDiffuseButton(wxCommandEvent& event) +{ +}; + +void MaterialDialog::onSpecularButton(wxCommandEvent& event) +{ +}; + +void MaterialDialog::onEmissionButton(wxCommandEvent& event) +{ +}; + +void MaterialDialog::onOKButton(wxCommandEvent& event) +{ +}; + +void MaterialDialog::onCancelButton(wxCommandEvent& event) +{ +}; \ No newline at end of file