commit
23c40f7e86
914 changed files with 210683 additions and 0 deletions
-
2693d-viewer/3d_aux.cpp
-
6193d-viewer/3d_canvas.cpp
-
1193d-viewer/3d_class.cpp
-
7873d-viewer/3d_draw.cpp
-
3223d-viewer/3d_frame.cpp
-
5183d-viewer/3d_read_mesh.cpp
-
1363d-viewer/3d_struct.h
-
1293d-viewer/3d_toolbar.cpp
-
1723d-viewer/3d_viewer.h
-
153d-viewer/bitmaps3d.h
-
273d-viewer/bitmaps3d/axis3d.xpm
-
273d-viewer/bitmaps3d/axis3d_back.xpm
-
273d-viewer/bitmaps3d/axis3d_bottom.xpm
-
273d-viewer/bitmaps3d/axis3d_front.xpm
-
273d-viewer/bitmaps3d/axis3d_left.xpm
-
273d-viewer/bitmaps3d/axis3d_right.xpm
-
273d-viewer/bitmaps3d/axis3d_top.xpm
-
483d-viewer/bitmaps3d/import3d.xpm
-
323d-viewer/bitmaps3d/rotate+x.xpm
-
323d-viewer/bitmaps3d/rotate+y.xpm
-
323d-viewer/bitmaps3d/rotate+z.xpm
-
323d-viewer/bitmaps3d/rotate-x.xpm
-
323d-viewer/bitmaps3d/rotate-y.xpm
-
323d-viewer/bitmaps3d/rotate-z.xpm
-
283d-viewer/bitmaps3d/zoomoins3d.xpm
-
323d-viewer/bitmaps3d/zoompage3d.xpm
-
293d-viewer/bitmaps3d/zoomplus3d.xpm
-
293d-viewer/bitmaps3d/zoomrefr3d.xpm
-
243d-viewer/makefile.g95
-
353d-viewer/makefile.gtk
-
283d-viewer/makefile.include
-
353d-viewer/makefile.macosx
-
3243d-viewer/trackball.cpp
-
783d-viewer/trackball.h
-
28bitmaps/3d.xpm
-
72bitmaps/Add_Arc.xpm
-
60bitmaps/Add_Circle.xpm
-
91bitmaps/Add_Component.xpm
-
39bitmaps/Add_Dashed_Line.xpm
-
34bitmaps/Add_Entry.xpm
-
78bitmaps/Add_GLabel.xpm
-
84bitmaps/Add_Junction.xpm
-
27bitmaps/Add_Line.xpm
-
48bitmaps/Add_Line_Label.xpm
-
78bitmaps/Add_Polygon.xpm
-
48bitmaps/Add_Rectangle.xpm
-
28bitmaps/Add_Text.xpm
-
40bitmaps/Apply.xpm
-
127bitmaps/Cancel.xpm
-
42bitmaps/CopyBlock.xpm
-
77bitmaps/Cursor_Shape.xpm
-
46bitmaps/Datasheet.xpm
-
162bitmaps/Delete_Arc.xpm
-
150bitmaps/Delete_Circle.xpm
-
134bitmaps/Delete_Cotation.xpm
-
148bitmaps/Delete_Field.xpm
-
155bitmaps/Delete_Line.xpm
-
144bitmaps/Delete_Polygon.xpm
-
138bitmaps/Delete_Rectangle.xpm
-
135bitmaps/Delete_Segment.xpm
-
138bitmaps/Delete_Text.xpm
-
114bitmaps/Display_Options.xpm
-
52bitmaps/Edit.xpm
-
32bitmaps/Edit_Text.xpm
-
87bitmaps/Exit.xpm
-
62bitmaps/File_FootPrint.xpm
-
70bitmaps/Fonts.xpm
-
87bitmaps/Info.xpm
-
53bitmaps/Mirror_H.xpm
-
55bitmaps/Mirror_V.xpm
-
103bitmaps/Morgan1.xpm
-
101bitmaps/Morgan2.xpm
-
72bitmaps/Move.xpm
-
80bitmaps/Move_Arc.xpm
-
73bitmaps/Move_Circle.xpm
-
86bitmaps/Move_Field.xpm
-
72bitmaps/Move_Line.xpm
-
70bitmaps/Move_Polygon.xpm
-
64bitmaps/Move_Rectangle.xpm
-
70bitmaps/Move_Text.xpm
-
157bitmaps/New_Library.xpm
-
159bitmaps/Open_Library.xpm
-
73bitmaps/Options_Arc.xpm
-
78bitmaps/Options_Circle.xpm
-
77bitmaps/Options_New_Pad.xpm
-
57bitmaps/Options_Pad.xpm
-
68bitmaps/Options_Rectangle.xpm
-
55bitmaps/Options_Segment.xpm
-
64bitmaps/Options_Text.xpm
-
138bitmaps/Orient.xpm
-
27bitmaps/Pad_Sketch.xpm
-
109bitmaps/Read_SetUp.xpm
-
102bitmaps/Repaint.xpm
-
117bitmaps/Rotate+.xpm
-
120bitmaps/Rotate-.xpm
-
100bitmaps/Rotate_Field.xpm
-
123bitmaps/Save_CmpStuff.xpm
-
123bitmaps/Save_Library.xpm
-
115bitmaps/Save_NetList.xpm
-
87bitmaps/Save_Project.xpm
@ -0,0 +1,269 @@ |
|||
/////////////////////////////////////////////////////////////////////////////
|
|||
// Name: 3d_aux.cpp
|
|||
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|||
|
|||
#ifdef __GNUG__
|
|||
#pragma implementation
|
|||
#pragma interface
|
|||
#endif
|
|||
|
|||
#include "fctsys.h"
|
|||
|
|||
#if !wxUSE_GLCANVAS
|
|||
#error Please set wxUSE_GLCANVAS to 1 in setup.h.
|
|||
#endif
|
|||
|
|||
#include "common.h"
|
|||
#include "trigo.h"
|
|||
|
|||
#include "bitmaps.h"
|
|||
|
|||
#include "3d_viewer.h"
|
|||
#include "3d_struct.h"
|
|||
#include "trackball.h"
|
|||
|
|||
/**************************************************************************/ |
|||
void Struct3D_Master::Set_Object_Coords(S3D_Vertex * coord, int nbcoord ) |
|||
/**************************************************************************/ |
|||
{ |
|||
int ii; |
|||
|
|||
|
|||
/* adjust object scale, rotation and offset position */ |
|||
for ( ii = 0; ii < nbcoord; ii++ ) |
|||
{ |
|||
coord[ii].x *= m_MatScale.x; |
|||
coord[ii].y *= m_MatScale.y; |
|||
coord[ii].z *= m_MatScale.z; |
|||
/* adjust rotation */ |
|||
if ( m_MatRotation.x ) |
|||
RotatePoint(&coord[ii].y, &coord[ii].z, |
|||
(int)(m_MatRotation.x * 10)); |
|||
if ( m_MatRotation.y ) |
|||
RotatePoint(&coord[ii].z, &coord[ii].x, |
|||
(int)(m_MatRotation.y * 10)); |
|||
if ( m_MatRotation.z ) |
|||
RotatePoint(&coord[ii].x, &coord[ii].y, |
|||
(int)(m_MatRotation.z * 10)); |
|||
/* adjust offset position (offset is given in UNIT 3D (0.1 inch) */ |
|||
#define SCALE_3D_CONV (PCB_INTERNAL_UNIT/UNITS3D_TO_UNITSPCB)
|
|||
coord[ii].x += m_MatPosition.x * SCALE_3D_CONV; |
|||
coord[ii].y += m_MatPosition.y * SCALE_3D_CONV; |
|||
coord[ii].z += m_MatPosition.z * SCALE_3D_CONV; |
|||
} |
|||
} |
|||
|
|||
/************************************************************/ |
|||
void Set_Object_Data(const S3D_Vertex * coord, int nbcoord ) |
|||
/************************************************************/ |
|||
{ |
|||
int ii; |
|||
GLfloat ax,ay,az,bx,by,bz,nx,ny,nz,r; |
|||
|
|||
/* ignore faces with less than 3 points */ |
|||
if (nbcoord < 3) return; |
|||
|
|||
/* calculate normal direction */ |
|||
ax = coord[1].x - coord[0].x; |
|||
ay = coord[1].y - coord[0].y; |
|||
az = coord[1].z - coord[0].z; |
|||
|
|||
bx = coord[nbcoord-1].x - coord[0].x; |
|||
by = coord[nbcoord-1].y - coord[0].y; |
|||
bz = coord[nbcoord-1].z - coord[0].z; |
|||
|
|||
nx = ay * bz - az * by; |
|||
ny = az * bx - ax * bz; |
|||
nz = ax * by - ay * bx; |
|||
|
|||
r = sqrt(nx*nx + ny*ny + nz*nz); |
|||
if (r >= 0.000001) /* avoid division by zero */ |
|||
{ |
|||
nx /= r; ny /= r; nz /= r; |
|||
glNormal3f(nx,ny,nz); |
|||
} |
|||
|
|||
/* glBegin/glEnd */ |
|||
switch (nbcoord) |
|||
{ |
|||
case 3: |
|||
glBegin(GL_TRIANGLES); |
|||
break; |
|||
|
|||
case 4: |
|||
glBegin(GL_QUADS); |
|||
break; |
|||
|
|||
default: |
|||
glBegin(GL_POLYGON); |
|||
break; |
|||
} |
|||
|
|||
/* draw polygon/triangle/quad */ |
|||
for (ii = 0; ii < nbcoord; ii++) |
|||
{ |
|||
glVertex3f(coord[ii].x * DataScale3D, |
|||
coord[ii].y * DataScale3D, |
|||
coord[ii].z * DataScale3D); |
|||
} |
|||
|
|||
glEnd(); |
|||
} |
|||
|
|||
|
|||
/**********************************************/ |
|||
GLuint Pcb3D_GLCanvas::DisplayCubeforTest(void) |
|||
/**********************************************/ |
|||
{ |
|||
GLuint gllist = glGenLists( 1 ); |
|||
|
|||
glNewList( gllist, GL_COMPILE_AND_EXECUTE ); |
|||
/* draw six faces of a cube */ |
|||
glBegin(GL_QUADS); |
|||
glNormal3f( 0.0F, 0.0F, 1.0F); |
|||
glVertex3f( 0.5F, 0.5F, 0.5F); glVertex3f(-0.5F, 0.5F, 0.5F); |
|||
glVertex3f(-0.5F,-0.5F, 0.5F); glVertex3f( 0.5F,-0.5F, 0.5F); |
|||
|
|||
glNormal3f( 0.0F, 0.0F,-1.0F); |
|||
glVertex3f(-0.5F,-0.5F,-0.5F); glVertex3f(-0.5F, 0.5F,-0.5F); |
|||
glVertex3f( 0.5F, 0.5F,-0.5F); glVertex3f( 0.5F,-0.5F,-0.5F); |
|||
|
|||
glNormal3f( 0.0F, 1.0F, 0.0F); |
|||
glVertex3f( 0.5F, 0.5F, 0.5F); glVertex3f( 0.5F, 0.5F,-0.5F); |
|||
glVertex3f(-0.5F, 0.5F,-0.5F); glVertex3f(-0.5F, 0.5F, 0.5F); |
|||
|
|||
glNormal3f( 0.0F,-1.0F, 0.0F); |
|||
glVertex3f(-0.5F,-0.5F,-0.5F); glVertex3f( 0.5F,-0.5F,-0.5F); |
|||
glVertex3f( 0.5F,-0.5F, 0.5F); glVertex3f(-0.5F,-0.5F, 0.5F); |
|||
|
|||
glNormal3f( 1.0F, 0.0F, 0.0F); |
|||
glVertex3f( 0.5F, 0.5F, 0.5F); glVertex3f( 0.5F,-0.5F, 0.5F); |
|||
glVertex3f( 0.5F,-0.5F,-0.5F); glVertex3f( 0.5F, 0.5F,-0.5F); |
|||
|
|||
glNormal3f(-1.0F, 0.0F, 0.0F); |
|||
glVertex3f(-0.5F,-0.5F,-0.5F); glVertex3f(-0.5F,-0.5F, 0.5F); |
|||
glVertex3f(-0.5F, 0.5F, 0.5F); glVertex3f(-0.5F, 0.5F,-0.5F); |
|||
glEnd(); |
|||
|
|||
glEndList(); |
|||
|
|||
return gllist; |
|||
} |
|||
|
|||
|
|||
|
|||
/**********************/ |
|||
/* class Info_3D_Visu */ |
|||
/**********************/ |
|||
|
|||
/* Constructor */ |
|||
Info_3D_Visu::Info_3D_Visu(void) |
|||
{ |
|||
int ii; |
|||
m_Beginx = m_Beginy = 0.0; /* position of mouse */ |
|||
m_Zoom = 1.0; /* field of view in degrees */ |
|||
trackball( m_Quat, 0.0, 0.0, 0.0, 0.0 ); |
|||
for ( ii = 0; ii < 4; ii++ ) m_Rot[ii] = 0.0; |
|||
m_Layers = 1; |
|||
m_BoardSettings = NULL; |
|||
} |
|||
|
|||
|
|||
Info_3D_Visu::~Info_3D_Visu(void) |
|||
{ |
|||
} |
|||
|
|||
|
|||
/*****************************************************************/ |
|||
/* Classe pour afficher et editer un Vertex (triplet de valeurs),*/ |
|||
/* en INCHES ou MM ou sans unites */ |
|||
/*****************************************************************/ |
|||
|
|||
WinEDA_VertexCtrl::WinEDA_VertexCtrl(wxWindow *parent, const wxString & title, |
|||
wxBoxSizer * BoxSizer, |
|||
int units, int internal_unit) |
|||
{ |
|||
wxString text; |
|||
wxStaticText * msgtitle; |
|||
|
|||
m_Units = units; |
|||
m_Internal_Unit = internal_unit; |
|||
|
|||
if ( title.IsEmpty() ) text = _("Vertex "); |
|||
else text = title; |
|||
text += ReturnUnitSymbol(units); |
|||
|
|||
msgtitle = new wxStaticText(parent, -1, text, wxDefaultPosition, wxSize(-1,-1), 0 ); |
|||
BoxSizer->Add(msgtitle, wxGROW|wxLEFT|wxRIGHT|wxTOP|wxBOTTOM|wxADJUST_MINSIZE); |
|||
|
|||
wxFlexGridSizer * GridSizer = new wxFlexGridSizer(3, 2, 0, 0); |
|||
BoxSizer->Add(GridSizer, 0, wxGROW|wxALL, 5); |
|||
|
|||
msgtitle = new wxStaticText(parent, -1, wxT("X:")); |
|||
GridSizer->Add(msgtitle, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 5); |
|||
m_XValueCtrl = new wxTextCtrl(parent, -1, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0 ); |
|||
GridSizer->Add(m_XValueCtrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5); |
|||
|
|||
msgtitle = new wxStaticText(parent, -1, wxT("Y:"), wxDefaultPosition, wxSize(-1,-1), 0 ); |
|||
GridSizer->Add(msgtitle, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 5); |
|||
m_YValueCtrl = new wxTextCtrl(parent, -1, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0 ); |
|||
GridSizer->Add(m_YValueCtrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5); |
|||
|
|||
msgtitle = new wxStaticText(parent, -1, wxT("Z:"), wxDefaultPosition, wxSize(-1,-1), 0 ); |
|||
GridSizer->Add(msgtitle, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 5); |
|||
m_ZValueCtrl = new wxTextCtrl(parent, -1, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0 ); |
|||
GridSizer->Add(m_ZValueCtrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5); |
|||
} |
|||
|
|||
WinEDA_VertexCtrl::~WinEDA_VertexCtrl(void) |
|||
{ |
|||
} |
|||
|
|||
|
|||
/*******************************************/ |
|||
S3D_Vertex WinEDA_VertexCtrl::GetValue(void) |
|||
/*******************************************/ |
|||
/* Retourne (en unites internes) les coordonnes entrees (en unites utilisateur)
|
|||
*/ |
|||
{ |
|||
S3D_Vertex value; |
|||
double dtmp; |
|||
|
|||
m_XValueCtrl->GetValue().ToDouble(&dtmp); |
|||
value.x = dtmp; |
|||
m_YValueCtrl->GetValue().ToDouble(&dtmp); |
|||
value.y = dtmp; |
|||
m_ZValueCtrl->GetValue().ToDouble(&dtmp); |
|||
value.z = dtmp; |
|||
return value; |
|||
} |
|||
|
|||
/**************************************************/ |
|||
void WinEDA_VertexCtrl::SetValue(S3D_Vertex vertex) |
|||
/**************************************************/ |
|||
{ |
|||
wxString text; |
|||
|
|||
text.Printf( wxT("%f"), vertex.x); |
|||
m_XValueCtrl->Clear(); |
|||
m_XValueCtrl->AppendText(text); |
|||
|
|||
text.Printf(wxT("%f"), vertex.y); |
|||
m_YValueCtrl->Clear(); |
|||
m_YValueCtrl->AppendText(text); |
|||
|
|||
text.Printf(wxT("%f"), vertex.z); |
|||
m_ZValueCtrl->Clear(); |
|||
m_ZValueCtrl->AppendText(text); |
|||
} |
|||
|
|||
/*****************************************/ |
|||
void WinEDA_VertexCtrl::Enable(bool onoff) |
|||
/*****************************************/ |
|||
{ |
|||
m_XValueCtrl->Enable(onoff); |
|||
m_YValueCtrl->Enable(onoff); |
|||
m_ZValueCtrl->Enable(onoff); |
|||
} |
|||
|
|||
@ -0,0 +1,619 @@ |
|||
/////////////////////////////////////////////////////////////////////////////
|
|||
// Name: 3d_canvas.cpp
|
|||
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|||
|
|||
#ifdef __GNUG__
|
|||
#pragma implementation
|
|||
#pragma interface
|
|||
#endif
|
|||
|
|||
#include "fctsys.h"
|
|||
#include "trigo.h"
|
|||
|
|||
#include "wx/image.h"
|
|||
|
|||
#if !wxUSE_GLCANVAS
|
|||
#error Please set wxUSE_GLCANVAS to 1 in setup.h.
|
|||
#endif
|
|||
|
|||
#include "wx/dataobj.h"
|
|||
#include "wx/clipbrd.h"
|
|||
|
|||
#include "fctsys.h"
|
|||
#include "common.h"
|
|||
#include "id.h"
|
|||
|
|||
#include "3d_viewer.h"
|
|||
#include "trackball.h"
|
|||
|
|||
/* Tool and button Bitmaps */ |
|||
#define XPM_3D_MAIN
|
|||
#include "bitmaps3d.h"
|
|||
#include "bitmaps.h"
|
|||
|
|||
enum onrclick_id |
|||
{ |
|||
ID_POPUP_3D_VIEW_START = 2000, |
|||
ID_POPUP_ZOOMIN, |
|||
ID_POPUP_ZOOMOUT, |
|||
ID_POPUP_VIEW_XPOS, |
|||
ID_POPUP_VIEW_XNEG, |
|||
ID_POPUP_VIEW_YPOS, |
|||
ID_POPUP_VIEW_YNEG, |
|||
ID_POPUP_VIEW_ZPOS, |
|||
ID_POPUP_VIEW_ZNEG, |
|||
ID_POPUP_MOVE3D_LEFT, |
|||
ID_POPUP_MOVE3D_RIGHT, |
|||
ID_POPUP_MOVE3D_UP, |
|||
ID_POPUP_MOVE3D_DOWN, |
|||
ID_POPUP_3D_VIEW_END |
|||
}; |
|||
|
|||
|
|||
/*
|
|||
* Pcb3D_GLCanvas implementation |
|||
*/ |
|||
|
|||
BEGIN_EVENT_TABLE(Pcb3D_GLCanvas, wxGLCanvas) |
|||
EVT_SIZE(Pcb3D_GLCanvas::OnSize) |
|||
EVT_PAINT(Pcb3D_GLCanvas::OnPaint) |
|||
EVT_CHAR(Pcb3D_GLCanvas::OnChar) |
|||
EVT_MOUSE_EVENTS(Pcb3D_GLCanvas::OnMouseEvent) |
|||
EVT_ERASE_BACKGROUND(Pcb3D_GLCanvas::OnEraseBackground) |
|||
EVT_MENU_RANGE(ID_POPUP_3D_VIEW_START, ID_POPUP_3D_VIEW_END, |
|||
Pcb3D_GLCanvas::OnPopUpMenu) |
|||
END_EVENT_TABLE() |
|||
|
|||
/*************************************************************************/ |
|||
Pcb3D_GLCanvas::Pcb3D_GLCanvas(WinEDA3D_DrawFrame *parent, wxWindowID id, |
|||
int* gl_attrib): |
|||
wxGLCanvas(parent, id, wxPoint(-1,-1), wxSize(-1,-1), 0, wxT("Pcb3D_glcanvas"), gl_attrib) |
|||
/*************************************************************************/ |
|||
{ |
|||
m_init = FALSE; |
|||
m_gllist = 0; |
|||
m_Parent = parent; |
|||
DisplayStatus(); |
|||
} |
|||
|
|||
|
|||
/*************************************/ |
|||
Pcb3D_GLCanvas::~Pcb3D_GLCanvas(void) |
|||
/*************************************/ |
|||
{ |
|||
ClearLists(); |
|||
} |
|||
|
|||
/*************************************/ |
|||
void Pcb3D_GLCanvas::ClearLists(void) |
|||
/*************************************/ |
|||
{ |
|||
if( m_gllist > 0 ) |
|||
glDeleteLists(m_gllist, 1); |
|||
m_init = FALSE; |
|||
m_gllist = 0; |
|||
} |
|||
|
|||
/*********************************************/ |
|||
void Pcb3D_GLCanvas::OnChar(wxKeyEvent& event) |
|||
/*********************************************/ |
|||
{ |
|||
SetView3D(event.GetKeyCode()); |
|||
event.Skip(); |
|||
} |
|||
|
|||
/*********************************************/ |
|||
void Pcb3D_GLCanvas::SetView3D(int keycode) |
|||
/*********************************************/ |
|||
{ |
|||
int ii; |
|||
double delta_move = 0.7 * g_Parm_3D_Visu.m_Zoom; |
|||
|
|||
switch(keycode) |
|||
{ |
|||
case WXK_LEFT: |
|||
g_Draw3d_dx -= delta_move; |
|||
break; |
|||
case WXK_RIGHT: |
|||
g_Draw3d_dx += delta_move; |
|||
break; |
|||
case WXK_UP: |
|||
g_Draw3d_dy += delta_move; |
|||
break; |
|||
case WXK_DOWN: |
|||
g_Draw3d_dy -= delta_move; |
|||
break; |
|||
|
|||
case WXK_HOME: |
|||
g_Parm_3D_Visu.m_Zoom = 1.0; |
|||
g_Draw3d_dx = g_Draw3d_dy = 0; |
|||
trackball( g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); |
|||
break; |
|||
|
|||
case WXK_END: |
|||
break; |
|||
|
|||
case WXK_F1: |
|||
g_Parm_3D_Visu.m_Zoom /= 1.4; |
|||
if ( g_Parm_3D_Visu.m_Zoom <= 0.01) |
|||
g_Parm_3D_Visu.m_Zoom = 0.01; |
|||
break; |
|||
|
|||
case WXK_F2: |
|||
g_Parm_3D_Visu.m_Zoom *= 1.4; |
|||
break; |
|||
|
|||
case '+': |
|||
break; |
|||
|
|||
case '-': |
|||
break; |
|||
|
|||
case 'r': |
|||
case 'R': |
|||
g_Draw3d_dx = g_Draw3d_dy = 0; |
|||
for ( ii = 0; ii < 4; ii++ ) |
|||
g_Parm_3D_Visu.m_Rot[ii] = 0.0; |
|||
trackball(g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); |
|||
break; |
|||
|
|||
case 'x': |
|||
for ( ii = 0; ii < 4; ii++ ) |
|||
g_Parm_3D_Visu.m_Rot[ii] = 0.0; |
|||
trackball(g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); |
|||
g_Parm_3D_Visu.m_ROTZ = -90; |
|||
g_Parm_3D_Visu.m_ROTX = -90; |
|||
break; |
|||
|
|||
case 'X': |
|||
for ( ii = 0; ii < 4; ii++ ) |
|||
g_Parm_3D_Visu.m_Rot[ii] = 0.0; |
|||
trackball(g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); |
|||
g_Parm_3D_Visu.m_ROTZ = 90; |
|||
g_Parm_3D_Visu.m_ROTX = -90; |
|||
break; |
|||
|
|||
case 'y': |
|||
for ( ii = 0; ii < 4; ii++ ) |
|||
g_Parm_3D_Visu.m_Rot[ii] = 0.0; |
|||
trackball(g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); |
|||
g_Parm_3D_Visu.m_ROTX = -90; |
|||
break; |
|||
|
|||
case 'Y': |
|||
for ( ii = 0; ii < 4; ii++ ) |
|||
g_Parm_3D_Visu.m_Rot[ii] = 0.0; |
|||
trackball( g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); |
|||
g_Parm_3D_Visu.m_ROTX = -90; |
|||
g_Parm_3D_Visu.m_ROTZ = -180; |
|||
break; |
|||
|
|||
case 'z': |
|||
for ( ii = 0; ii < 4; ii++ ) |
|||
g_Parm_3D_Visu.m_Rot[ii] = 0.0; |
|||
trackball(g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); |
|||
break; |
|||
|
|||
case 'Z': |
|||
for ( ii = 0; ii < 4; ii++ ) |
|||
g_Parm_3D_Visu.m_Rot[ii] = 0.0; |
|||
trackball(g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); |
|||
g_Parm_3D_Visu.m_ROTX = -180; |
|||
break; |
|||
|
|||
default: |
|||
return; |
|||
} |
|||
|
|||
DisplayStatus(); |
|||
Refresh(FALSE); |
|||
} |
|||
|
|||
/********************************************************/ |
|||
void Pcb3D_GLCanvas::OnMouseEvent(wxMouseEvent& event) |
|||
/********************************************************/ |
|||
{ |
|||
wxSize size(GetClientSize()); |
|||
float spin_quat[4]; |
|||
|
|||
|
|||
if( event.RightDown() ) |
|||
{ |
|||
OnRightClick(event); return; |
|||
} |
|||
|
|||
if ( event.m_wheelRotation ) |
|||
{ |
|||
if ( event.GetWheelRotation() > 0 ) |
|||
{ |
|||
g_Parm_3D_Visu.m_Zoom /= 1.4; |
|||
if ( g_Parm_3D_Visu.m_Zoom <= 0.01) |
|||
g_Parm_3D_Visu.m_Zoom = 0.01; |
|||
} |
|||
|
|||
else g_Parm_3D_Visu.m_Zoom *= 1.4; |
|||
DisplayStatus(); |
|||
Refresh(FALSE); |
|||
} |
|||
|
|||
if (event.Dragging()) |
|||
{ |
|||
/* drag in progress, simulate trackball */ |
|||
trackball(spin_quat, |
|||
(2.0*g_Parm_3D_Visu.m_Beginx - size.x) / size.x, |
|||
(size.y - 2.0*g_Parm_3D_Visu.m_Beginy) / size.y, |
|||
( 2.0*event.GetX() - size.x) / size.x, |
|||
( size.y - 2.0*event.GetY()) / size.y); |
|||
|
|||
add_quats( spin_quat, g_Parm_3D_Visu.m_Quat, g_Parm_3D_Visu.m_Quat ); |
|||
|
|||
/* orientation has changed, redraw mesh */ |
|||
DisplayStatus(); |
|||
Refresh(FALSE); |
|||
} |
|||
|
|||
g_Parm_3D_Visu.m_Beginx = event.GetX(); |
|||
g_Parm_3D_Visu.m_Beginy = event.GetY(); |
|||
} |
|||
|
|||
/*******************************************************/ |
|||
void Pcb3D_GLCanvas::OnRightClick(wxMouseEvent& event) |
|||
/*******************************************************/ |
|||
/* Construit et affiche un menu Popup lorsque on actionne le bouton droit
|
|||
de la souris |
|||
*/ |
|||
{ |
|||
wxPoint pos; |
|||
wxMenu PopUpMenu; |
|||
|
|||
pos.x = event.GetX(); pos.y = event.GetY(); |
|||
wxMenuItem *item = new wxMenuItem(&PopUpMenu, ID_POPUP_ZOOMIN, |
|||
_("Zoom +")); |
|||
item->SetBitmap(zoom_in_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_ZOOMOUT, |
|||
_("Zoom -")); |
|||
item->SetBitmap(zoom_out_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
PopUpMenu.AppendSeparator(); |
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_VIEW_ZPOS, |
|||
_("Top View")); |
|||
item->SetBitmap(axis3d_top_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_VIEW_ZNEG, |
|||
_("Bottom View")); |
|||
item->SetBitmap(axis3d_bottom_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
PopUpMenu.AppendSeparator(); |
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_VIEW_XPOS, |
|||
_("Right View")); |
|||
item->SetBitmap(axis3d_right_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_VIEW_XNEG, |
|||
_("Left View")); |
|||
item->SetBitmap(axis3d_left_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
|
|||
PopUpMenu.AppendSeparator(); |
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_VIEW_YPOS, |
|||
_("Front View")); |
|||
item->SetBitmap(axis3d_front_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_VIEW_YNEG, |
|||
_("Back View")); |
|||
item->SetBitmap(axis3d_back_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
PopUpMenu.AppendSeparator(); |
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_MOVE3D_LEFT, |
|||
_("Move left <-")); |
|||
item->SetBitmap(left_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_MOVE3D_RIGHT, |
|||
_("Move right ->")); |
|||
item->SetBitmap(right_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_MOVE3D_UP, |
|||
_("Move Up ^")); |
|||
item->SetBitmap(up_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
item = new wxMenuItem(&PopUpMenu, ID_POPUP_MOVE3D_DOWN, |
|||
_("Move Down")); |
|||
item->SetBitmap(down_xpm); |
|||
PopUpMenu.Append(item); |
|||
|
|||
PopupMenu( &PopUpMenu, pos); |
|||
} |
|||
|
|||
/*******************************************************/ |
|||
void Pcb3D_GLCanvas::OnPopUpMenu(wxCommandEvent & event) |
|||
/*******************************************************/ |
|||
{ |
|||
int key = 0; |
|||
|
|||
switch( event.GetId() ) |
|||
{ |
|||
case ID_POPUP_ZOOMIN: |
|||
key = WXK_F1; |
|||
break; |
|||
|
|||
case ID_POPUP_ZOOMOUT: |
|||
key = WXK_F2; |
|||
break; |
|||
|
|||
case ID_POPUP_VIEW_XPOS: |
|||
key = 'x'; |
|||
break; |
|||
|
|||
case ID_POPUP_VIEW_XNEG: |
|||
key = 'X'; |
|||
break; |
|||
|
|||
case ID_POPUP_VIEW_YPOS: |
|||
key = 'y'; |
|||
break; |
|||
|
|||
case ID_POPUP_VIEW_YNEG: |
|||
key = 'Y'; |
|||
break; |
|||
|
|||
case ID_POPUP_VIEW_ZPOS: |
|||
key = 'z'; |
|||
break; |
|||
|
|||
case ID_POPUP_VIEW_ZNEG: |
|||
key = 'Z'; |
|||
break; |
|||
|
|||
case ID_POPUP_MOVE3D_LEFT: |
|||
key = WXK_LEFT; |
|||
break; |
|||
|
|||
case ID_POPUP_MOVE3D_RIGHT: |
|||
key = WXK_RIGHT; |
|||
break; |
|||
|
|||
case ID_POPUP_MOVE3D_UP: |
|||
key = WXK_UP; |
|||
break; |
|||
|
|||
case ID_POPUP_MOVE3D_DOWN: |
|||
key = WXK_DOWN; |
|||
break; |
|||
|
|||
default: |
|||
return; |
|||
} |
|||
SetView3D(key); |
|||
} |
|||
|
|||
|
|||
/***************************************/ |
|||
void Pcb3D_GLCanvas::DisplayStatus(void) |
|||
/***************************************/ |
|||
{ |
|||
wxString msg; |
|||
msg.Printf(wxT("dx %3.2f"), g_Draw3d_dx); |
|||
m_Parent->SetStatusText(msg,1); |
|||
|
|||
msg.Printf(wxT("dy %3.2f"), g_Draw3d_dy); |
|||
m_Parent->SetStatusText(msg,2); |
|||
|
|||
msg.Printf(wxT("View: %3.1f"), 45 * g_Parm_3D_Visu.m_Zoom); |
|||
m_Parent->SetStatusText(msg,3); |
|||
} |
|||
|
|||
|
|||
/*************************************************/ |
|||
void Pcb3D_GLCanvas::OnPaint( wxPaintEvent& event ) |
|||
/*************************************************/ |
|||
{ |
|||
wxPaintDC dc(this); |
|||
|
|||
#ifndef __WXMOTIF__
|
|||
if (!GetContext()) return; |
|||
#endif
|
|||
Redraw(); |
|||
event.Skip(); |
|||
} |
|||
|
|||
|
|||
/**********************************************/ |
|||
void Pcb3D_GLCanvas::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); |
|||
#ifndef __WXMOTIF__
|
|||
if (GetContext()) |
|||
#endif
|
|||
{ |
|||
SetCurrent(); |
|||
glViewport(0, 0, (GLint) w, (GLint) h); |
|||
} |
|||
} |
|||
|
|||
/***********************************************************/ |
|||
void Pcb3D_GLCanvas::OnEraseBackground(wxEraseEvent& event) |
|||
/***********************************************************/ |
|||
{ |
|||
// Do nothing, to avoid flashing.
|
|||
} |
|||
|
|||
|
|||
/****************************/ |
|||
void Pcb3D_GLCanvas::InitGL() |
|||
/****************************/ |
|||
/* Int parametres generaux pour OPENGL
|
|||
*/ |
|||
{ |
|||
wxSize size = GetClientSize(); |
|||
|
|||
if (! m_init) |
|||
{ |
|||
m_init = TRUE; |
|||
g_Parm_3D_Visu.m_Zoom = 1.0; |
|||
ZBottom = 1.0; ZTop = 10.0; |
|||
} |
|||
|
|||
SetCurrent(); |
|||
|
|||
/* set viewing projection */ |
|||
double ratio_HV = (double) size.x / size.y; // Ratio largeur /hauteur de la fenetre d'affichage
|
|||
glMatrixMode(GL_PROJECTION); |
|||
glLoadIdentity(); |
|||
|
|||
#define MAX_VIEW_ANGLE 160.0/45.0
|
|||
if ( g_Parm_3D_Visu.m_Zoom > MAX_VIEW_ANGLE) |
|||
g_Parm_3D_Visu.m_Zoom = MAX_VIEW_ANGLE; |
|||
gluPerspective( 45.0 * g_Parm_3D_Visu.m_Zoom, ratio_HV, 1 ,10 ); |
|||
|
|||
// glFrustum(-1., 1.1F, -1.1F, 1.1F, ZBottom, ZTop);
|
|||
|
|||
/* position viewer */ |
|||
glMatrixMode(GL_MODELVIEW); |
|||
glLoadIdentity(); |
|||
glTranslatef(0.0F, 0.0F, - ( ZBottom +ZTop) / 2); |
|||
|
|||
/* clear color and depth buffers */ |
|||
glClearColor( g_Parm_3D_Visu.m_BgColor.m_Red, |
|||
g_Parm_3D_Visu.m_BgColor.m_Green, |
|||
g_Parm_3D_Visu.m_BgColor.m_Blue, 1 ); |
|||
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); |
|||
|
|||
/* Setup light souces: */ |
|||
SetLights(); |
|||
|
|||
|
|||
glDisable(GL_CULL_FACE); // show back faces
|
|||
|
|||
glEnable(GL_DEPTH_TEST); // Enable z-buferring
|
|||
|
|||
glEnable(GL_LINE_SMOOTH); |
|||
glEnable(GL_COLOR_MATERIAL); |
|||
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE); |
|||
|
|||
/* speedups */ |
|||
glEnable(GL_DITHER); |
|||
glShadeModel(GL_SMOOTH); |
|||
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); |
|||
glHint(GL_POLYGON_SMOOTH_HINT, GL_FASTEST); |
|||
|
|||
/* blend */ |
|||
glEnable(GL_BLEND); |
|||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
|||
} |
|||
|
|||
|
|||
/***********************************/ |
|||
void Pcb3D_GLCanvas::SetLights(void) |
|||
/***********************************/ |
|||
/* Init sources lumineuses pour OPENGL
|
|||
*/ |
|||
{ |
|||
double light; |
|||
GLfloat light_color[4]; |
|||
|
|||
SetCurrent(); |
|||
|
|||
/* set viewing projection */ |
|||
light_color[3] = 1.0; |
|||
GLfloat Z_axis_pos[4] = { 0.0, 0.0, 3.0, 0.0 }; |
|||
GLfloat lowZ_axis_pos[4] = { 0.0, 0.0, -3.0, 0.5 }; |
|||
|
|||
/* activate light */ |
|||
light = 1.0; |
|||
light_color[0] = light_color[1] = light_color[2]= light; |
|||
glLightfv(GL_LIGHT0, GL_POSITION, Z_axis_pos); |
|||
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_color); |
|||
light = 0.3; |
|||
light_color[0] = light_color[1] = light_color[2] = light; |
|||
glLightfv(GL_LIGHT1, GL_POSITION, lowZ_axis_pos); |
|||
glLightfv(GL_LIGHT1, GL_DIFFUSE, light_color); |
|||
glEnable(GL_LIGHT0); // White spot on Z axis
|
|||
glEnable(GL_LIGHT1); // White spot on Z axis ( bottom)
|
|||
glEnable(GL_LIGHTING); |
|||
} |
|||
|
|||
|
|||
/**********************************************************/ |
|||
void Pcb3D_GLCanvas::TakeScreenshot(wxCommandEvent & event) |
|||
/**********************************************************/ |
|||
/* Create a Screenshot of the current 3D view.
|
|||
Output file format is png or jpeg, or image is copied on clipboard |
|||
*/ |
|||
{ |
|||
wxString FullFileName; |
|||
wxString file_ext, mask; |
|||
bool fmt_is_jpeg = FALSE; |
|||
|
|||
if ( event.GetId() == ID_MENU_SCREENCOPY_JPEG ) fmt_is_jpeg = TRUE; |
|||
if ( event.GetId() != ID_TOOL_SCREENCOPY_TOCLIBBOARD ) |
|||
{ |
|||
file_ext = fmt_is_jpeg ? wxT(".jpg") : wxT(".png";) |
|||
mask = wxT("*") + file_ext; |
|||
FullFileName = m_Parent->m_Parent->GetScreen()->m_FileName; |
|||
ChangeFileNameExt(FullFileName,file_ext); |
|||
|
|||
FullFileName = |
|||
EDA_FileSelector( _("3D Image filename:"), |
|||
wxEmptyString, /* Chemin par defaut */ |
|||
FullFileName, /* nom fichier par defaut */ |
|||
file_ext, /* extension par defaut */ |
|||
mask, /* Masque d'affichage */ |
|||
this, |
|||
wxFD_SAVE, |
|||
TRUE |
|||
); |
|||
if ( FullFileName.IsEmpty() ) return; |
|||
} |
|||
wxSize image_size = GetClientSize(); |
|||
wxClientDC dc(this); |
|||
wxBitmap bitmap(image_size.x, image_size.y ); |
|||
wxMemoryDC memdc; |
|||
memdc.SelectObject( bitmap ); |
|||
memdc.Blit(0, 0, image_size.x, image_size.y, &dc, 0, 0); |
|||
memdc.SelectObject( wxNullBitmap ); |
|||
|
|||
if ( event.GetId() == ID_TOOL_SCREENCOPY_TOCLIBBOARD ) |
|||
{ |
|||
wxBitmapDataObject *dobjBmp = new wxBitmapDataObject; |
|||
dobjBmp->SetBitmap(bitmap); |
|||
if (wxTheClipboard->Open()) |
|||
{ |
|||
if ( !wxTheClipboard->SetData(dobjBmp) ) |
|||
wxLogError( _T("Failed to copy image to clipboard")); |
|||
wxTheClipboard->Flush(); /* the data on clipboard
|
|||
will stay available after the application exits */ |
|||
wxTheClipboard->Close(); |
|||
} |
|||
} |
|||
|
|||
else |
|||
{ |
|||
wxImage image = bitmap.ConvertToImage(); |
|||
|
|||
if ( !image.SaveFile( FullFileName, |
|||
fmt_is_jpeg ? wxBITMAP_TYPE_JPEG : wxBITMAP_TYPE_PNG)) |
|||
wxLogError(wxT("Can't save file")); |
|||
|
|||
image.Destroy(); |
|||
} |
|||
} |
|||
|
|||
|
|||
@ -0,0 +1,119 @@ |
|||
/////////////////////////////////////////////////////////////////////////////
|
|||
// Name: 3d_class.cpp
|
|||
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|||
|
|||
#ifdef __GNUG__
|
|||
#pragma implementation
|
|||
#pragma interface
|
|||
#endif
|
|||
|
|||
#include "fctsys.h"
|
|||
|
|||
#include "common.h"
|
|||
|
|||
#include "3d_struct.h"
|
|||
#include "3d_viewer.h"
|
|||
|
|||
|
|||
/****************************/ |
|||
S3D_Vertex::S3D_Vertex(void) |
|||
/****************************/ |
|||
{ |
|||
x = y = z = 0.0; |
|||
} |
|||
|
|||
|
|||
/**************************************************************************/ |
|||
S3D_Material::S3D_Material(Struct3D_Master * father, const wxString & name): |
|||
EDA_BaseStruct( father, -1) |
|||
/**************************************************************************/ |
|||
{ |
|||
m_DiffuseColor.x = m_DiffuseColor.y = m_DiffuseColor.z = 1.0; |
|||
m_SpecularColor.x = m_SpecularColor.y = m_SpecularColor.z = 1.0; |
|||
m_AmbientIntensity = 1.0; |
|||
m_Transparency = 0.0; |
|||
m_Shininess = 1.0; |
|||
m_Name = name; |
|||
} |
|||
|
|||
/***********************************/ |
|||
void S3D_Material::SetMaterial(void) |
|||
/***********************************/ |
|||
{ |
|||
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE); |
|||
glColor4f(m_DiffuseColor.x * m_AmbientIntensity, |
|||
m_DiffuseColor.y * m_AmbientIntensity, |
|||
m_DiffuseColor.z * m_AmbientIntensity, |
|||
1.0 - m_Transparency ); |
|||
#if 0
|
|||
glColorMaterial(GL_FRONT_AND_BACK,GL_SPECULAR); |
|||
glColor3f(m_SpecularColor.x, m_SpecularColor.y,m_SpecularColor.z); |
|||
#endif
|
|||
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE); |
|||
} |
|||
|
|||
/****************************************************/ |
|||
void Struct3D_Master::Copy(Struct3D_Master * pattern) |
|||
/****************************************************/ |
|||
{ |
|||
m_Shape3DName = pattern->m_Shape3DName; |
|||
m_MatScale = pattern->m_MatScale; |
|||
m_MatRotation = pattern->m_MatRotation; |
|||
m_MatPosition = pattern->m_MatPosition; |
|||
m_3D_Drawings = NULL; |
|||
m_Materials = NULL; |
|||
} |
|||
|
|||
/***************************************************************/ |
|||
Struct3D_Master::Struct3D_Master(EDA_BaseStruct * StructFather): |
|||
EDA_BaseStruct( StructFather, -1) |
|||
/***************************************************************/ |
|||
{ |
|||
m_MatScale.x = m_MatScale.y = m_MatScale.z = 1.0; |
|||
m_3D_Drawings = NULL; |
|||
m_Materials = NULL; |
|||
} |
|||
|
|||
|
|||
/***************************************/ |
|||
Struct3D_Master:: ~Struct3D_Master(void) |
|||
/***************************************/ |
|||
{ |
|||
Struct3D_Shape * next; |
|||
S3D_Material * nextmat; |
|||
|
|||
for( ; m_3D_Drawings != NULL; m_3D_Drawings = next ) |
|||
{ |
|||
next = (Struct3D_Shape *) m_3D_Drawings->Pnext; |
|||
delete m_3D_Drawings; |
|||
} |
|||
|
|||
for( ; m_Materials != NULL; m_Materials = nextmat ) |
|||
{ |
|||
nextmat = (S3D_Material *) m_Materials->Pnext; |
|||
delete m_Materials; |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
/***************************************************************/ |
|||
Struct3D_Shape::Struct3D_Shape(EDA_BaseStruct * StructFather): |
|||
EDA_BaseStruct( StructFather, -1) |
|||
/***************************************************************/ |
|||
{ |
|||
m_3D_Coord = NULL; |
|||
m_3D_CoordIndex = NULL; |
|||
m_3D_Points = 0; |
|||
} |
|||
|
|||
|
|||
/***************************************/ |
|||
Struct3D_Shape:: ~Struct3D_Shape(void) |
|||
/***************************************/ |
|||
{ |
|||
delete m_3D_Coord; |
|||
delete m_3D_CoordIndex; |
|||
} |
|||
|
|||
@ -0,0 +1,787 @@ |
|||
//////////////////////////////////////
|
|||
// Name: 3d_draw.cpp
|
|||
//////////////////////////////////////
|
|||
|
|||
|
|||
#ifdef __GNUG__
|
|||
#pragma implementation
|
|||
#pragma interface
|
|||
#endif
|
|||
|
|||
#include "fctsys.h"
|
|||
#include "trigo.h"
|
|||
|
|||
|
|||
#if !wxUSE_GLCANVAS
|
|||
#error Please set wxUSE_GLCANVAS to 1 in setup.h.
|
|||
#endif
|
|||
|
|||
#include "common.h"
|
|||
#include "pcbstruct.h"
|
|||
#include "macros.h"
|
|||
|
|||
//#include "pcbnew.h"
|
|||
|
|||
#include "3d_viewer.h"
|
|||
#include "trackball.h"
|
|||
|
|||
#include "3d_struct.h"
|
|||
|
|||
static void Draw3D_FilledCircle(double posx, double posy, |
|||
double rayon, double hole_rayon, double zpos); |
|||
static void Draw3D_FilledSegment(double startx, double starty, |
|||
double endx, double endy,double width, double zpos); |
|||
static void Draw3D_FilledCylinder(double posx, double posy, |
|||
double rayon, double height, double zpos); |
|||
static void Draw3D_FilledSegmentWithHole(double startx, double starty, |
|||
double endx, double endy,double width, |
|||
double holex, double holey, double holeradius, double zpos); |
|||
|
|||
|
|||
/**********************************/ |
|||
void Pcb3D_GLCanvas::Redraw( void ) |
|||
/**********************************/ |
|||
{ |
|||
SetCurrent(); |
|||
|
|||
InitGL(); |
|||
|
|||
glMatrixMode(GL_MODELVIEW); /* position viewer */ |
|||
/* transformations */ |
|||
GLfloat mat[4][4]; |
|||
|
|||
build_rotmatrix( mat, g_Parm_3D_Visu.m_Quat ); |
|||
glMultMatrixf( &mat[0][0] ); |
|||
|
|||
glTranslatef(g_Draw3d_dx, g_Draw3d_dy, 0.0F); |
|||
|
|||
glRotatef(g_Parm_3D_Visu.m_Rot[0], 1.0, 0.0, 0.0); |
|||
glRotatef(g_Parm_3D_Visu.m_Rot[1], 0.0, 1.0, 0.0); |
|||
glRotatef(g_Parm_3D_Visu.m_Rot[2], 0.0, 0.0, 1.0); |
|||
|
|||
if( m_gllist ) glCallList( m_gllist ); |
|||
else |
|||
{ |
|||
m_gllist = CreateDrawGL_List(); |
|||
// m_gllist = DisplayCubeforTest(); // Only for test
|
|||
} |
|||
|
|||
glFlush(); |
|||
SwapBuffers(); |
|||
} |
|||
|
|||
/**********************************************/ |
|||
GLuint Pcb3D_GLCanvas::CreateDrawGL_List(void) |
|||
/**********************************************/ |
|||
/* Creation de la liste des elements a afficher
|
|||
*/ |
|||
{ |
|||
GLuint gllist = glGenLists( 1 ); |
|||
WinEDA_BasePcbFrame * pcbframe = m_Parent->m_Parent; |
|||
BOARD * pcb = pcbframe->m_Pcb; |
|||
TRACK * pt_piste; |
|||
int ii; |
|||
|
|||
wxBusyCursor dummy; |
|||
|
|||
pcb->ComputeBoundaryBox(); |
|||
g_Parm_3D_Visu.m_BoardSettings = pcb->m_BoardSettings; |
|||
g_Parm_3D_Visu.m_BoardSize = pcb->m_BoundaryBox.GetSize(); |
|||
g_Parm_3D_Visu.m_BoardPos = pcb->m_BoundaryBox.Centre(); |
|||
g_Parm_3D_Visu.m_BoardPos.y = - g_Parm_3D_Visu.m_BoardPos.y; |
|||
g_Parm_3D_Visu.m_Layers = pcb->m_BoardSettings->m_CopperLayerCount; |
|||
g_Parm_3D_Visu.m_BoardScale = 2.0 / MAX(g_Parm_3D_Visu.m_BoardSize.x, g_Parm_3D_Visu.m_BoardSize.y); |
|||
float epoxy_width = 1.6; // epoxy width in mm
|
|||
g_Parm_3D_Visu.m_Epoxy_Width = epoxy_width/2.54 * 1000 |
|||
* g_Parm_3D_Visu.m_BoardScale; |
|||
|
|||
/* calcul de l'altitude de chaque couche */ |
|||
for ( ii = 0; ii < 32; ii++ ) |
|||
{ |
|||
if ( ii < g_Parm_3D_Visu.m_Layers ) |
|||
g_Parm_3D_Visu.m_LayerZcoord[ii] = g_Parm_3D_Visu.m_Epoxy_Width * ii |
|||
/ (g_Parm_3D_Visu.m_Layers-1); |
|||
else g_Parm_3D_Visu.m_LayerZcoord[ii] = g_Parm_3D_Visu.m_Epoxy_Width; |
|||
} |
|||
GLfloat zpos_cu = 500 * g_Parm_3D_Visu.m_BoardScale; |
|||
GLfloat zpos_cmp = g_Parm_3D_Visu.m_Epoxy_Width + zpos_cu; |
|||
g_Parm_3D_Visu.m_LayerZcoord[ADHESIVE_N_CU] = -zpos_cu*2; |
|||
g_Parm_3D_Visu.m_LayerZcoord[ADHESIVE_N_CMP] = zpos_cmp + zpos_cu; |
|||
g_Parm_3D_Visu.m_LayerZcoord[SILKSCREEN_N_CU] = -zpos_cu; |
|||
g_Parm_3D_Visu.m_LayerZcoord[SILKSCREEN_N_CMP] = zpos_cmp; |
|||
g_Parm_3D_Visu.m_LayerZcoord[DRAW_N] = zpos_cmp + zpos_cu; |
|||
g_Parm_3D_Visu.m_LayerZcoord[COMMENT_N] = zpos_cmp + zpos_cu; |
|||
g_Parm_3D_Visu.m_LayerZcoord[ECO1_N] = zpos_cmp + zpos_cu; |
|||
g_Parm_3D_Visu.m_LayerZcoord[ECO2_N] = zpos_cmp + zpos_cu; |
|||
|
|||
glNewList( gllist, GL_COMPILE_AND_EXECUTE ); |
|||
|
|||
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE); |
|||
|
|||
/* draw axes*/ |
|||
glEnable(GL_COLOR_MATERIAL); |
|||
SetGLColor(WHITE); |
|||
glBegin(GL_LINES); |
|||
glNormal3f( 0.0, 0.0, 1.0); // Normal is Z axis
|
|||
glVertex3f( 0.0 , 0.0, 0.0); glVertex3f(1.0, 0.0, 0.0); // X axis
|
|||
glVertex3f( 0.0 , 0.0, 0.0); glVertex3f(0.0, -1.0, 0.0); // y axis
|
|||
glNormal3f( 1.0, 0.0, 0.0); // Normal is Y axis
|
|||
glVertex3f( 0.0 , 0.0, 0.0); glVertex3f(0.0, 0.0, 0.3); // z axis
|
|||
glEnd(); |
|||
|
|||
/* Draw epoxy limits (do not use, works and test in progress)*/ |
|||
#if 0
|
|||
glEnable(GL_FOG); |
|||
GLfloat param; |
|||
// param = GL_LINEAR; glFogfv(GL_FOG_MODE,& param);
|
|||
param = 0.2; glFogfv(GL_FOG_DENSITY,& param); |
|||
param = g_Parm_3D_Visu.m_LayerZcoord[15]; glFogfv(GL_FOG_END,& param); |
|||
glBegin(GL_QUADS); |
|||
SetGLColor(g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[CMP_N]); |
|||
double sx = DataScale3D * g_Parm_3D_Visu.m_BoardSize.x / 2; |
|||
double sy = DataScale3D * g_Parm_3D_Visu.m_BoardSize.y / 2; |
|||
double zpos = g_Parm_3D_Visu.m_LayerZcoord[15]; |
|||
glNormal3f( 0.0, 0.0, 1.0); // Normal is Z axis
|
|||
sx = sy = 0.5; |
|||
glVertex3f( -sx, -sy , zpos); |
|||
glVertex3f( -sx, sy , zpos); |
|||
glVertex3f( sx, sy , zpos); |
|||
glVertex3f( sx, -sy , zpos); |
|||
glEnd(); |
|||
glBegin(GL_QUADS); |
|||
SetGLColor(g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[CUIVRE_N]); |
|||
glNormal3f( 0.0, 0.0, -1.0); // Normal is -Z axis
|
|||
glVertex3f( -sx, -sy , 0); |
|||
glVertex3f( -sx, sy , 0); |
|||
glVertex3f( sx, sy , 0); |
|||
glVertex3f( sx, -sy , 0); |
|||
glEnd(); |
|||
#endif
|
|||
|
|||
/* Translation du tracé du BOARD pour placer son centre en 0, 0 */ |
|||
glTranslatef(-g_Parm_3D_Visu.m_BoardPos.x * g_Parm_3D_Visu.m_BoardScale, |
|||
-g_Parm_3D_Visu.m_BoardPos.y * g_Parm_3D_Visu.m_BoardScale, |
|||
0.0F); |
|||
|
|||
glNormal3f( 0.0, 0.0, 1.0); // Normal is Z axis
|
|||
/* Tracé des pistes : */ |
|||
for (pt_piste = pcb->m_Track ; pt_piste != NULL ; pt_piste = (TRACK*) pt_piste->Pnext ) |
|||
{ |
|||
if ( pt_piste->m_StructType == TYPEVIA ) |
|||
Draw3D_Via((SEGVIA*)pt_piste); |
|||
else Draw3D_Track( pt_piste); |
|||
} |
|||
|
|||
/* Tracé des edges */ |
|||
EDA_BaseStruct * PtStruct; |
|||
for ( PtStruct = pcb->m_Drawings; PtStruct != NULL; PtStruct = PtStruct->Pnext) |
|||
{ |
|||
#define STRUCT ((DRAWSEGMENT *) PtStruct)
|
|||
if( PtStruct->m_StructType != TYPEDRAWSEGMENT ) continue; |
|||
Draw3D_DrawSegment(STRUCT); |
|||
} |
|||
|
|||
/* tracé des modules */ |
|||
MODULE * Module = (MODULE*) pcb->m_Modules; |
|||
for ( ; Module != NULL; Module = (MODULE *) Module->Pnext ) |
|||
{ |
|||
Module->Draw3D(this); |
|||
} |
|||
glEndList(); |
|||
|
|||
/* Test for errors */ |
|||
GLenum err = glGetError(); |
|||
if ( err != GL_NO_ERROR ) |
|||
DisplayError(this, wxT("Error in GL commands") ); |
|||
return gllist; |
|||
} |
|||
|
|||
/************************************************/ |
|||
void Pcb3D_GLCanvas::Draw3D_Track(TRACK * track) |
|||
/************************************************/ |
|||
{ |
|||
double zpos; |
|||
int color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[track->m_Layer]; |
|||
int layer = track->m_Layer; |
|||
double ox, oy, fx, fy; |
|||
double w; |
|||
|
|||
if ( color & ITEM_NOT_SHOW ) return; |
|||
if ( track->m_Layer == CMP_N ) layer = g_Parm_3D_Visu.m_Layers -1; |
|||
zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; |
|||
|
|||
SetGLColor(color); |
|||
glNormal3f( 0.0, 0.0, (layer == CUIVRE_N) ? -1.0 : 1.0); |
|||
|
|||
w = track->m_Width * g_Parm_3D_Visu.m_BoardScale; |
|||
ox = track->m_Start.x * g_Parm_3D_Visu.m_BoardScale; |
|||
oy = track->m_Start.y * g_Parm_3D_Visu.m_BoardScale; |
|||
fx = track->m_End.x * g_Parm_3D_Visu.m_BoardScale; |
|||
fy = track->m_End.y * g_Parm_3D_Visu.m_BoardScale; |
|||
Draw3D_FilledSegment(ox, -oy, fx, -fy, w, zpos); |
|||
} |
|||
|
|||
/********************************************/ |
|||
void Pcb3D_GLCanvas::Draw3D_Via(SEGVIA * via) |
|||
/*********************************************/ |
|||
/* 3D drawing for a VIA (cylinder + filled circles)
|
|||
*/ |
|||
{ |
|||
double x, y, r, hole; |
|||
int layer, top_layer, bottom_layer; |
|||
double zpos, height; |
|||
int color; |
|||
|
|||
r = via->m_Width * g_Parm_3D_Visu.m_BoardScale / 2; |
|||
hole = g_Parm_3D_Visu.m_BoardSettings->m_ViaDrill * g_Parm_3D_Visu.m_BoardScale / 2; |
|||
x = via->m_Start.x * g_Parm_3D_Visu.m_BoardScale; |
|||
y = via->m_Start.y * g_Parm_3D_Visu.m_BoardScale; |
|||
|
|||
via->ReturnLayerPair(&top_layer, &bottom_layer); |
|||
|
|||
// Drawing filled circles:
|
|||
for ( layer = bottom_layer; layer < g_Parm_3D_Visu.m_Layers; layer++ ) |
|||
{ |
|||
zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; |
|||
if ( layer < g_Parm_3D_Visu.m_Layers-1 ) |
|||
color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[layer]; |
|||
else color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[CMP_N]; |
|||
if ( color & ITEM_NOT_SHOW ) continue; |
|||
SetGLColor(color); |
|||
glNormal3f( 0.0, 0.0, (layer == CUIVRE_N) ? -1.0 : 1.0); |
|||
Draw3D_FilledCircle(x, -y, r, hole, zpos); |
|||
if ( layer >= top_layer) break; |
|||
|
|||
} |
|||
// Drawing hole:
|
|||
SetGLColor(DARKGRAY); |
|||
height = g_Parm_3D_Visu.m_LayerZcoord[top_layer] - g_Parm_3D_Visu.m_LayerZcoord[bottom_layer]; |
|||
Draw3D_FilledCylinder(x, -y, hole, height, g_Parm_3D_Visu.m_LayerZcoord[bottom_layer]); |
|||
} |
|||
|
|||
|
|||
/*************************************************************/ |
|||
void Pcb3D_GLCanvas::Draw3D_DrawSegment(DRAWSEGMENT * segment) |
|||
/*************************************************************/ |
|||
{ |
|||
int layer; |
|||
double x, y, xf, yf; |
|||
double zpos, w; |
|||
int color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[segment->m_Layer]; |
|||
|
|||
if ( color & ITEM_NOT_SHOW ) return; |
|||
|
|||
SetGLColor(color); |
|||
w = segment->m_Width * g_Parm_3D_Visu.m_BoardScale; |
|||
x = segment->m_Start.x * g_Parm_3D_Visu.m_BoardScale; |
|||
y = segment->m_Start.y * g_Parm_3D_Visu.m_BoardScale; |
|||
xf = segment->m_End.x * g_Parm_3D_Visu.m_BoardScale; |
|||
yf = segment->m_End.y * g_Parm_3D_Visu.m_BoardScale; |
|||
|
|||
if ( segment->m_Layer == EDGE_N) |
|||
{ |
|||
for ( layer = 0; layer < g_Parm_3D_Visu.m_Layers; layer++ ) |
|||
{ |
|||
glNormal3f( 0.0, 0.0, (layer == CUIVRE_N) ? -1.0 : 1.0); |
|||
zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; |
|||
Draw3D_FilledSegment( x, -y, xf, -yf, w, zpos); |
|||
} |
|||
} |
|||
|
|||
else |
|||
{ |
|||
zpos = g_Parm_3D_Visu.m_LayerZcoord[segment->m_Layer]; |
|||
Draw3D_FilledSegment( x, -y, xf, -yf, w, zpos); |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
/*********************************************/ |
|||
void MODULE::Draw3D(Pcb3D_GLCanvas * glcanvas) |
|||
/*********************************************/ |
|||
{ |
|||
D_PAD * pad = m_Pads; |
|||
|
|||
#if 0
|
|||
if( ! DisplayOpt.Show_Modules_Cmp ) |
|||
{ |
|||
if(m_Layer == CMP_N) return; |
|||
} |
|||
if( ! DisplayOpt.Show_Modules_Cu ) |
|||
{ |
|||
if(m_Layer == CUIVRE_N) return; |
|||
} |
|||
#endif
|
|||
|
|||
/* Draw pads */ |
|||
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE); |
|||
glNormal3f( 0.0, 0.0, 1.0); // Normal is Z axis
|
|||
for( ; pad != NULL; pad = (D_PAD*) pad->Pnext ) |
|||
{ |
|||
pad->Draw3D(glcanvas); |
|||
} |
|||
|
|||
/* Draw module shape: 3D shape if exists (or module edge if not exists)*/ |
|||
Struct3D_Master * Struct3D = m_3D_Drawings; |
|||
bool As3dShape = FALSE; |
|||
glPushMatrix(); |
|||
glTranslatef(m_Pos.x * g_Parm_3D_Visu.m_BoardScale, |
|||
-m_Pos.y * g_Parm_3D_Visu.m_BoardScale, |
|||
g_Parm_3D_Visu.m_LayerZcoord[m_Layer] ); |
|||
if ( m_Orient ) |
|||
{ |
|||
glRotatef( (double)m_Orient / 10, 0.0, 0.0, 1.0 ); |
|||
} |
|||
if ( m_Layer == CUIVRE_N ) |
|||
{ |
|||
glRotatef( 180.0, 0.0, 1.0, 0.0 ); |
|||
glRotatef( 180.0, 0.0, 0.0, 1.0 ); |
|||
} |
|||
DataScale3D = g_Parm_3D_Visu.m_BoardScale*UNITS3D_TO_UNITSPCB; |
|||
|
|||
for ( ; Struct3D != NULL; Struct3D = (Struct3D_Master *) Struct3D->Pnext ) |
|||
{ |
|||
if ( ! Struct3D->m_Shape3DName.IsEmpty() ) |
|||
{ |
|||
As3dShape = TRUE; |
|||
Struct3D->ReadData(); |
|||
} |
|||
} |
|||
glPopMatrix(); |
|||
|
|||
if ( ! As3dShape) |
|||
{ |
|||
EDA_BaseStruct * Struct = m_Drawings; |
|||
glNormal3f( 0.0, 0.0, 1.0); // Normal is Z axis
|
|||
for( ;Struct != NULL; Struct = Struct->Pnext ) |
|||
{ |
|||
switch( Struct->m_StructType ) |
|||
{ |
|||
case TYPETEXTEMODULE: |
|||
break; |
|||
|
|||
case TYPEEDGEMODULE: |
|||
((EDGE_MODULE *) Struct)->Draw3D(glcanvas); |
|||
break; |
|||
|
|||
default: break; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
/***************************************************/ |
|||
void EDGE_MODULE::Draw3D(Pcb3D_GLCanvas * glcanvas) |
|||
/***************************************************/ |
|||
{ |
|||
int ux0, uy0, dx, dy,rayon, StAngle, EndAngle; |
|||
double scale, x, y, fx, fy, w, zpos ; |
|||
int color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[m_Layer]; |
|||
|
|||
if ( color & ITEM_NOT_SHOW ) return; |
|||
|
|||
SetGLColor(color); |
|||
glNormal3f( 0.0, 0.0, (m_Layer == CUIVRE_N) ? -1.0 : 1.0); |
|||
scale = g_Parm_3D_Visu.m_BoardScale; |
|||
|
|||
ux0 = m_Start.x; |
|||
uy0 = m_Start.y; |
|||
dx = m_End.x; |
|||
dy = m_End.y; |
|||
zpos = g_Parm_3D_Visu.m_LayerZcoord[m_Layer]; |
|||
w = m_Width * g_Parm_3D_Visu.m_BoardScale; |
|||
switch (m_Shape ) |
|||
{ |
|||
case S_SEGMENT: |
|||
x = m_Start.x * g_Parm_3D_Visu.m_BoardScale; |
|||
y = m_Start.y * g_Parm_3D_Visu.m_BoardScale; |
|||
fx = dx * g_Parm_3D_Visu.m_BoardScale; |
|||
fy = dy * g_Parm_3D_Visu.m_BoardScale; |
|||
Draw3D_FilledSegment(x, -y, fx, -fy, w, zpos); |
|||
break ; |
|||
|
|||
case S_CIRCLE: |
|||
rayon = (int)hypot((double)(dx-ux0),(double)(dy-uy0) ); |
|||
/* TO DO */ |
|||
break; |
|||
|
|||
case S_ARC: |
|||
rayon = (int)hypot((double)(dx-ux0),(double)(dy-uy0) ); |
|||
StAngle = (int)ArcTangente( dy-uy0, dx-ux0 ); |
|||
EndAngle = StAngle + m_Angle; |
|||
/* TO DO */ |
|||
break; |
|||
} |
|||
} |
|||
|
|||
|
|||
/***********************************************/ |
|||
void D_PAD::Draw3D(Pcb3D_GLCanvas * glcanvas) |
|||
/***********************************************/ |
|||
/* Dessin 3D des pads avec leur trou de percage
|
|||
*/ |
|||
{ |
|||
int ii, ll, layer, nlmax; |
|||
int ux0,uy0, |
|||
dx,dx0,dy,dy0, |
|||
delta_cx, delta_cy, |
|||
xc, yc; |
|||
int angle, delta_angle; |
|||
int coord[4][2]; |
|||
double fcoord[8][2], f_hole_coord[8][2]; |
|||
float scale; |
|||
double zpos; |
|||
wxPoint shape_pos; |
|||
double x, y, r, w, hole, holeX, holeY; |
|||
double drillx, drilly; |
|||
bool Oncu, Oncmp, Both; |
|||
int color; |
|||
|
|||
scale = g_Parm_3D_Visu.m_BoardScale; |
|||
holeX = (double)m_Drill.x * scale / 2; |
|||
holeY = (double)m_Drill.y * scale / 2; |
|||
hole = MIN (holeX,holeY); |
|||
|
|||
/* calcul du centre des formes des pads : */ |
|||
shape_pos = ReturnShapePos(); |
|||
ux0 = shape_pos.x; |
|||
uy0 = shape_pos.y; |
|||
xc = ux0; |
|||
yc = uy0; |
|||
|
|||
/* le trace depend de la rotation de l'empreinte */ |
|||
dx = dx0 = m_Size.x >> 1 ; |
|||
dy = dy0 = m_Size.y >> 1 ; /* demi dim dx et dy */ |
|||
|
|||
angle = m_Orient; |
|||
drillx = m_Pos.x * scale; |
|||
drilly = m_Pos.y * scale; |
|||
/* Draw the pad hole (TODO: draw OBLONG hole)*/ |
|||
if ( holeX && holeY ) |
|||
{ |
|||
SetGLColor(DARKGRAY); |
|||
Draw3D_FilledCylinder(drillx, -drilly, hole, g_Parm_3D_Visu.m_LayerZcoord[CMP_N], 0.0); |
|||
} |
|||
|
|||
glNormal3f( 0.0, 0.0, 1.0); // Normal is Z axis
|
|||
nlmax = g_Parm_3D_Visu.m_Layers-1; |
|||
Oncu = (m_Masque_Layer & CUIVRE_LAYER) ? TRUE : FALSE; |
|||
Oncmp = (m_Masque_Layer & CMP_LAYER) ? TRUE : FALSE; |
|||
Both = Oncu && Oncmp; |
|||
switch (m_PadShape & 0x7F) |
|||
{ |
|||
case CIRCLE : |
|||
x = xc * scale; |
|||
y = yc * scale; |
|||
r = (double)dx * scale; |
|||
for ( layer = CUIVRE_N; layer <= CMP_N; layer ++) |
|||
{ |
|||
if (layer && (layer == nlmax) ) layer = CMP_N; |
|||
if ( (layer == CMP_N) && ! Oncmp ) continue; |
|||
if ( (layer == CUIVRE_N) && ! Oncu ) continue; |
|||
if ( (layer > CUIVRE_N) && (layer < CMP_N) && !Both) continue; |
|||
color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[layer]; |
|||
if ( color & ITEM_NOT_SHOW ) continue; |
|||
SetGLColor(color); |
|||
glNormal3f( 0.0, 0.0, (layer == CUIVRE_N) ? -1.0 : 1.0); |
|||
zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; |
|||
Draw3D_FilledCircle(x, -y, r, hole, zpos); |
|||
} |
|||
break; |
|||
|
|||
case OVALE : |
|||
/* calcul de l'entraxe de l'ellipse */ |
|||
if( dx > dy ) /* ellipse horizontale */ |
|||
{ |
|||
delta_cx = dx - dy; delta_cy = 0; |
|||
w = m_Size.y * scale; |
|||
delta_angle = angle+900; |
|||
} |
|||
else /* ellipse verticale */ |
|||
{ |
|||
delta_cx = 0; delta_cy = dy - dx; |
|||
w = m_Size.x * scale; |
|||
delta_angle = angle; |
|||
} |
|||
RotatePoint(&delta_cx, &delta_cy, angle); |
|||
{ |
|||
double ox, oy, fx, fy; |
|||
ox = (double)(ux0 + delta_cx) * scale; |
|||
oy = (double)(uy0 + delta_cy) * scale; |
|||
fx = (double)(ux0 - delta_cx) * scale; |
|||
fy = (double)(uy0 - delta_cy) * scale; |
|||
for ( layer = CUIVRE_N; layer <= CMP_N; layer ++) |
|||
{ |
|||
if (layer && (layer == nlmax) ) layer = CMP_N; |
|||
if ( (layer == CMP_N) && ! Oncmp ) continue; |
|||
if ( (layer == CUIVRE_N) && ! Oncu ) continue; |
|||
if ( (layer > CUIVRE_N) && (layer < CMP_N) && !Both) continue; |
|||
color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[layer]; |
|||
glNormal3f( 0.0, 0.0, (layer == CUIVRE_N) ? -1.0 : 1.0); |
|||
if ( color & ITEM_NOT_SHOW ) continue; |
|||
SetGLColor(color); |
|||
zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; |
|||
Draw3D_FilledSegmentWithHole(ox, -oy, fx, -fy, w, drillx, -drilly, hole, zpos); |
|||
} |
|||
} |
|||
break; |
|||
|
|||
case RECT : |
|||
case SPECIAL_PAD: |
|||
case TRAPEZE: |
|||
{ |
|||
int ddx, ddy ; |
|||
ddx = m_DeltaSize.x >> 1 ; |
|||
ddy = m_DeltaSize.y >> 1 ; /* demi dim dx et dy */ |
|||
|
|||
coord[0][0] = - dx - ddy; |
|||
coord[0][1] = + dy + ddx; |
|||
|
|||
coord[1][0] = - dx + ddy; |
|||
coord[1][1] = - dy - ddx; |
|||
|
|||
coord[2][0] = + dx - ddy; |
|||
coord[2][1] = - dy + ddx; |
|||
|
|||
coord[3][0] = + dx + ddy; |
|||
coord[3][1] = + dy - ddx; |
|||
|
|||
for (ii = 0; ii < 4; ii++) |
|||
{ |
|||
RotatePoint(&coord[ii][0],&coord[ii][1], angle); |
|||
coord[ii][0] += ux0; |
|||
coord[ii][1] += uy0; |
|||
ll = ii*2; |
|||
fcoord[ll][0] = coord[ii][0] * scale; |
|||
fcoord[ll][1] = coord[ii][1] * scale; |
|||
} |
|||
for (ii = 0; ii < 7; ii+=2) |
|||
{ |
|||
ll = ii+2; if (ll > 7) ll -= 8; |
|||
fcoord[ii+1][0] = (fcoord[ii][0] + fcoord[ll][0])/2; |
|||
fcoord[ii+1][1] = (fcoord[ii][1] + fcoord[ll][1])/2; |
|||
} |
|||
for (ii = 0; ii < 8; ii++) |
|||
{ |
|||
f_hole_coord[ii][0] = -hole*0.707; |
|||
f_hole_coord[ii][1] = hole*0.707; |
|||
RotatePoint(&f_hole_coord[ii][0], &f_hole_coord[ii][1], |
|||
angle -(ii * 450) ); |
|||
f_hole_coord[ii][0] += drillx; |
|||
f_hole_coord[ii][1] += drilly; |
|||
} |
|||
|
|||
for ( layer = CUIVRE_N; layer <= CMP_N; layer ++) |
|||
{ |
|||
if (layer && (layer == nlmax) ) layer = CMP_N; |
|||
if ( (layer == CMP_N) && ! Oncmp ) continue; |
|||
if ( (layer == CUIVRE_N) && ! Oncu ) continue; |
|||
if ( (layer > CUIVRE_N) && (layer < CMP_N) && !Both) continue; |
|||
color = g_Parm_3D_Visu.m_BoardSettings->m_LayerColor[layer]; |
|||
glNormal3f( 0.0, 0.0, (layer == CUIVRE_N) ? -1.0 : 1.0); |
|||
if ( color & ITEM_NOT_SHOW ) continue; |
|||
SetGLColor(color); |
|||
zpos = g_Parm_3D_Visu.m_LayerZcoord[layer]; |
|||
glBegin(GL_QUAD_STRIP); |
|||
for ( ii = 0; ii < 8; ii++ ) |
|||
{ |
|||
glVertex3f( f_hole_coord[ii][0], -f_hole_coord[ii][1] , zpos); |
|||
glVertex3f( fcoord[ii][0], -fcoord[ii][1] , zpos); |
|||
} |
|||
glVertex3f( f_hole_coord[0][0], -f_hole_coord[0][1] , zpos); |
|||
glVertex3f( fcoord[0][0], -fcoord[0][1] , zpos); |
|||
glEnd(); |
|||
} |
|||
break; |
|||
|
|||
default: |
|||
break; |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
/*************************/ |
|||
void SetGLColor(int color) |
|||
/*************************/ |
|||
{ |
|||
double red, green,blue; |
|||
StructColors colordata = ColorRefs[color & MASKCOLOR]; |
|||
|
|||
red = colordata.m_Red / 255.0; |
|||
blue = colordata.m_Blue / 255.0; |
|||
green = colordata.m_Green / 255.0; |
|||
glColor3f(red, green,blue); |
|||
} |
|||
|
|||
/********************************************************/ |
|||
static void Draw3D_FilledCircle(double posx, double posy, |
|||
double rayon, double hole, double zpos) |
|||
/********************************************************/ |
|||
{ |
|||
int ii, slice = 16; |
|||
double x, y; |
|||
|
|||
glBegin(GL_QUAD_STRIP); |
|||
for ( ii = 0; ii <= slice; ii++ ) |
|||
{ |
|||
x = hole; y = 0.0; |
|||
RotatePoint(&x, &y, ii * 225); |
|||
glVertex3f( x + posx, y + posy, zpos); |
|||
x = rayon; y = 0.0; |
|||
RotatePoint(&x, &y, ii * 225); |
|||
glVertex3f( x + posx, y + posy, zpos); |
|||
} |
|||
glEnd(); |
|||
} |
|||
|
|||
/*********************************************************/ |
|||
static void Draw3D_FilledCylinder(double posx, double posy, |
|||
double rayon, double height, double zpos) |
|||
/*********************************************************/ |
|||
{ |
|||
int ii; |
|||
double x, y; |
|||
#define NB_SEGM 12
|
|||
S3D_Vertex coords[4]; |
|||
double tmp = DataScale3D; |
|||
|
|||
DataScale3D = 1.0; //les coord sont deja a l'echelle pour Set_Object_Data();
|
|||
coords[0].x = coords[1].x = posx + rayon; |
|||
coords[0].y = coords[1].y = posy; |
|||
coords[0].z = coords[3].z = zpos; |
|||
coords[1].z = coords[2].z = zpos + height; |
|||
|
|||
for ( ii = 0; ii <= NB_SEGM; ii++ ) |
|||
{ |
|||
x = rayon; y = 0.0; |
|||
RotatePoint(&x, &y, ii * (3600/NB_SEGM)); |
|||
coords[2].x = coords[3].x = posx + x; |
|||
coords[2].y = coords[3].y = posy + y; |
|||
Set_Object_Data(coords, 4 ); |
|||
coords[0].x = coords[2].x; |
|||
coords[0].y = coords[2].y; |
|||
coords[1].x = coords[3].x; |
|||
coords[1].y = coords[3].y; |
|||
} |
|||
glNormal3f( 0.0, 0.0, 1.0); // Normal is Z axis
|
|||
DataScale3D = tmp; |
|||
} |
|||
|
|||
/*****************************************************************/ |
|||
static void Draw3D_FilledSegment(double startx, double starty, |
|||
double endx, double endy,double width, double zpos) |
|||
/*****************************************************************/ |
|||
/* trace un polygone semblable a un segment a bouts ronds
|
|||
*/ |
|||
{ |
|||
double dx, dy, x, y, firstx=0, firsty=0; |
|||
int ii, angle; |
|||
|
|||
/* on va calculer les coordonnées du segment supposé horizontal,
|
|||
puis tourner les cordonnes de l'angle voulu */ |
|||
|
|||
dx = endx - startx; dy = endy - starty; |
|||
angle = (int)(( atan2( dy, dx ) / M_PI * 1800)+0.5) ; |
|||
|
|||
RotatePoint(&dx, &dy, angle); // apres rotation: dx = longueur du segment
|
|||
// dy = 0;
|
|||
width /= 2; |
|||
|
|||
glBegin(GL_POLYGON); |
|||
// tracé de l'arrondi a droite (1er demi polygone a la fin du segment)
|
|||
for ( ii = 0; ii <= 8; ii++ ) |
|||
{ |
|||
x = 0.0; y =-width; |
|||
RotatePoint(&x, &y, -ii * 225); |
|||
x += dx; |
|||
RotatePoint(&x, &y, -angle); |
|||
glVertex3f( startx + x, starty+y, zpos); |
|||
if ( ii == 0 ) |
|||
{ |
|||
firstx = startx + x; |
|||
firsty = starty + y; |
|||
} |
|||
} |
|||
// tracé de l'arrondi a gauche (2ieme demi polygone a l'origine du segment)
|
|||
for ( ii = 0; ii <= 8; ii++ ) |
|||
{ |
|||
int jj = ii * 225; |
|||
x = 0.0; y = width; |
|||
RotatePoint(&x, &y, -angle -jj); |
|||
glVertex3f( startx + x, starty+y, zpos); |
|||
} |
|||
|
|||
glVertex3f( firstx, firsty, zpos); |
|||
glEnd(); |
|||
} |
|||
|
|||
/*****************************************************************/ |
|||
static void Draw3D_FilledSegmentWithHole(double startx, double starty, |
|||
double endx, double endy,double width, |
|||
double holex, double holey, double holeradius, double zpos) |
|||
/*****************************************************************/ |
|||
/* trace un polygone semblable a un segment a bouts ronds avec trou
|
|||
*/ |
|||
{ |
|||
double x, y, xin, yin; |
|||
double firstx=0, firsty=0, firstxin=0, firstyin=0; |
|||
int ii, angle, theta; |
|||
|
|||
/* on va calculer les coordonnées du segment supposé horizontal,
|
|||
puis tourner les cordonnes de l'angle voulu |
|||
Tous des calculs se font avec startx, starty comme origine du tracé */ |
|||
|
|||
endx -= startx; endy -= starty; |
|||
holex -= startx; holey -= starty; |
|||
angle = (int)(( atan2( endy, endx ) / M_PI * 1800)+0.5) ; |
|||
|
|||
RotatePoint(&endx, &endy, angle); // apres rotation: endx = longueur du segment
|
|||
// endy = 0;
|
|||
RotatePoint(&holex, &holey, angle); |
|||
width /= 2; |
|||
|
|||
glBegin(GL_QUAD_STRIP); |
|||
// tracé de l'arrondi a droite (1er demi polygone a la fin du segment)
|
|||
// autour du demi-trou de percage
|
|||
for ( ii = 0; ii <= 8; ii++ ) |
|||
{ |
|||
x = 0.0; y = -width; |
|||
xin = 0.0; yin = - holeradius; |
|||
theta = -ii * 225; |
|||
RotatePoint(&x, &y, theta); |
|||
RotatePoint(&xin, &yin, theta); |
|||
x += endx; |
|||
RotatePoint(&x, &y, -angle); |
|||
xin += holex; |
|||
RotatePoint(&xin, &yin, -angle); |
|||
glVertex3f( startx + xin, starty+yin, zpos); |
|||
glVertex3f( startx + x, starty+y, zpos); |
|||
if ( ii == 0 ) // Memorisation du point de départ du tracé
|
|||
{ |
|||
firstx = startx + x; |
|||
firsty = starty + y; |
|||
firstxin = startx + xin; |
|||
firstyin = starty + yin; |
|||
} |
|||
} |
|||
// tracé de l'arrondi a gauche (2ieme demi polygone a l'origine du segment)
|
|||
for ( ii = 0; ii <= 8; ii++ ) |
|||
{ |
|||
theta = - ii * 225; |
|||
x = 0.0; y = width; |
|||
RotatePoint(&x, &y, -angle + theta); |
|||
xin = 0.0; yin = holeradius; |
|||
RotatePoint(&xin, &yin, theta); |
|||
xin += holex; |
|||
RotatePoint(&xin, &yin, -angle); |
|||
glVertex3f( startx + xin,starty + yin, zpos); |
|||
glVertex3f( startx + x, starty + y, zpos); |
|||
} |
|||
|
|||
glVertex3f( firstxin, firstyin, zpos); |
|||
glVertex3f( firstx, firsty, zpos); |
|||
glEnd(); |
|||
} |
|||
|
|||
@ -0,0 +1,322 @@ |
|||
/////////////////////////////////////////////////////////////////////////////
|
|||
// Name: 3d_frame.cpp
|
|||
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|||
|
|||
#ifdef __GNUG__
|
|||
#pragma implementation
|
|||
#pragma interface
|
|||
#endif
|
|||
|
|||
|
|||
#include "fctsys.h"
|
|||
|
|||
#include <wx/colordlg.h>
|
|||
|
|||
#if !wxUSE_GLCANVAS
|
|||
#error Please set wxUSE_GLCANVAS to 1 in setup.h.
|
|||
#endif
|
|||
|
|||
#include "bitmaps.h"
|
|||
#include "id.h"
|
|||
|
|||
#define VIEWER_MAIN
|
|||
#include "3d_viewer.h"
|
|||
#include "trackball.h"
|
|||
|
|||
|
|||
BEGIN_EVENT_TABLE(WinEDA3D_DrawFrame, wxFrame) |
|||
EVT_TOOL_RANGE(ID_ZOOM_PLUS_BUTT, ID_ZOOM_PAGE_BUTT, |
|||
WinEDA3D_DrawFrame::Process_Zoom) |
|||
EVT_TOOL_RANGE(ID_START_COMMAND_3D, ID_END_COMMAND_3D, |
|||
WinEDA3D_DrawFrame::Process_Special_Functions) |
|||
EVT_MENU(wxID_EXIT, WinEDA3D_DrawFrame::Exit3DFrame) |
|||
EVT_MENU(ID_MENU_SCREENCOPY_PNG, WinEDA3D_DrawFrame::Process_Special_Functions) |
|||
EVT_MENU(ID_MENU_SCREENCOPY_JPEG, WinEDA3D_DrawFrame::Process_Special_Functions) |
|||
EVT_CLOSE(WinEDA3D_DrawFrame::OnCloseWindow) |
|||
END_EVENT_TABLE() |
|||
|
|||
/*******************************************************************/ |
|||
WinEDA3D_DrawFrame::WinEDA3D_DrawFrame(WinEDA_BasePcbFrame * parent, |
|||
WinEDA_App *app_parent, const wxString& title ): |
|||
wxFrame(parent, DISPLAY3D_FRAME, title, |
|||
wxPoint(-1,-1), wxSize(-1,-1) ) |
|||
/*******************************************************************/ |
|||
{ |
|||
m_FrameName = wxT("Frame3D"); |
|||
m_Canvas = NULL; |
|||
m_Parent = parent; |
|||
m_ParentAppl = app_parent; |
|||
m_HToolBar = NULL; |
|||
m_VToolBar = NULL; |
|||
m_InternalUnits = 10000; // Unites internes = 1/10000 inch
|
|||
|
|||
// Give it an icon
|
|||
SetIcon(wxICON(icon_w3d)); |
|||
|
|||
GetSettings(); |
|||
SetSize(m_FramePos.x, m_FramePos.y, m_FrameSize.x, m_FrameSize.y); |
|||
// Create the status line
|
|||
int dims[5] = { -1, 100, 100, 100, 140}; |
|||
CreateStatusBar(5); |
|||
SetStatusWidths(5,dims); |
|||
ReCreateMenuBar(); |
|||
ReCreateHToolbar(); |
|||
// ReCreateAuxiliaryToolbar();
|
|||
ReCreateVToolbar(); |
|||
|
|||
// Make a Pcb3D_GLCanvas
|
|||
|
|||
m_Canvas = new Pcb3D_GLCanvas(this, -1, gl_attrib ); |
|||
/* init OpenGL once */ |
|||
m_Canvas->InitGL(); |
|||
} |
|||
|
|||
|
|||
|
|||
/***********************************************************/ |
|||
void WinEDA3D_DrawFrame::Exit3DFrame(wxCommandEvent& event) |
|||
/***********************************************************/ |
|||
{ |
|||
Close(TRUE); |
|||
} |
|||
|
|||
/***********************************************************/ |
|||
void WinEDA3D_DrawFrame::OnCloseWindow(wxCloseEvent & Event) |
|||
/***********************************************************/ |
|||
{ |
|||
SaveSettings(); |
|||
if ( m_Parent ) |
|||
{ |
|||
m_Parent->m_Draw3DFrame = NULL; |
|||
} |
|||
Destroy(); |
|||
} |
|||
|
|||
|
|||
/******************************************/ |
|||
void WinEDA3D_DrawFrame::GetSettings(void) |
|||
/******************************************/ |
|||
{ |
|||
wxString text; |
|||
wxConfig * Config = m_ParentAppl->m_EDA_Config; // Current config used by application
|
|||
|
|||
if( m_ParentAppl->m_EDA_Config ) |
|||
{ |
|||
text = m_FrameName + wxT("Pos_x"); |
|||
Config->Read(text, &m_FramePos.x); |
|||
text = m_FrameName + wxT("Pos_y"); |
|||
Config->Read(text, &m_FramePos.y); |
|||
text = m_FrameName + wxT("Size_x"); |
|||
Config->Read(text, &m_FrameSize.x, 600); |
|||
text = m_FrameName + wxT("Size_y"); |
|||
Config->Read(text, &m_FrameSize.y, 400); |
|||
Config->Read(wxT("BgColor_Red"), &g_Parm_3D_Visu.m_BgColor.m_Red, 0.0); |
|||
Config->Read(wxT("BgColor_Green"), &g_Parm_3D_Visu.m_BgColor.m_Green, 0.0); |
|||
Config->Read(wxT("BgColor_Blue"), &g_Parm_3D_Visu.m_BgColor.m_Blue, 0.0); |
|||
} |
|||
#ifdef __WXMAC__
|
|||
// for macOSX, the window must be below system (macOSX) toolbar
|
|||
if ( m_FramePos.y < GetMBarHeight() ) m_FramePos.y = GetMBarHeight(); |
|||
#endif
|
|||
} |
|||
|
|||
/*******************************************/ |
|||
void WinEDA3D_DrawFrame::SaveSettings(void) |
|||
/*******************************************/ |
|||
{ |
|||
wxString text; |
|||
wxConfig * Config = m_ParentAppl->m_EDA_Config; // Current config used by application
|
|||
|
|||
if( ! Config ) return; |
|||
|
|||
Config->Write(wxT("BgColor_Red"), g_Parm_3D_Visu.m_BgColor.m_Red); |
|||
Config->Write(wxT("BgColor_Green"), g_Parm_3D_Visu.m_BgColor.m_Green); |
|||
Config->Write(wxT("BgColor_Blue"), g_Parm_3D_Visu.m_BgColor.m_Blue); |
|||
|
|||
if( IsIconized() ) return; |
|||
|
|||
m_FrameSize = GetSize(); |
|||
m_FramePos = GetPosition(); |
|||
|
|||
text = m_FrameName + wxT("Pos_x"); |
|||
Config->Write(text, (long)m_FramePos.x); |
|||
text = m_FrameName + wxT("Pos_y"); |
|||
Config->Write(text, (long)m_FramePos.y); |
|||
text = m_FrameName + wxT("Size_x"); |
|||
Config->Write(text, (long)m_FrameSize.x); |
|||
text = m_FrameName + wxT("Size_y"); |
|||
Config->Write(text, (long)m_FrameSize.y); |
|||
} |
|||
|
|||
|
|||
/***********************************************************/ |
|||
void WinEDA3D_DrawFrame::Process_Zoom(wxCommandEvent& event) |
|||
/***********************************************************/ |
|||
{ |
|||
int ii; |
|||
switch(event.GetId()) |
|||
{ |
|||
case ID_ZOOM_PAGE_BUTT: |
|||
for ( ii = 0; ii < 4; ii++ ) g_Parm_3D_Visu.m_Rot[ii] = 0.0; |
|||
g_Parm_3D_Visu.m_Zoom = 1.0; |
|||
g_Draw3d_dx = g_Draw3d_dy = 0; |
|||
trackball(g_Parm_3D_Visu.m_Quat, 0.0, 0.0, 0.0, 0.0 ); |
|||
break; |
|||
|
|||
case ID_ZOOM_PLUS_BUTT: |
|||
g_Parm_3D_Visu.m_Zoom /= 1.2; |
|||
if ( g_Parm_3D_Visu.m_Zoom <= 0.01) |
|||
g_Parm_3D_Visu.m_Zoom = 0.01; |
|||
break; |
|||
|
|||
case ID_ZOOM_MOINS_BUTT: |
|||
g_Parm_3D_Visu.m_Zoom *= 1.2; |
|||
break; |
|||
|
|||
case ID_ZOOM_REDRAW_BUTT: |
|||
break; |
|||
|
|||
default: |
|||
return; |
|||
} |
|||
m_Canvas->DisplayStatus(); |
|||
m_Canvas->Refresh(FALSE); |
|||
} |
|||
|
|||
|
|||
|
|||
/************************************************************************/ |
|||
void WinEDA3D_DrawFrame::OnLeftClick(wxDC * DC, const wxPoint& MousePos) |
|||
/************************************************************************/ |
|||
{ |
|||
} |
|||
|
|||
|
|||
/*******************************************************************************/ |
|||
void WinEDA3D_DrawFrame::OnRightClick(const wxPoint& MousePos, wxMenu * PopMenu) |
|||
/*******************************************************************************/ |
|||
{ |
|||
} |
|||
|
|||
/************************************/ |
|||
int WinEDA3D_DrawFrame::BestZoom(void) |
|||
/************************************/ |
|||
// Retourne le meilleur zoom
|
|||
{ |
|||
return 1; |
|||
} |
|||
|
|||
|
|||
/*******************************************************************/ |
|||
void WinEDA3D_DrawFrame::RedrawActiveWindow(wxDC * DC, bool EraseBg) |
|||
/*******************************************************************/ |
|||
{ |
|||
} |
|||
|
|||
|
|||
/************************************************************************/ |
|||
void WinEDA3D_DrawFrame::Process_Special_Functions(wxCommandEvent& event) |
|||
/************************************************************************/ |
|||
{ |
|||
#define ROT_ANGLE 10.0
|
|||
|
|||
switch(event.GetId()) |
|||
{ |
|||
case ID_RELOAD3D_BOARD: |
|||
NewDisplay(); |
|||
break; |
|||
|
|||
case ID_ROTATE3D_X_POS: |
|||
g_Parm_3D_Visu.m_ROTX += ROT_ANGLE; |
|||
break; |
|||
|
|||
case ID_ROTATE3D_X_NEG: |
|||
g_Parm_3D_Visu.m_ROTX -= ROT_ANGLE; |
|||
break; |
|||
|
|||
case ID_ROTATE3D_Y_POS: |
|||
g_Parm_3D_Visu.m_ROTY += ROT_ANGLE; |
|||
break; |
|||
|
|||
case ID_ROTATE3D_Y_NEG: |
|||
g_Parm_3D_Visu.m_ROTY -= ROT_ANGLE; |
|||
break; |
|||
|
|||
case ID_ROTATE3D_Z_POS: |
|||
g_Parm_3D_Visu.m_ROTZ += ROT_ANGLE; |
|||
break; |
|||
|
|||
case ID_ROTATE3D_Z_NEG: |
|||
g_Parm_3D_Visu.m_ROTZ -= ROT_ANGLE; |
|||
break; |
|||
|
|||
case ID_MOVE3D_LEFT: |
|||
m_Canvas->SetView3D(WXK_LEFT); |
|||
return; |
|||
|
|||
case ID_MOVE3D_RIGHT: |
|||
m_Canvas->SetView3D(WXK_RIGHT); |
|||
return; |
|||
|
|||
case ID_MOVE3D_UP: |
|||
m_Canvas->SetView3D(WXK_UP); |
|||
return; |
|||
|
|||
case ID_MOVE3D_DOWN: |
|||
m_Canvas->SetView3D(WXK_DOWN); |
|||
return; |
|||
|
|||
case ID_TOOL_SCREENCOPY_TOCLIBBOARD: |
|||
case ID_MENU_SCREENCOPY_PNG: |
|||
case ID_MENU_SCREENCOPY_JPEG: |
|||
m_Canvas->TakeScreenshot(event); |
|||
break; |
|||
|
|||
case ID_MENU3D_BGCOLOR_SELECTION: |
|||
Set3DBgColor(); |
|||
return; |
|||
|
|||
default: |
|||
wxMessageBox( |
|||
wxT("WinEDA3D_DrawFrame::Process_Special_Functions() error: unknown command")); |
|||
return; |
|||
} |
|||
m_Canvas->DisplayStatus(); |
|||
m_Canvas->Refresh(FALSE); |
|||
} |
|||
|
|||
|
|||
/*****************************************/ |
|||
void WinEDA3D_DrawFrame::NewDisplay(void) |
|||
/*****************************************/ |
|||
{ |
|||
m_Canvas->ClearLists(); |
|||
m_Canvas->InitGL(); |
|||
m_Canvas->DisplayStatus(); |
|||
m_Canvas->Refresh(FALSE); |
|||
} |
|||
|
|||
|
|||
/******************************************/ |
|||
void WinEDA3D_DrawFrame::Set3DBgColor(void) |
|||
/******************************************/ |
|||
/* called to set the background color of the 3D scene
|
|||
*/ |
|||
{ |
|||
S3D_Color color; |
|||
wxColour newcolor, oldcolor; |
|||
|
|||
oldcolor.Set((int) round(g_Parm_3D_Visu.m_BgColor.m_Red*255), |
|||
(int) round(g_Parm_3D_Visu.m_BgColor.m_Green*255), |
|||
(int) round(g_Parm_3D_Visu.m_BgColor.m_Blue*255)); |
|||
|
|||
newcolor = wxGetColourFromUser(this, oldcolor); |
|||
if ( newcolor != oldcolor ) |
|||
{ |
|||
g_Parm_3D_Visu.m_BgColor.m_Red = (double) newcolor.Red() / 255.0; |
|||
g_Parm_3D_Visu.m_BgColor.m_Green = (double) newcolor.Green() / 255.0; |
|||
g_Parm_3D_Visu.m_BgColor.m_Blue = (double) newcolor.Blue() / 255.0; |
|||
NewDisplay(); |
|||
} |
|||
} |
|||
@ -0,0 +1,518 @@ |
|||
/////////////////////////////////////////////////////////////////////////////
|
|||
// Name: 3d_read_mesh.cpp
|
|||
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|||
|
|||
#ifdef __GNUG__
|
|||
#pragma implementation
|
|||
#pragma interface
|
|||
#endif
|
|||
|
|||
#include "fctsys.h"
|
|||
|
|||
#include "common.h"
|
|||
#include "macros.h"
|
|||
|
|||
|
|||
#include "3d_struct.h"
|
|||
#include "3d_viewer.h"
|
|||
|
|||
|
|||
/***********************************/ |
|||
int Struct3D_Master:: ReadData(void) |
|||
/************************************/ |
|||
{ |
|||
char line[1024], *text; |
|||
wxString fullfilename; |
|||
FILE * file; |
|||
int LineNum = 0; |
|||
|
|||
if ( m_Shape3DName.IsEmpty() ) |
|||
{ |
|||
return 1; |
|||
} |
|||
|
|||
if ( wxIsAbsolutePath(m_Shape3DName) ) fullfilename.Empty(); |
|||
else fullfilename = g_RealLibDirBuffer + LIB3D_PATH; |
|||
fullfilename += m_Shape3DName; |
|||
#if defined (__WINDOWS__)
|
|||
fullfilename.Replace(UNIX_STRING_DIR_SEP,WIN_STRING_DIR_SEP); |
|||
#else
|
|||
#if defined (__UNIX__)
|
|||
fullfilename.Replace(WIN_STRING_DIR_SEP,UNIX_STRING_DIR_SEP); |
|||
#endif
|
|||
#endif
|
|||
|
|||
file = wxFopen( fullfilename, wxT("rt") ); |
|||
if ( file == NULL ) |
|||
{ |
|||
return -1; |
|||
} |
|||
|
|||
while ( GetLine(file, line, &LineNum, 512) ) |
|||
{ |
|||
text = strtok(line, " \t\n\r"); |
|||
if ( stricmp (text, "DEF" ) == 0 ) |
|||
{ |
|||
while ( GetLine(file, line, &LineNum, 512) ) |
|||
{ |
|||
text = strtok(line, " \t\n\r"); |
|||
if ( text == NULL ) continue; |
|||
if ( * text == '}' ) break; |
|||
if ( stricmp (text, "children") == 0 ) |
|||
{ |
|||
ReadChildren(file, &LineNum); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
fclose (file); |
|||
return 0; |
|||
} |
|||
|
|||
/*********************************************************/ |
|||
int Struct3D_Master:: ReadMaterial(FILE * file, int *LineNum) |
|||
/*********************************************************/ |
|||
/*
|
|||
analyse la description du type: |
|||
material DEF yellow Material { |
|||
diffuseColor 1.00000 1.00000 0.00000e+0 |
|||
emissiveColor 0.00000e+0 0.00000e+0 0.00000e+0 |
|||
specularColor 1.00000 1.00000 1.00000 |
|||
ambientIntensity 1.00000 |
|||
transparency 0.00000e+0 |
|||
shininess 1.00000 |
|||
} |
|||
ou du type: |
|||
material USE yellow |
|||
*/ |
|||
{ |
|||
char line[512], * text, * command; |
|||
wxString mat_name; |
|||
S3D_Material * material = NULL; |
|||
|
|||
// Lecture de la commande:
|
|||
command = strtok(NULL, " \t\n\r"); |
|||
text = strtok(NULL, " \t\n\r"); |
|||
mat_name = CONV_FROM_UTF8(text); |
|||
if ( stricmp(command, "USE") == 0 ) |
|||
{ |
|||
|
|||
for ( material = m_Materials; material != NULL; |
|||
material = (S3D_Material *) material->Pnext) |
|||
{ |
|||
if ( material->m_Name == mat_name) |
|||
{ |
|||
material->SetMaterial(); |
|||
return 1; |
|||
} |
|||
} |
|||
|
|||
printf("ReadMaterial error: material not found\n"); |
|||
return 0; |
|||
} |
|||
|
|||
if ( stricmp(command, "DEF") == 0 ) |
|||
{ |
|||
material = new S3D_Material(this, mat_name); |
|||
material->Pnext = m_Materials; |
|||
m_Materials = material; |
|||
while ( GetLine(file, line, LineNum, 512) ) |
|||
{ |
|||
text = strtok(line," \t\n\r"); |
|||
if ( text == NULL ) continue; |
|||
if ( text[0] == '}' ) |
|||
{ |
|||
material->SetMaterial(); |
|||
return 0; |
|||
} |
|||
if ( stricmp (text, "diffuseColor") == 0 ) |
|||
{ |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_DiffuseColor.x = atof(from_point(text)); |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_DiffuseColor.y = atof(from_point(text)); |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_DiffuseColor.z = atof(from_point(text)); |
|||
} |
|||
else if ( stricmp (text, "emissiveColor") == 0 ) |
|||
{ |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_EmissiveColor.x = atof(from_point(text)); |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_EmissiveColor.y = atof(from_point(text)); |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_EmissiveColor.z = atof(from_point(text)); |
|||
} |
|||
else if ( strnicmp (text, "specularColor", 13 ) == 0 ) |
|||
{ |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_SpecularColor.x = atof(from_point(text)); |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_SpecularColor.y = atof(from_point(text)); |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_SpecularColor.z = atof(from_point(text)); |
|||
} |
|||
else if ( strnicmp (text, "ambientIntensity", 16 ) == 0 ) |
|||
{ |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_AmbientIntensity = atof(from_point(text)); |
|||
} |
|||
else if ( strnicmp (text, "transparency", 12 ) == 0 ) |
|||
{ |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_Transparency = atof(from_point(text)); |
|||
} |
|||
else if ( strnicmp (text, "shininess", 9 ) == 0 ) |
|||
{ |
|||
text = strtok(NULL," \t\n\r"); |
|||
material->m_Shininess = atof(from_point(text)); |
|||
} |
|||
} |
|||
} |
|||
return -1; |
|||
} |
|||
|
|||
|
|||
/**********************************************************/ |
|||
int Struct3D_Master::ReadChildren(FILE * file, int *LineNum) |
|||
/***********************************************************/ |
|||
{ |
|||
char line[1024], *text; |
|||
|
|||
while ( GetLine(file, line, LineNum, 512) ) |
|||
{ |
|||
text = strtok(line, " \t\n\r"); |
|||
if ( * text == ']' ) return 0; |
|||
if ( * text == ',' ) continue; |
|||
|
|||
if ( stricmp (text, "Shape" ) == 0 ) |
|||
{ |
|||
ReadShape(file, LineNum); |
|||
} |
|||
else |
|||
{ |
|||
printf ("ReadChildren error line %d <%s> \n", *LineNum, text); |
|||
break; |
|||
} |
|||
} |
|||
return 1; |
|||
} |
|||
|
|||
/********************************************************/ |
|||
int Struct3D_Master::ReadShape(FILE * file, int *LineNum) |
|||
/********************************************************/ |
|||
{ |
|||
char line[1024], *text; |
|||
int err = 1; |
|||
|
|||
while ( GetLine(file, line, LineNum, 512) ) |
|||
{ |
|||
text = strtok(line, " \t\n\r"); |
|||
if ( * text == '}' ) |
|||
{ |
|||
err = 0; |
|||
break; |
|||
} |
|||
|
|||
if ( stricmp (text, "appearance" ) == 0 ) |
|||
{ |
|||
ReadAppearance(file, LineNum); |
|||
} |
|||
else if ( stricmp (text, "geometry" ) == 0 ) |
|||
{ |
|||
ReadGeometry(file, LineNum); |
|||
} |
|||
else |
|||
{ |
|||
printf ("ReadShape error line %d <%s> \n", *LineNum, text); |
|||
break; |
|||
} |
|||
} |
|||
|
|||
return err; |
|||
} |
|||
|
|||
/*************************************************************/ |
|||
int Struct3D_Master::ReadAppearance(FILE * file, int *LineNum) |
|||
/*************************************************************/ |
|||
{ |
|||
char line[1024], *text; |
|||
int err = 1; |
|||
|
|||
while ( GetLine(file, line, LineNum, 512) ) |
|||
{ |
|||
text = strtok(line, " \t\n\r"); |
|||
if ( * text == '}' ) |
|||
{ |
|||
err = 0; break; |
|||
} |
|||
|
|||
if ( stricmp (text, "material" ) == 0 ) |
|||
{ |
|||
ReadMaterial(file, LineNum ); |
|||
} |
|||
else |
|||
{ |
|||
printf ("ReadAppearance error line %d <%s> \n", *LineNum, text); |
|||
break; |
|||
} |
|||
} |
|||
|
|||
return err; |
|||
} |
|||
|
|||
#define BUFSIZE 2000
|
|||
|
|||
/************************************************************************************/ |
|||
double * ReadCoordsList(FILE * file, char * text_buffer, int * bufsize, int *LineNum) |
|||
/************************************************************************************/ |
|||
/* Read a coordinate liste like:
|
|||
coord Coordinate { point [ |
|||
-5.24489 6.57640e-3 -9.42129e-2, |
|||
-5.11821 6.57421e-3 0.542654, |
|||
-3.45868 0.256565 1.32000 ] } |
|||
or: |
|||
normal Normal { vector [ |
|||
0.995171 -6.08102e-6 9.81541e-2, |
|||
0.923880 -4.09802e-6 0.382683, |
|||
0.707107 -9.38186e-7 0.707107] |
|||
} |
|||
|
|||
Return the coordinate list |
|||
text_buffer contains the first line of this node : |
|||
"coord Coordinate { point [" |
|||
*/ |
|||
{ |
|||
double * data_list = NULL; |
|||
unsigned int ii = 0, jj = 0, nn = BUFSIZE; |
|||
char * text; |
|||
bool HasData = FALSE; |
|||
bool StartData = FALSE; |
|||
bool EndData = FALSE; |
|||
bool EndNode = FALSE; |
|||
char string_num[512]; |
|||
|
|||
text = text_buffer; |
|||
while ( !EndNode ) |
|||
{ |
|||
if ( * text == 0 ) // Needs data !
|
|||
{ |
|||
text = text_buffer; |
|||
GetLine(file, text_buffer, LineNum, 512); |
|||
} |
|||
|
|||
while ( !EndNode && *text ) |
|||
{ |
|||
switch ( *text ) |
|||
{ |
|||
case '[': |
|||
StartData = TRUE; |
|||
jj = 0; string_num[jj] = 0; |
|||
data_list = (double *) MyZMalloc(nn * sizeof(double) ); |
|||
break; |
|||
|
|||
case '}': |
|||
EndNode = TRUE; |
|||
break; |
|||
|
|||
case ']': |
|||
case '\t': |
|||
case ' ': |
|||
case ',': |
|||
jj = 0; |
|||
if ( ! StartData || !HasData) break; |
|||
data_list[ii] = atof(from_point(string_num)); |
|||
string_num[jj] = 0; |
|||
ii++; |
|||
if ( ii >= nn ) |
|||
{ |
|||
nn *= 2; |
|||
data_list = (double *) realloc(data_list, (nn * sizeof(double)) ); |
|||
} |
|||
HasData = FALSE; |
|||
if ( *text == ']' ) |
|||
{ |
|||
StartData = FALSE; |
|||
EndData = TRUE; |
|||
} |
|||
break; |
|||
|
|||
default: |
|||
if ( ! StartData ) break; |
|||
if ( jj >= sizeof(string_num) ) break; |
|||
string_num[jj] = *text; |
|||
jj++; string_num[jj] = 0; |
|||
HasData = TRUE; |
|||
break; |
|||
} |
|||
text++; |
|||
} |
|||
} |
|||
|
|||
if ( data_list ) |
|||
data_list = (double *) realloc(data_list, (ii * sizeof(double)) ); |
|||
if ( bufsize ) *bufsize = ii; |
|||
return data_list; |
|||
} |
|||
|
|||
/***********************************************************/ |
|||
int Struct3D_Master::ReadGeometry(FILE * file, int *LineNum) |
|||
/***********************************************************/ |
|||
{ |
|||
char line[1024], buffer[1024], *text; |
|||
int err = 1; |
|||
int nn = BUFSIZE; |
|||
double * points = NULL; |
|||
int * index = NULL; |
|||
|
|||
while ( GetLine(file, line, LineNum, 512) ) |
|||
{ |
|||
strcpy(buffer,line); |
|||
text = strtok(buffer, " \t\n\r"); |
|||
if ( * text == '}' ) |
|||
{ |
|||
err = 0; break; |
|||
} |
|||
|
|||
if ( stricmp (text, "normalPerVertex" ) == 0 ) |
|||
{ |
|||
text = strtok(NULL, " ,\t\n\r"); |
|||
if( stricmp (text, "TRUE") == 0 ) |
|||
{ |
|||
} |
|||
else |
|||
{ |
|||
} |
|||
continue; |
|||
} |
|||
|
|||
if ( stricmp (text, "colorPerVertex" ) == 0 ) |
|||
{ |
|||
text = strtok(NULL, " ,\t\n\r"); |
|||
if( stricmp (text, "TRUE") == 0 ) |
|||
{ |
|||
} |
|||
else |
|||
{ |
|||
} |
|||
continue; |
|||
} |
|||
|
|||
if ( stricmp (text, "normal" ) == 0 ) |
|||
{ |
|||
int coord_number; |
|||
double * buf_points = ReadCoordsList(file, line, &coord_number, LineNum); |
|||
continue; |
|||
free(buf_points); |
|||
continue; |
|||
} |
|||
if ( stricmp (text, "normalIndex" ) == 0 ) |
|||
{ |
|||
while ( GetLine(file, line, LineNum, 512) ) |
|||
{ |
|||
text = strtok(line, " ,\t\n\r"); |
|||
while ( text ) |
|||
{ |
|||
if ( *text == ']') break; |
|||
text = strtok(NULL, " ,\t\n\r"); |
|||
} |
|||
if ( text && (*text == ']') ) break; |
|||
} |
|||
continue; |
|||
} |
|||
|
|||
if ( stricmp (text, "color" ) == 0 ) |
|||
{ |
|||
int coord_number; |
|||
double * buf_points = ReadCoordsList(file, line, &coord_number, LineNum); |
|||
continue; |
|||
free(buf_points); |
|||
continue; |
|||
} |
|||
if ( stricmp (text, "colorIndex" ) == 0 ) |
|||
{ |
|||
while ( GetLine(file, line, LineNum, 512) ) |
|||
{ |
|||
text = strtok(line, " ,\t\n\r"); |
|||
while ( text ) |
|||
{ |
|||
if ( *text == ']') break; |
|||
text = strtok(NULL, " ,\t\n\r"); |
|||
} |
|||
if ( text && (*text == ']') ) break; |
|||
} |
|||
continue; |
|||
} |
|||
|
|||
if ( stricmp (text, "coord" ) == 0 ) |
|||
{ |
|||
int coord_number; |
|||
points = ReadCoordsList(file, line, &coord_number, LineNum); |
|||
} |
|||
else if ( stricmp (text, "coordIndex" ) == 0 ) |
|||
{ |
|||
index = (int *) MyMalloc(nn * sizeof(int) ); |
|||
S3D_Vertex * coords = |
|||
(S3D_Vertex *) MyMalloc(nn * sizeof(S3D_Vertex) ); |
|||
while ( GetLine(file, line, LineNum, 512) ) |
|||
{ |
|||
int coord_count = 0, jj; |
|||
text = strtok(line, " ,\t\n\r"); |
|||
while ( text ) |
|||
{ |
|||
if ( *text == ']') break; |
|||
jj = atoi(from_point(text)); |
|||
if ( jj < 0 ) |
|||
{ |
|||
S3D_Vertex * curr_coord = coords; |
|||
for ( jj = 0; jj < coord_count; jj ++ ) |
|||
{ |
|||
int kk = index[jj] * 3; |
|||
curr_coord->x = points[kk]; |
|||
curr_coord->y = points[kk+1]; |
|||
curr_coord->z = points[kk+2]; |
|||
curr_coord++; |
|||
} |
|||
Set_Object_Coords(coords, coord_count ); |
|||
Set_Object_Data(coords, coord_count ); |
|||
coord_count = 0; |
|||
} |
|||
else |
|||
{ |
|||
index[coord_count++] = jj; |
|||
} |
|||
text = strtok(NULL, " ,\t\n\r"); |
|||
} |
|||
if ( text && (*text == ']') ) break; |
|||
} |
|||
free(index); |
|||
free(coords); |
|||
} |
|||
else |
|||
{ |
|||
printf ("ReadGeometry error line %d <%s> \n", *LineNum, text); |
|||
break; |
|||
} |
|||
} |
|||
if ( points ) free (points); |
|||
|
|||
return err; |
|||
} |
|||
|
|||
|
|||
|
|||
/*********************************************************/ |
|||
int Struct3D_Shape:: ReadData(FILE * file, int *LineNum) |
|||
/*********************************************************/ |
|||
{ |
|||
char line[512]; |
|||
|
|||
while ( GetLine(file, line, LineNum, 512) ) |
|||
{ |
|||
} |
|||
|
|||
return -1; |
|||
} |
|||
|
|||
@ -0,0 +1,136 @@ |
|||
/********************************************************/ |
|||
/* 3d_struct.h : definition des structures de donnees */ |
|||
/* pour la representation 3D des modules */ |
|||
/********************************************************/ |
|||
|
|||
#ifndef STRUCT_3D_H |
|||
#define STRUCT_3D_H |
|||
|
|||
#include "base_struct.h" |
|||
|
|||
/* 3D modeler units -> PCB units conversion scale: |
|||
1 "3D unit modeler" = 1 unit wings3d = 2,54 mm = 0.1 inch */ |
|||
#define UNITS3D_TO_UNITSPCB 1000 |
|||
|
|||
|
|||
class Struct3D_Master; |
|||
class Struct3D_Shape; |
|||
|
|||
class S3D_Color /* This is a 3D color (R, G, G) 3 floats range 0 to 1.0*/ |
|||
{ |
|||
public: |
|||
double m_Red, m_Green, m_Blue; |
|||
public: |
|||
S3D_Color(void) |
|||
{ |
|||
m_Red = m_Green = m_Blue = 0; |
|||
} |
|||
}; |
|||
|
|||
class S3D_Vertex /* This is a 3D coordinate (3 float numbers: x,y,z coordinates)*/ |
|||
{ |
|||
public: |
|||
double x, y, z; |
|||
public: |
|||
S3D_Vertex(void); |
|||
}; |
|||
|
|||
class S3D_Material: public EDA_BaseStruct /* openGL "material" data*/ |
|||
{ |
|||
public: |
|||
wxString m_Name; |
|||
S3D_Vertex m_DiffuseColor; |
|||
S3D_Vertex m_EmissiveColor; |
|||
S3D_Vertex m_SpecularColor; |
|||
float m_AmbientIntensity; |
|||
float m_Transparency; |
|||
float m_Shininess; |
|||
|
|||
public: |
|||
S3D_Material(Struct3D_Master * father, const wxString & name); |
|||
void SetMaterial(void); |
|||
}; |
|||
|
|||
/*******************************************/ |
|||
class Struct3D_Master: public EDA_BaseStruct |
|||
/*******************************************/ |
|||
/* Master structure for a 3D item description */ |
|||
{ |
|||
public: |
|||
wxString m_Shape3DName; /* 3D shape name in 3D library */ |
|||
S3D_Vertex m_MatScale; |
|||
S3D_Vertex m_MatRotation; |
|||
S3D_Vertex m_MatPosition; |
|||
Struct3D_Shape * m_3D_Drawings; |
|||
S3D_Material *m_Materials; |
|||
|
|||
public: |
|||
|
|||
Struct3D_Master(EDA_BaseStruct * StructFather); |
|||
~Struct3D_Master(void); |
|||
|
|||
void Copy(Struct3D_Master * pattern); |
|||
int ReadData(void); |
|||
int ReadMaterial(FILE * file, int *LineNum); |
|||
int ReadChildren(FILE * file, int *LineNum); |
|||
int ReadShape(FILE * file, int *LineNum); |
|||
int ReadAppearance(FILE * file, int *LineNum); |
|||
int ReadGeometry(FILE * file, int *LineNum); |
|||
void Set_Object_Coords(S3D_Vertex * coord, int nbcoord ); |
|||
|
|||
}; |
|||
|
|||
|
|||
/*********************************************/ |
|||
class Struct3D_Shape: public EDA_BaseStruct |
|||
/*********************************************/ |
|||
/* decrit une forme complexe 3D */ |
|||
{ |
|||
public: |
|||
S3D_Vertex * m_3D_Coord; |
|||
int * m_3D_CoordIndex; |
|||
int m_3D_Points; |
|||
|
|||
public: |
|||
|
|||
Struct3D_Shape(EDA_BaseStruct * StructFather); |
|||
~Struct3D_Shape(void); |
|||
|
|||
int ReadData(FILE * file, int *LineNum); |
|||
}; |
|||
|
|||
|
|||
|
|||
/*****************************************************************/ |
|||
/* Classe pour afficher et editer un Vertex (triplet de valeurs),*/ |
|||
/* en INCHES ou MM ou sans unites */ |
|||
/*****************************************************************/ |
|||
/* internal_unit is the internal unit number by inch: |
|||
- 1000 for EESchema |
|||
- 10000 for PcbNew |
|||
*/ |
|||
class WinEDA_VertexCtrl |
|||
{ |
|||
private: |
|||
int m_Units; |
|||
int m_Internal_Unit; |
|||
wxTextCtrl * m_XValueCtrl, * m_YValueCtrl, * m_ZValueCtrl; |
|||
wxStaticText * m_Text; |
|||
|
|||
public: |
|||
// Constructor and destructor |
|||
WinEDA_VertexCtrl(wxWindow *parent, const wxString & title, |
|||
wxBoxSizer * BoxSizer, |
|||
int units, int internal_unit); |
|||
|
|||
~WinEDA_VertexCtrl(void); |
|||
|
|||
S3D_Vertex GetValue(void); |
|||
void SetValue(S3D_Vertex vertex); |
|||
void Enable(bool enbl); |
|||
void SetToolTip(const wxString & text); |
|||
}; |
|||
|
|||
|
|||
|
|||
#endif /* STRUCT_3D_H */ |
|||
@ -0,0 +1,129 @@ |
|||
/*******************************************************************/ |
|||
/* 3d_toolbar.cpp: construction des tool bars de la frame visu 3d */ |
|||
/*******************************************************************/ |
|||
|
|||
#include "fctsys.h"
|
|||
#include "macros.h"
|
|||
|
|||
#include "bitmaps3d.h"
|
|||
#include "bitmaps.h"
|
|||
|
|||
#include "id.h"
|
|||
|
|||
#define BITMAP wxBitmap
|
|||
#include "3d_viewer.h"
|
|||
|
|||
|
|||
/*********************************************/ |
|||
void WinEDA3D_DrawFrame::ReCreateHToolbar(void) |
|||
/*********************************************/ |
|||
{ |
|||
|
|||
if ( m_HToolBar != NULL ) |
|||
{ // simple mise a jour de la liste des fichiers anciens
|
|||
SetToolbars(); |
|||
return; |
|||
} |
|||
|
|||
|
|||
m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE); |
|||
SetToolBar(m_HToolBar); |
|||
|
|||
// Set up toolbar
|
|||
m_HToolBar->AddTool(ID_RELOAD3D_BOARD, wxEmptyString, BITMAP(import3d_xpm), |
|||
_("Reload board")); |
|||
#ifdef __WINDOWS__ // do not work properly under linux
|
|||
m_HToolBar->AddSeparator(); |
|||
m_HToolBar->AddTool(ID_TOOL_SCREENCOPY_TOCLIBBOARD, wxEmptyString, BITMAP(copy_button), |
|||
_("Copy 3D Image to Clipboard")); |
|||
#endif
|
|||
|
|||
m_HToolBar->AddSeparator(); |
|||
m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP(zoom_in_xpm), |
|||
_("zoom + (F1)")); |
|||
|
|||
m_HToolBar->AddTool(ID_ZOOM_MOINS_BUTT, wxEmptyString, BITMAP(zoom_out_xpm), |
|||
_("zoom - (F2)")); |
|||
|
|||
m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, wxEmptyString, BITMAP(repaint_xpm), |
|||
_("redraw (F3)")); |
|||
|
|||
m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, wxEmptyString, BITMAP(zoom_optimal_xpm), |
|||
_("auto zoom")); |
|||
|
|||
m_HToolBar->AddSeparator(); |
|||
m_HToolBar->AddTool(ID_ROTATE3D_X_POS, wxEmptyString, BITMAP(rotate_pos_X_xpm), |
|||
_("Rotate X ->") ); |
|||
|
|||
m_HToolBar->AddTool(ID_ROTATE3D_X_NEG, wxEmptyString, BITMAP(rotate_neg_X_xpm), |
|||
_("Rotate X <-") ); |
|||
|
|||
m_HToolBar->AddSeparator(); |
|||
m_HToolBar->AddTool(ID_ROTATE3D_Y_POS, wxEmptyString, BITMAP(rotate_pos_Y_xpm), |
|||
_("Rotate Y ->") ); |
|||
m_HToolBar->AddTool(ID_ROTATE3D_Y_NEG, wxEmptyString, BITMAP(rotate_neg_Y_xpm), |
|||
_("Rotate Y <-") ); |
|||
|
|||
|
|||
m_HToolBar->AddSeparator(); |
|||
m_HToolBar->AddTool(ID_ROTATE3D_Z_POS, wxEmptyString, BITMAP(rotate_pos_Z_xpm), |
|||
_("Rotate Z ->") ); |
|||
|
|||
m_HToolBar->AddTool(ID_ROTATE3D_Z_NEG, wxEmptyString, BITMAP(rotate_neg_Z_xpm), |
|||
_("Rotate Z <-") ); |
|||
|
|||
m_HToolBar->AddSeparator(); |
|||
m_HToolBar->AddTool(ID_MOVE3D_LEFT, wxEmptyString, BITMAP(left_xpm), |
|||
_("Move left <-") ); |
|||
|
|||
m_HToolBar->AddTool(ID_MOVE3D_RIGHT, wxEmptyString, BITMAP(right_xpm), |
|||
_("Move right ->") ); |
|||
|
|||
m_HToolBar->AddTool(ID_MOVE3D_UP, wxEmptyString, BITMAP(up_xpm), |
|||
_("Move Up ^") ); |
|||
|
|||
m_HToolBar->AddTool(ID_MOVE3D_DOWN, wxEmptyString, BITMAP(down_xpm), |
|||
_("Move Down") ); |
|||
|
|||
|
|||
m_HToolBar->Realize(); |
|||
|
|||
// SetToolbars();
|
|||
} |
|||
|
|||
/*********************************************/ |
|||
void WinEDA3D_DrawFrame::ReCreateVToolbar(void) |
|||
/*********************************************/ |
|||
{ |
|||
} |
|||
|
|||
/**********************************************/ |
|||
void WinEDA3D_DrawFrame::ReCreateMenuBar(void) |
|||
/**********************************************/ |
|||
{ |
|||
wxMenuBar *menuBar = new wxMenuBar; |
|||
|
|||
wxMenu *fileMenu = new wxMenu; |
|||
menuBar->Append(fileMenu, _("&File") ); |
|||
|
|||
fileMenu->Append(ID_MENU_SCREENCOPY_PNG, _("Create Image (png format)")); |
|||
fileMenu->Append(ID_MENU_SCREENCOPY_JPEG, _("Create Image (jpeg format)")); |
|||
fileMenu->AppendSeparator(); |
|||
fileMenu->Append(wxID_EXIT, _("&Exit")); |
|||
|
|||
wxMenu *referencesMenu = new wxMenu; |
|||
menuBar->Append(referencesMenu, _("&Preferences") ); |
|||
|
|||
ADD_MENUITEM(referencesMenu, ID_MENU3D_BGCOLOR_SELECTION, |
|||
_("Choose background color"), palette_xpm) |
|||
|
|||
|
|||
SetMenuBar(menuBar); |
|||
} |
|||
|
|||
/*****************************************/ |
|||
void WinEDA3D_DrawFrame::SetToolbars(void) |
|||
/*****************************************/ |
|||
{ |
|||
} |
|||
|
|||
@ -0,0 +1,172 @@ |
|||
///////////////////////////////////////////////////////////////////////////// |
|||
// Name: 3d_viewer.h |
|||
///////////////////////////////////////////////////////////////////////////// |
|||
#if !wxUSE_GLCANVAS |
|||
#error Please set wxUSE_GLCANVAS to 1 in setup.h. |
|||
#endif |
|||
|
|||
#include "wx/glcanvas.h" |
|||
|
|||
#ifdef __WXMAC__ |
|||
# ifdef __DARWIN__ |
|||
# include <OpenGL/gl.h> |
|||
# include <OpenGL/glu.h> |
|||
# else |
|||
# include <gl.h> |
|||
# include <glu.h> |
|||
# endif |
|||
#else |
|||
# include <GL/gl.h> |
|||
# include <GL/glu.h> |
|||
#endif |
|||
|
|||
#ifdef VIEWER_MAIN |
|||
#define global_3d |
|||
#else |
|||
#define global_3d extern |
|||
#endif |
|||
|
|||
#include "pcbstruct.h" |
|||
#include "3d_struct.h" |
|||
|
|||
#define LIB3D_PATH wxT("packages3d/") |
|||
|
|||
class Pcb3D_GLCanvas; |
|||
class WinEDA3D_DrawFrame; |
|||
class Info_3D_Visu; |
|||
class S3D_Vertex; |
|||
class SEGVIA; |
|||
|
|||
|
|||
#define m_ROTX m_Rot[0] |
|||
#define m_ROTY m_Rot[1] |
|||
#define m_ROTZ m_Rot[2] |
|||
|
|||
/* information needed to display 3D board */ |
|||
class Info_3D_Visu |
|||
{ |
|||
public: |
|||
float m_Beginx, m_Beginy; /* position of mouse */ |
|||
float m_Quat[4]; /* orientation of object */ |
|||
float m_Rot[4]; /* man rotation of object */ |
|||
float m_Zoom; /* field of view in degrees */ |
|||
S3D_Color m_BgColor; |
|||
wxPoint m_BoardPos; |
|||
wxSize m_BoardSize; |
|||
int m_Layers; |
|||
EDA_BoardDesignSettings * m_BoardSettings; // Link to current board design settings |
|||
float m_Epoxy_Width; /* Epoxy tickness (normalized) */ |
|||
|
|||
float m_BoardScale; /* Normalisation scale for coordinates: |
|||
when scaled tey are between -1.0 and +1.0 */ |
|||
float m_LayerZcoord[32]; |
|||
public: |
|||
Info_3D_Visu(void); |
|||
~Info_3D_Visu(void); |
|||
}; |
|||
|
|||
|
|||
class Pcb3D_GLCanvas: public wxGLCanvas |
|||
{ |
|||
public: |
|||
WinEDA3D_DrawFrame * m_Parent; |
|||
|
|||
private: |
|||
bool m_init; |
|||
GLuint m_gllist; |
|||
|
|||
public: |
|||
Pcb3D_GLCanvas(WinEDA3D_DrawFrame *parent, const wxWindowID id = -1, |
|||
int* gl_attrib = NULL); |
|||
~Pcb3D_GLCanvas(void); |
|||
|
|||
void ClearLists(void); |
|||
|
|||
void OnPaint(wxPaintEvent& event); |
|||
void OnSize(wxSizeEvent& event); |
|||
void OnEraseBackground(wxEraseEvent& event); |
|||
void OnChar(wxKeyEvent& event); |
|||
void OnMouseEvent(wxMouseEvent& event); |
|||
void OnRightClick(wxMouseEvent& event); |
|||
void OnPopUpMenu(wxCommandEvent & event); |
|||
void TakeScreenshot(wxCommandEvent & event); |
|||
void SetView3D(int keycode); |
|||
void DisplayStatus(void); |
|||
void Redraw(void); |
|||
GLuint DisplayCubeforTest(void); |
|||
|
|||
void OnEnterWindow( wxMouseEvent& event ); |
|||
|
|||
void Render( void ); |
|||
GLuint CreateDrawGL_List(void); |
|||
void InitGL(void); |
|||
void SetLights(void); |
|||
void Draw3D_Track(TRACK * track); |
|||
void Draw3D_Via(SEGVIA * via); |
|||
void Draw3D_DrawSegment(DRAWSEGMENT * segment); |
|||
|
|||
DECLARE_EVENT_TABLE() |
|||
}; |
|||
|
|||
|
|||
class WinEDA3D_DrawFrame: public wxFrame |
|||
{ |
|||
public: |
|||
WinEDA_BasePcbFrame * m_Parent; |
|||
WinEDA_App * m_ParentAppl; |
|||
Pcb3D_GLCanvas * m_Canvas; |
|||
wxToolBar * m_HToolBar; |
|||
wxToolBar * m_VToolBar; |
|||
int m_InternalUnits; |
|||
wxPoint m_FramePos; |
|||
wxSize m_FrameSize; |
|||
|
|||
private: |
|||
wxString m_FrameName; // name used for writting and reading setup |
|||
// It is "Frame3D" |
|||
|
|||
|
|||
public: |
|||
WinEDA3D_DrawFrame(WinEDA_BasePcbFrame * parent, WinEDA_App *app_parent, |
|||
const wxString& title ); |
|||
|
|||
void Exit3DFrame(wxCommandEvent& event); |
|||
void OnCloseWindow(wxCloseEvent & Event); |
|||
void ReCreateMenuBar(void); |
|||
void ReCreateHToolbar(void); |
|||
void ReCreateVToolbar(void); |
|||
void SetToolbars(void); |
|||
void GetSettings(void); |
|||
void SaveSettings(void); |
|||
|
|||
void OnLeftClick(wxDC * DC, const wxPoint& MousePos); |
|||
void OnRightClick(const wxPoint& MousePos, wxMenu * PopMenu); |
|||
void OnKeyEvent(wxKeyEvent& event); |
|||
int BestZoom(void); // Retourne le meilleur zoom |
|||
void RedrawActiveWindow(wxDC * DC, bool EraseBg); |
|||
void Process_Special_Functions(wxCommandEvent& event); |
|||
void Process_Zoom(wxCommandEvent& event); |
|||
|
|||
void NewDisplay(void); |
|||
void Set3DBgColor(void); |
|||
|
|||
DECLARE_EVENT_TABLE() |
|||
}; |
|||
|
|||
void SetGLColor(int color); |
|||
void Set_Object_Data(const S3D_Vertex * coord, int nbcoord ); |
|||
|
|||
global_3d Info_3D_Visu g_Parm_3D_Visu; |
|||
global_3d double g_Draw3d_dx, g_Draw3d_dy; |
|||
global_3d double ZBottom, ZTop; |
|||
global_3d double DataScale3D; // coeff de conversion unites utilsateut -> unites 3D |
|||
global_3d int gl_attrib[] |
|||
#ifdef VIEWER_MAIN |
|||
= { WX_GL_RGBA, WX_GL_MIN_RED, 8, WX_GL_MIN_GREEN, 8, |
|||
WX_GL_MIN_BLUE, 8, WX_GL_DEPTH_SIZE, 16, |
|||
WX_GL_DOUBLEBUFFER, |
|||
GL_NONE } |
|||
#endif |
|||
; |
|||
|
|||
|
|||
@ -0,0 +1,15 @@ |
|||
#include "bitmaps3d/import3d.xpm" |
|||
|
|||
#include "bitmaps3d/rotate+x.xpm" |
|||
#include "bitmaps3d/rotate-x.xpm" |
|||
#include "bitmaps3d/rotate+y.xpm" |
|||
#include "bitmaps3d/rotate-y.xpm" |
|||
#include "bitmaps3d/rotate+z.xpm" |
|||
#include "bitmaps3d/rotate-z.xpm" |
|||
#include "bitmaps3d/axis3d.xpm" |
|||
#include "bitmaps3d/axis3d_bottom.xpm" |
|||
#include "bitmaps3d/axis3d_top.xpm" |
|||
#include "bitmaps3d/axis3d_left.xpm" |
|||
#include "bitmaps3d/axis3d_right.xpm" |
|||
#include "bitmaps3d/axis3d_front.xpm" |
|||
#include "bitmaps3d/axis3d_back.xpm" |
|||
@ -0,0 +1,27 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char * axis3d_xpm[]; |
|||
|
|||
#else |
|||
char * axis3d_xpm[] = { |
|||
"16 15 3 1", |
|||
" c None", |
|||
". c Blue", |
|||
"x c Red", |
|||
" . ", |
|||
" ... ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" . . ", |
|||
" ............", |
|||
" . . ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" .. ", |
|||
" . ", |
|||
" " |
|||
}; |
|||
#endif |
|||
@ -0,0 +1,27 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char * axis3d_back_xpm[]; |
|||
|
|||
#else |
|||
char * axis3d_back_xpm[] = { |
|||
"16 15 3 1", |
|||
" c None", |
|||
". c Blue", |
|||
"x c Red", |
|||
" . x ", |
|||
" ... x ", |
|||
" . x ", |
|||
" . xxxxx ", |
|||
" . xxx ", |
|||
" . x ", |
|||
" . . ", |
|||
" ............", |
|||
" . . ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" .. ", |
|||
" . ", |
|||
" " |
|||
}; |
|||
#endif |
|||
@ -0,0 +1,27 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char * axis3d_bottom_xpm[]; |
|||
|
|||
#else |
|||
char * axis3d_bottom_xpm[] = { |
|||
"16 15 3 1", |
|||
" c None", |
|||
". c Blue", |
|||
"x c Red", |
|||
" . ", |
|||
" ... ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" . . ", |
|||
" ............", |
|||
" . . ", |
|||
" . x ", |
|||
" . xxx ", |
|||
" . xxxxx ", |
|||
" .. x ", |
|||
" . x ", |
|||
" x " |
|||
}; |
|||
#endif |
|||
@ -0,0 +1,27 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char * axis3d_front_xpm[]; |
|||
|
|||
#else |
|||
char * axis3d_front_xpm[] = { |
|||
"16 15 3 1", |
|||
" c None", |
|||
". c Blue", |
|||
"x c Red", |
|||
" . ", |
|||
" ... ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" . . ", |
|||
" ............", |
|||
" . x . ", |
|||
" . xxx ", |
|||
" . xxxxx ", |
|||
" . x ", |
|||
" .. x ", |
|||
" . x ", |
|||
" " |
|||
}; |
|||
#endif |
|||
@ -0,0 +1,27 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char * axis3d_left_xpm[]; |
|||
|
|||
#else |
|||
char * axis3d_left_xpm[] = { |
|||
"16 15 3 1", |
|||
" c None", |
|||
". c Blue", |
|||
"x c Red", |
|||
" . ", |
|||
" ... ", |
|||
" . ", |
|||
" . ", |
|||
" x. ", |
|||
" xx ", |
|||
"xxxxxx . ", |
|||
" xx...........", |
|||
" x . ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" .. ", |
|||
" . ", |
|||
" " |
|||
}; |
|||
#endif |
|||
@ -0,0 +1,27 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char * axis3d_right_xpm[]; |
|||
|
|||
#else |
|||
char * axis3d_right_xpm[] = { |
|||
"16 15 3 1", |
|||
" c None", |
|||
". c Blue", |
|||
"x c Red", |
|||
" . ", |
|||
" ... ", |
|||
" . ", |
|||
" . ", |
|||
" . x ", |
|||
" . xx ", |
|||
" . xxxxxx", |
|||
" .......xx...", |
|||
" . x . ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" .. ", |
|||
" . ", |
|||
" " |
|||
}; |
|||
#endif |
|||
@ -0,0 +1,27 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char * axis3d_top_xpm[]; |
|||
|
|||
#else |
|||
char * axis3d_top_xpm[] = { |
|||
"16 15 3 1", |
|||
" c None", |
|||
". c Blue", |
|||
"x c Red", |
|||
" . x ", |
|||
" ... x ", |
|||
" . x ", |
|||
" . xxxxx ", |
|||
" . xxx ", |
|||
" . x ", |
|||
" . . ", |
|||
" ............", |
|||
" . . ", |
|||
" . ", |
|||
" . ", |
|||
" . ", |
|||
" .. ", |
|||
" . ", |
|||
" " |
|||
}; |
|||
#endif |
|||
@ -0,0 +1,48 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char *import3d_xpm[]; |
|||
|
|||
#else |
|||
char *import3d_xpm[] = { |
|||
/* columns rows colors chars-per-pixel */ |
|||
"16 15 3 1", |
|||
"- c Black", |
|||
"X c None", |
|||
"o c Green", |
|||
|
|||
/* pixels */ |
|||
"XXXXXXXXXXXXXXXX", |
|||
"----------------", |
|||
"-oooooooooooooo-", |
|||
"X-oooooooooooo-X", |
|||
"X-oooooooooooo-X", |
|||
"XX-oooooooooo-XX", |
|||
"XX-oooooooooo-XX", |
|||
"----oooooooo----", |
|||
"X-oooooooooooo-X", |
|||
"XX-oooooooooo-XX", |
|||
"XXX-oooooooo-XXX", |
|||
"XXXX-oooooo-XXXX", |
|||
"XXXXX-oooo-XXXXX", |
|||
"XXXXXX-oo-XXXXXX", |
|||
"XXXXXXX--XXXXXXX" |
|||
|
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX", |
|||
"XXXXXXXXXXXXXXXX" |
|||
|
|||
}; |
|||
#endif |
|||
|
|||
@ -0,0 +1,32 @@ |
|||
/* XPM */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char *rotate_pos_X_xpm[]; |
|||
|
|||
#else |
|||
char *rotate_pos_X_xpm[] = { |
|||
/* width height num_colors chars_per_pixel */ |
|||
" 16 15 4 1", |
|||
/* colors */ |
|||
". c #000080", |
|||
"# c #c0c0c0", |
|||
"a c #808080", |
|||
"o c #008000", |
|||
/* pixels */ |
|||
"##oo###oo#######", |
|||
"###oo#oo########", |
|||
"####ooo#########", |
|||
"###oo#oo########", |
|||
"##oo###oo...a###", |
|||
"##.###...###.a##", |
|||
"##..#.#######.##", |
|||
"##...########.##", |
|||
"##....#######.##", |
|||
"##.....#####.a##", |
|||
"###########a.###", |
|||
"################", |
|||
"################", |
|||
"################", |
|||
"################" |
|||
}; |
|||
|
|||
#endif |
|||
@ -0,0 +1,32 @@ |
|||
/* XPM */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char *rotate_pos_Y_xpm[]; |
|||
|
|||
#else |
|||
char *rotate_pos_Y_xpm[] = { |
|||
/* width height num_colors chars_per_pixel */ |
|||
" 16 15 4 1", |
|||
/* colors */ |
|||
". c #000080", |
|||
"# c #c0c0c0", |
|||
"a c #808080", |
|||
"o c #FF0000", |
|||
/* pixels */ |
|||
"##oo###oo#######", |
|||
"###oo#oo########", |
|||
"####ooo#########", |
|||
"####oo##########", |
|||
"o##oo...########", |
|||
"#oo.####..###.##", |
|||
"##.#######.#..##", |
|||
"##.########...##", |
|||
"##.#######....##", |
|||
"##a.#####.....##", |
|||
"###.a###########", |
|||
"################", |
|||
"################", |
|||
"################", |
|||
"################" |
|||
}; |
|||
#endif |
|||
|
|||
@ -0,0 +1,32 @@ |
|||
/* XPM */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char *rotate_pos_Z_xpm[]; |
|||
|
|||
#else |
|||
char *rotate_pos_Z_xpm[] = { |
|||
/* width height num_colors chars_per_pixel */ |
|||
" 16 15 4 1", |
|||
/* colors */ |
|||
". c #000080", |
|||
"# c #c0c0c0", |
|||
"a c #808080", |
|||
"o c #008000", |
|||
/* pixels */ |
|||
"###oooooo#######", |
|||
"######oo########", |
|||
"#####oo#########", |
|||
"####oo##########", |
|||
"###oooooo...a###", |
|||
"##.###..####.a##", |
|||
"##..#.#######.##", |
|||
"##...########.##", |
|||
"##....#######.##", |
|||
"##.....#####.a##", |
|||
"###########a.###", |
|||
"################", |
|||
"################", |
|||
"################", |
|||
"################" |
|||
}; |
|||
|
|||
#endif |
|||
@ -0,0 +1,32 @@ |
|||
/* XPM */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char *rotate_neg_X_xpm[]; |
|||
|
|||
#else |
|||
char *rotate_neg_X_xpm[] = { |
|||
/* width height num_colors chars_per_pixel */ |
|||
" 16 15 4 1", |
|||
/* colors */ |
|||
". c #000080", |
|||
"# c #c0c0c0", |
|||
"a c #808080", |
|||
"o c #004000", |
|||
/* pixels */ |
|||
"##oo###oo#######", |
|||
"###oo#oo########", |
|||
"####ooo#########", |
|||
"###oo#oo########", |
|||
"##oo...oo#######", |
|||
"##a.####..###.##", |
|||
"##.#######.#..##", |
|||
"##.########...##", |
|||
"##.#######....##", |
|||
"##a.#####.....##", |
|||
"###.a###########", |
|||
"################", |
|||
"################", |
|||
"################", |
|||
"################" |
|||
}; |
|||
#endif |
|||
|
|||
@ -0,0 +1,32 @@ |
|||
/* XPM */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char *rotate_neg_Y_xpm[]; |
|||
|
|||
#else |
|||
char *rotate_neg_Y_xpm[] = { |
|||
/* width height num_colors chars_per_pixel */ |
|||
" 16 15 4 1", |
|||
/* colors */ |
|||
". c #000080", |
|||
"# c #c0c0c0", |
|||
"a c #808080", |
|||
"o c #FF0000", |
|||
/* pixels */ |
|||
"##oo###oo#######", |
|||
"###oo#oo########", |
|||
"####ooo#########", |
|||
"####oo##########", |
|||
"o##oo###....a###", |
|||
"#oo###..####.a##", |
|||
"##..#.#######.##", |
|||
"##...########.##", |
|||
"##....#######.##", |
|||
"##.....#####.a##", |
|||
"###########a.###", |
|||
"################", |
|||
"################", |
|||
"################", |
|||
"################" |
|||
}; |
|||
|
|||
#endif |
|||
@ -0,0 +1,32 @@ |
|||
/* XPM */ |
|||
#ifndef XPM_3D_MAIN |
|||
extern char *rotate_neg_Z_xpm[]; |
|||
|
|||
#else |
|||
char *rotate_neg_Z_xpm[] = { |
|||
/* width height num_colors chars_per_pixel */ |
|||
" 16 15 4 1", |
|||
/* colors */ |
|||
". c #000080", |
|||
"# c #c0c0c0", |
|||
"a c #808080", |
|||
"o c #008000", |
|||
/* pixels */ |
|||
"###oooooo#######", |
|||
"######oo########", |
|||
"#####oo#########", |
|||
"####oo##########", |
|||
"###oooooo#######", |
|||
"##a.####..###.##", |
|||
"##.#######.#..##", |
|||
"##.########...##", |
|||
"##.#######....##", |
|||
"##a.#####.....##", |
|||
"###.a###########", |
|||
"################", |
|||
"################", |
|||
"################", |
|||
"################" |
|||
}; |
|||
#endif |
|||
|
|||
@ -0,0 +1,28 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPMMAIN |
|||
extern char * zoomoins3d_xpm[]; |
|||
|
|||
#else |
|||
char * zoomoins3d_xpm[] = { |
|||
"16 16 3 1", |
|||
" c None", |
|||
". c Black", |
|||
"X c Gray100", |
|||
" .... ", |
|||
" ..XXXX.. ", |
|||
" .XXXXXXXX. ", |
|||
" .XXXXXXXX. ", |
|||
".XXXXXXXXXX. ", |
|||
".XX......XX. ", |
|||
".XX......XX. ", |
|||
".XXXXXXXXXX. ", |
|||
" .XXXXXXXX. ", |
|||
" .XXXXXXXX. ", |
|||
" ..XXXX... ", |
|||
" .... ... ", |
|||
" ... ", |
|||
" ... ", |
|||
" ... ", |
|||
" .. " |
|||
}; |
|||
#endif |
|||
@ -0,0 +1,32 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPMMAIN |
|||
extern char * zoompage3d_xpm[]; |
|||
|
|||
#else |
|||
char *zoompage3d_xpm[] = { |
|||
/* columns rows colors chars-per-pixel */ |
|||
"16 15 5 1", |
|||
" c Black", |
|||
". c None", |
|||
"X c Gray100", |
|||
"o c #808080", |
|||
"O c Cyan", |
|||
/* pixels */ |
|||
" .......", |
|||
" XXXXXXX ......", |
|||
" XXXXXXX . .....", |
|||
" XXXXXXX ....", |
|||
" XXXXXXXXXX ....", |
|||
" XXXXXXX ....", |
|||
" XXXXXX o..o ...", |
|||
" XXXXX oOO.oo ..", |
|||
" XXXXX .O..o. ..", |
|||
" XXXXX ....o. ..", |
|||
" XXXXX o..Ooo ..", |
|||
" XXXXXX o..o o..", |
|||
" XXXXXXX o .", |
|||
" XXXXXXXXXX . ", |
|||
" .. " |
|||
}; |
|||
#endif |
|||
|
|||
@ -0,0 +1,29 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPMMAIN |
|||
extern char * zoomplus3d_xpm[]; |
|||
|
|||
#else |
|||
char * zoomplus3d_xpm[] = { |
|||
"16 16 3 1", |
|||
" c None", |
|||
". c Black", |
|||
"X c Gray100", |
|||
" .... ", |
|||
" ..XXXX.. ", |
|||
" .XXXXXXXX. ", |
|||
" .XXX..XXX. ", |
|||
".XXXX..XXXX. ", |
|||
".XX......XX. ", |
|||
".XX......XX. ", |
|||
".XXXX..XXXX. ", |
|||
" .XXX..XXX. ", |
|||
" .XXXXXXXX. ", |
|||
" ..XXXX... ", |
|||
" .... ... ", |
|||
" ... ", |
|||
" ... ", |
|||
" ... ", |
|||
" .. " |
|||
}; |
|||
#endif |
|||
|
|||
@ -0,0 +1,29 @@ |
|||
/* XPM bitmap */ |
|||
#ifndef XPMMAIN |
|||
extern char * zoomrefr3d_xpm[]; |
|||
|
|||
#else |
|||
char * zoomrefr3d_xpm[] = { |
|||
"16 16 3 1", |
|||
" c None", |
|||
". c #0000A0", |
|||
"X c #C0C0A0", |
|||
" .... ", |
|||
" ..XXXX.. ", |
|||
" .XXXXXXXX. ", |
|||
" .XXXXXXXX. ", |
|||
".XXXXXXXXXX. ", |
|||
".XXXXXXXXXX. ", |
|||
".XXXXXXXXXX. ", |
|||
".XXXXXXXXXX. ", |
|||
" .XXXXXXXX. ", |
|||
" .XXXXXXXX. ", |
|||
" ..XXXX... ", |
|||
" .... ... ", |
|||
" ... ", |
|||
" ... ", |
|||
" ... ", |
|||
" .. " |
|||
}; |
|||
#endif |
|||
|
|||
@ -0,0 +1,24 @@ |
|||
WXDIR = $(WXWIN) |
|||
|
|||
TARGET=3d-viewer |
|||
DLLSUFF=.dll |
|||
|
|||
include ../libs.win |
|||
|
|||
DLLGEN=dllwrap --export-all --output-def $(TARGET).def --implib lib$(TARGET).a --driver-name c++ |
|||
|
|||
all: $(TARGET).a |
|||
|
|||
include makefile.include |
|||
|
|||
|
|||
$(TARGET).a: $(OBJECTS3D) |
|||
ar ruv $@ $(OBJECTS3D) |
|||
ranlib $@ |
|||
|
|||
|
|||
clean : |
|||
rm -f *.o |
|||
rm -f *.bak |
|||
rm -f $(TARGET).a |
|||
|
|||
@ -0,0 +1,35 @@ |
|||
## Makefile for 3d-viewer.a ( wxGTK - LINUX ) |
|||
CC = gcc |
|||
|
|||
# Compiler flags. |
|||
|
|||
CPPFLAGS = -Wall -O2 -DPCBNEW -I../pcbnew -I ../include -I../common\ |
|||
`wx-config --cxxflags` |
|||
|
|||
|
|||
include ../libs.linux |
|||
|
|||
TARGET = 3d-viewer |
|||
|
|||
FINAL = 1 |
|||
|
|||
all: $(TARGET).a |
|||
|
|||
include makefile.include |
|||
|
|||
|
|||
$(TARGET).a: $(OBJECTS3D) makefile.gtk makefile.include |
|||
rm -f $@ |
|||
ar -rv $@ $(OBJECTS3D) |
|||
ranlib $@ |
|||
|
|||
|
|||
clean: |
|||
rm -f *.o |
|||
rm -f *.exe |
|||
rm -f *.res |
|||
rm -f *.map |
|||
rm -f $(TARGET).a |
|||
|
|||
|
|||
|
|||
@ -0,0 +1,28 @@ |
|||
EXTRALIBS = |
|||
EXTRACPPFLAGS= -I./ -I../include -I../common -I../pcbnew |
|||
|
|||
OBJECTS3D = 3d_frame.o 3d_read_mesh.o 3d_canvas.o trackball.o 3d_aux.o\ |
|||
3d_draw.o 3d_toolbar.o 3d_class.o |
|||
|
|||
|
|||
OBJECTS= ../common/trigo.o |
|||
|
|||
AUXLIBS= -mthreads -o $(TARGET)$(DLLSUFF)\ |
|||
$(WXLIB_BASE) $(LIBS3D)\ |
|||
-lrpcrt4 -loleaut32 -lole32 -luuid -lwinspool -lwinmm\ |
|||
-lshell32 -lcomctl32 -lcomdlg32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32 |
|||
|
|||
3d_class.o: 3d_class.cpp 3d_struct.h 3d_viewer.h |
|||
|
|||
3d_read_mesh.o: 3d_read_mesh.cpp 3d_struct.h 3d_viewer.h |
|||
|
|||
3d_frame.o: 3d_frame.cpp 3d_viewer.h |
|||
|
|||
3d_canvas.o: 3d_canvas.cpp 3d_viewer.h |
|||
|
|||
3d_aux.o: 3d_aux.cpp 3d_viewer.h |
|||
|
|||
3d_draw.o: 3d_draw.cpp 3d_viewer.h 3d_struct.h |
|||
|
|||
3d_toolbar.o: 3d_toolbar.cpp 3d_viewer.h |
|||
|
|||
@ -0,0 +1,35 @@ |
|||
## Makefile for 3d-viewer.a ( wxMAC - mac os X) |
|||
CC = gcc |
|||
|
|||
# Compiler flags. |
|||
|
|||
CPPFLAGS = -Wall -O2 -DPCBNEW -I../pcbnew -I ../include -I../common\ |
|||
`wx-config --cxxflags` |
|||
|
|||
|
|||
include ../libs.macosx |
|||
|
|||
TARGET = 3d-viewer |
|||
|
|||
FINAL = 1 |
|||
|
|||
all: $(TARGET).a |
|||
|
|||
include makefile.include |
|||
|
|||
|
|||
$(TARGET).a: $(OBJECTS3D) makefile.gtk makefile.include |
|||
rm -f $@ |
|||
ar -rv $@ $(OBJECTS3D) |
|||
ranlib $@ |
|||
|
|||
|
|||
clean: |
|||
rm -f *.o |
|||
rm -f *.exe |
|||
rm -f *.res |
|||
rm -f *.map |
|||
rm -f $(TARGET).a |
|||
|
|||
|
|||
|
|||
@ -0,0 +1,324 @@ |
|||
/*
|
|||
* (c) Copyright 1993, 1994, Silicon Graphics, Inc. |
|||
* ALL RIGHTS RESERVED |
|||
* Permission to use, copy, modify, and distribute this software for |
|||
* any purpose and without fee is hereby granted, provided that the above |
|||
* copyright notice appear in all copies and that both the copyright notice |
|||
* and this permission notice appear in supporting documentation, and that |
|||
* the name of Silicon Graphics, Inc. not be used in advertising |
|||
* or publicity pertaining to distribution of the software without specific, |
|||
* written prior permission. |
|||
* |
|||
* THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" |
|||
* AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, |
|||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR |
|||
* FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON |
|||
* GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, |
|||
* SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY |
|||
* KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, |
|||
* LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF |
|||
* THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN |
|||
* ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON |
|||
* ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE |
|||
* POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. |
|||
* |
|||
* US Government Users Restricted Rights |
|||
* Use, duplication, or disclosure by the Government is subject to |
|||
* restrictions set forth in FAR 52.227.19(c)(2) or subparagraph |
|||
* (c)(1)(ii) of the Rights in Technical Data and Computer Software |
|||
* clause at DFARS 252.227-7013 and/or in similar or successor |
|||
* clauses in the FAR or the DOD or NASA FAR Supplement. |
|||
* Unpublished-- rights reserved under the copyright laws of the |
|||
* United States. Contractor/manufacturer is Silicon Graphics, |
|||
* Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. |
|||
* |
|||
* OpenGL(TM) is a trademark of Silicon Graphics, Inc. |
|||
*/ |
|||
/*
|
|||
* Trackball code: |
|||
* |
|||
* Implementation of a virtual trackball. |
|||
* Implemented by Gavin Bell, lots of ideas from Thant Tessman and |
|||
* the August '88 issue of Siggraph's "Computer Graphics," pp. 121-129. |
|||
* |
|||
* Vector manip code: |
|||
* |
|||
* Original code from: |
|||
* David M. Ciemiewicz, Mark Grossman, Henry Moreton, and Paul Haeberli |
|||
* |
|||
* Much mucking with by: |
|||
* Gavin Bell |
|||
*/ |
|||
#include <math.h>
|
|||
#include "trackball.h"
|
|||
|
|||
/*
|
|||
* This size should really be based on the distance from the center of |
|||
* rotation to the point on the object underneath the mouse. That |
|||
* point would then track the mouse as closely as possible. This is a |
|||
* simple example, though, so that is left as an Exercise for the |
|||
* Programmer. |
|||
*/ |
|||
#define TRACKBALLSIZE (0.8f)
|
|||
|
|||
/*
|
|||
* Local function prototypes (not defined in trackball.h) |
|||
*/ |
|||
static float tb_project_to_sphere(float, float, float); |
|||
static void normalize_quat(float [4]); |
|||
|
|||
void |
|||
vzero(float *v) |
|||
{ |
|||
v[0] = 0.0; |
|||
v[1] = 0.0; |
|||
v[2] = 0.0; |
|||
} |
|||
|
|||
void |
|||
vset(float *v, float x, float y, float z) |
|||
{ |
|||
v[0] = x; |
|||
v[1] = y; |
|||
v[2] = z; |
|||
} |
|||
|
|||
void |
|||
vsub(const float *src1, const float *src2, float *dst) |
|||
{ |
|||
dst[0] = src1[0] - src2[0]; |
|||
dst[1] = src1[1] - src2[1]; |
|||
dst[2] = src1[2] - src2[2]; |
|||
} |
|||
|
|||
void |
|||
vcopy(const float *v1, float *v2) |
|||
{ |
|||
register int i; |
|||
for (i = 0 ; i < 3 ; i++) |
|||
v2[i] = v1[i]; |
|||
} |
|||
|
|||
void |
|||
vcross(const float *v1, const float *v2, float *cross) |
|||
{ |
|||
float temp[3]; |
|||
|
|||
temp[0] = (v1[1] * v2[2]) - (v1[2] * v2[1]); |
|||
temp[1] = (v1[2] * v2[0]) - (v1[0] * v2[2]); |
|||
temp[2] = (v1[0] * v2[1]) - (v1[1] * v2[0]); |
|||
vcopy(temp, cross); |
|||
} |
|||
|
|||
float |
|||
vlength(const float *v) |
|||
{ |
|||
return (float) sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]); |
|||
} |
|||
|
|||
void |
|||
vscale(float *v, float div) |
|||
{ |
|||
v[0] *= div; |
|||
v[1] *= div; |
|||
v[2] *= div; |
|||
} |
|||
|
|||
void |
|||
vnormal(float *v) |
|||
{ |
|||
vscale(v, 1.0f/vlength(v)); |
|||
} |
|||
|
|||
float |
|||
vdot(const float *v1, const float *v2) |
|||
{ |
|||
return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; |
|||
} |
|||
|
|||
void |
|||
vadd(const float *src1, const float *src2, float *dst) |
|||
{ |
|||
dst[0] = src1[0] + src2[0]; |
|||
dst[1] = src1[1] + src2[1]; |
|||
dst[2] = src1[2] + src2[2]; |
|||
} |
|||
|
|||
/*
|
|||
* Ok, simulate a track-ball. Project the points onto the virtual |
|||
* trackball, then figure out the axis of rotation, which is the cross |
|||
* product of P1 P2 and O P1 (O is the center of the ball, 0,0,0) |
|||
* Note: This is a deformed trackball-- is a trackball in the center, |
|||
* but is deformed into a hyperbolic sheet of rotation away from the |
|||
* center. This particular function was chosen after trying out |
|||
* several variations. |
|||
* |
|||
* It is assumed that the arguments to this routine are in the range |
|||
* (-1.0 ... 1.0) |
|||
*/ |
|||
void |
|||
trackball(float q[4], float p1x, float p1y, float p2x, float p2y) |
|||
{ |
|||
float a[3]; /* Axis of rotation */ |
|||
float phi; /* how much to rotate about axis */ |
|||
float p1[3], p2[3], d[3]; |
|||
float t; |
|||
|
|||
if (p1x == p2x && p1y == p2y) { |
|||
/* Zero rotation */ |
|||
vzero(q); |
|||
q[3] = 1.0; |
|||
return; |
|||
} |
|||
|
|||
/*
|
|||
* First, figure out z-coordinates for projection of P1 and P2 to |
|||
* deformed sphere |
|||
*/ |
|||
vset(p1, p1x, p1y, tb_project_to_sphere(TRACKBALLSIZE, p1x, p1y)); |
|||
vset(p2, p2x, p2y, tb_project_to_sphere(TRACKBALLSIZE, p2x, p2y)); |
|||
|
|||
/*
|
|||
* Now, we want the cross product of P1 and P2 |
|||
*/ |
|||
vcross(p2,p1,a); |
|||
|
|||
/*
|
|||
* Figure out how much to rotate around that axis. |
|||
*/ |
|||
vsub(p1, p2, d); |
|||
t = vlength(d) / (2.0f*TRACKBALLSIZE); |
|||
|
|||
/*
|
|||
* Avoid problems with out-of-control values... |
|||
*/ |
|||
if (t > 1.0) t = 1.0; |
|||
if (t < -1.0) t = -1.0; |
|||
phi = 2.0f * (float) asin(t); |
|||
|
|||
axis_to_quat(a,phi,q); |
|||
} |
|||
|
|||
/*
|
|||
* Given an axis and angle, compute quaternion. |
|||
*/ |
|||
void |
|||
axis_to_quat(float a[3], float phi, float q[4]) |
|||
{ |
|||
vnormal(a); |
|||
vcopy(a, q); |
|||
vscale(q, (float) sin(phi/2.0)); |
|||
q[3] = (float) cos(phi/2.0); |
|||
} |
|||
|
|||
/*
|
|||
* Project an x,y pair onto a sphere of radius r OR a hyperbolic sheet |
|||
* if we are away from the center of the sphere. |
|||
*/ |
|||
static float |
|||
tb_project_to_sphere(float r, float x, float y) |
|||
{ |
|||
float d, t, z; |
|||
|
|||
d = (float) sqrt(x*x + y*y); |
|||
if (d < r * 0.70710678118654752440) { /* Inside sphere */ |
|||
z = (float) sqrt(r*r - d*d); |
|||
} else { /* On hyperbola */ |
|||
t = r / 1.41421356237309504880f; |
|||
z = t*t / d; |
|||
} |
|||
return z; |
|||
} |
|||
|
|||
/*
|
|||
* Given two rotations, e1 and e2, expressed as quaternion rotations, |
|||
* figure out the equivalent single rotation and stuff it into dest. |
|||
* |
|||
* This routine also normalizes the result every RENORMCOUNT times it is |
|||
* called, to keep error from creeping in. |
|||
* |
|||
* NOTE: This routine is written so that q1 or q2 may be the same |
|||
* as dest (or each other). |
|||
*/ |
|||
|
|||
#define RENORMCOUNT 97
|
|||
|
|||
void |
|||
add_quats(float q1[4], float q2[4], float dest[4]) |
|||
{ |
|||
static int count=0; |
|||
float t1[4], t2[4], t3[4]; |
|||
float tf[4]; |
|||
|
|||
vcopy(q1,t1); |
|||
vscale(t1,q2[3]); |
|||
|
|||
vcopy(q2,t2); |
|||
vscale(t2,q1[3]); |
|||
|
|||
vcross(q2,q1,t3); |
|||
vadd(t1,t2,tf); |
|||
vadd(t3,tf,tf); |
|||
tf[3] = q1[3] * q2[3] - vdot(q1,q2); |
|||
|
|||
dest[0] = tf[0]; |
|||
dest[1] = tf[1]; |
|||
dest[2] = tf[2]; |
|||
dest[3] = tf[3]; |
|||
|
|||
if (++count > RENORMCOUNT) { |
|||
count = 0; |
|||
normalize_quat(dest); |
|||
} |
|||
} |
|||
|
|||
/*
|
|||
* Quaternions always obey: a^2 + b^2 + c^2 + d^2 = 1.0 |
|||
* If they don't add up to 1.0, dividing by their magnitued will |
|||
* renormalize them. |
|||
* |
|||
* Note: See the following for more information on quaternions: |
|||
* |
|||
* - Shoemake, K., Animating rotation with quaternion curves, Computer |
|||
* Graphics 19, No 3 (Proc. SIGGRAPH'85), 245-254, 1985. |
|||
* - Pletinckx, D., Quaternion calculus as a basic tool in computer |
|||
* graphics, The Visual Computer 5, 2-13, 1989. |
|||
*/ |
|||
static void |
|||
normalize_quat(float q[4]) |
|||
{ |
|||
int i; |
|||
float mag; |
|||
|
|||
mag = (q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]); |
|||
for (i = 0; i < 4; i++) q[i] /= mag; |
|||
} |
|||
|
|||
/*
|
|||
* Build a rotation matrix, given a quaternion rotation. |
|||
* |
|||
*/ |
|||
void |
|||
build_rotmatrix(float m[4][4], float q[4]) |
|||
{ |
|||
m[0][0] = 1.0f - 2.0f * (q[1] * q[1] + q[2] * q[2]); |
|||
m[0][1] = 2.0f * (q[0] * q[1] - q[2] * q[3]); |
|||
m[0][2] = 2.0f * (q[2] * q[0] + q[1] * q[3]); |
|||
m[0][3] = 0.0f; |
|||
|
|||
m[1][0] = 2.0f * (q[0] * q[1] + q[2] * q[3]); |
|||
m[1][1]= 1.0f - 2.0f * (q[2] * q[2] + q[0] * q[0]); |
|||
m[1][2] = 2.0f * (q[1] * q[2] - q[0] * q[3]); |
|||
m[1][3] = 0.0f; |
|||
|
|||
m[2][0] = 2.0f * (q[2] * q[0] - q[1] * q[3]); |
|||
m[2][1] = 2.0f * (q[1] * q[2] + q[0] * q[3]); |
|||
m[2][2] = 1.0f - 2.0f * (q[1] * q[1] + q[0] * q[0]); |
|||
m[2][3] = 0.0f; |
|||
|
|||
m[3][0] = 0.0f; |
|||
m[3][1] = 0.0f; |
|||
m[3][2] = 0.0f; |
|||
m[3][3] = 1.0f; |
|||
} |
|||
|
|||
@ -0,0 +1,78 @@ |
|||
/* |
|||
* (c) Copyright 1993, 1994, Silicon Graphics, Inc. |
|||
* ALL RIGHTS RESERVED |
|||
* Permission to use, copy, modify, and distribute this software for |
|||
* any purpose and without fee is hereby granted, provided that the above |
|||
* copyright notice appear in all copies and that both the copyright notice |
|||
* and this permission notice appear in supporting documentation, and that |
|||
* the name of Silicon Graphics, Inc. not be used in advertising |
|||
* or publicity pertaining to distribution of the software without specific, |
|||
* written prior permission. |
|||
* |
|||
* THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS" |
|||
* AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE, |
|||
* INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR |
|||
* FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON |
|||
* GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, |
|||
* SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY |
|||
* KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION, |
|||
* LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF |
|||
* THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN |
|||
* ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON |
|||
* ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE |
|||
* POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE. |
|||
* |
|||
* US Government Users Restricted Rights |
|||
* Use, duplication, or disclosure by the Government is subject to |
|||
* restrictions set forth in FAR 52.227.19(c)(2) or subparagraph |
|||
* (c)(1)(ii) of the Rights in Technical Data and Computer Software |
|||
* clause at DFARS 252.227-7013 and/or in similar or successor |
|||
* clauses in the FAR or the DOD or NASA FAR Supplement. |
|||
* Unpublished-- rights reserved under the copyright laws of the |
|||
* United States. Contractor/manufacturer is Silicon Graphics, |
|||
* Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311. |
|||
* |
|||
* OpenGL(TM) is a trademark of Silicon Graphics, Inc. |
|||
*/ |
|||
/* |
|||
* trackball.h |
|||
* A virtual trackball implementation |
|||
* Written by Gavin Bell for Silicon Graphics, November 1988. |
|||
*/ |
|||
|
|||
/* |
|||
* Pass the x and y coordinates of the last and current positions of |
|||
* the mouse, scaled so they are from (-1.0 ... 1.0). |
|||
* |
|||
* The resulting rotation is returned as a quaternion rotation in the |
|||
* first paramater. |
|||
*/ |
|||
void |
|||
trackball(float q[4], float p1x, float p1y, float p2x, float p2y); |
|||
|
|||
/* |
|||
* Given two quaternions, add them together to get a third quaternion. |
|||
* Adding quaternions to get a compound rotation is analagous to adding |
|||
* translations to get a compound translation. When incrementally |
|||
* adding rotations, the first argument here should be the new |
|||
* rotation, the second and third the total rotation (which will be |
|||
* over-written with the resulting new total rotation). |
|||
*/ |
|||
void |
|||
add_quats(float *q1, float *q2, float *dest); |
|||
|
|||
/* |
|||
* A useful function, builds a rotation matrix in Matrix based on |
|||
* given quaternion. |
|||
*/ |
|||
void |
|||
build_rotmatrix(float m[4][4], float q[4]); |
|||
|
|||
/* |
|||
* This function computes a quaternion based on an axis (defined by |
|||
* the given vector) and an angle about which to rotate. The angle is |
|||
* expressed in radians. The result is put into the third argument. |
|||
*/ |
|||
void |
|||
axis_to_quat(float a[3], float phi, float q[4]); |
|||
|
|||
@ -0,0 +1,28 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *show_3d_xpm[]; |
|||
|
|||
#else |
|||
char *show_3d_xpm[] = { |
|||
/* columns rows colors chars-per-pixel */ |
|||
"16 15 3 1", |
|||
"J c #FF0000", |
|||
"x c #0000FF", |
|||
". c none", |
|||
"................", |
|||
"..JJJJ...JJ.....", |
|||
".JJJJJJ..JJJJ...", |
|||
".JJ..JJ..JJ.JJ..", |
|||
".....JJ..JJ..JJ.", |
|||
"..JJJJ...JJ...JJ", |
|||
"..JJJJJ..JJ...JJ", |
|||
".....JJ..JJ...JJ", |
|||
".JJ..JJ..JJ..JJJ", |
|||
".JJJJJJ..JJJJJJ.", |
|||
"..JJJJ....JJJJ.x", |
|||
"..........xxxxxx", |
|||
".....xxxxxx.....", |
|||
"xxxxxx..........", |
|||
"x..............." |
|||
}; |
|||
#endif |
|||
@ -0,0 +1,72 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_arc_xpm[]; |
|||
|
|||
#else |
|||
char * add_arc_xpm[] = { |
|||
"16 16 48 1", |
|||
" c None", |
|||
". c #222224", |
|||
"+ c #07071F", |
|||
"@ c #000087", |
|||
"# c #00009C", |
|||
"$ c #00009B", |
|||
"% c #474747", |
|||
"& c #FEE2CA", |
|||
"* c #C59A74", |
|||
"= c #000047", |
|||
"- c #00009A", |
|||
"; c #000095", |
|||
"> c #473C33", |
|||
", c #FEBB7F", |
|||
"' c #C57B3A", |
|||
") c #000015", |
|||
"! c #000017", |
|||
"~ c #00003A", |
|||
"{ c #000075", |
|||
"] c #000097", |
|||
"^ c #000096", |
|||
"/ c #211306", |
|||
"( c #060300", |
|||
"_ c #000000", |
|||
": c #000083", |
|||
"< c #000094", |
|||
"[ c #00008D", |
|||
"} c #000090", |
|||
"| c #000055", |
|||
"1 c #000081", |
|||
"2 c #222222", |
|||
"3 c #080807", |
|||
"4 c #000091", |
|||
"5 c #00008B", |
|||
"6 c #070300", |
|||
"7 c #14141F", |
|||
"8 c #12112D", |
|||
"9 c #000059", |
|||
"0 c #161616", |
|||
"a c #F2D7C1", |
|||
"b c #F2BD8E", |
|||
"c c #120C10", |
|||
"d c #161210", |
|||
"e c #F2B279", |
|||
"f c #F29747", |
|||
"g c #130901", |
|||
"h c #140B04", |
|||
"i c #140900", |
|||
" ", |
|||
" .+@#$#$ ", |
|||
" %&*=$$$$-; ", |
|||
" >,')! ~{]$^ ", |
|||
" /(_ :$< ", |
|||
" [$} ", |
|||
" ]$| ", |
|||
" -$1 ", |
|||
" 23 $4 ", |
|||
" %&*_ $; ", |
|||
" >,'_ $5 ", |
|||
" /6 789 ", |
|||
" 0abc ", |
|||
" defg ", |
|||
" hi_ ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,60 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_circle_xpm[]; |
|||
|
|||
#else |
|||
char * add_circle_xpm[] = { |
|||
"16 16 36 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000096", |
|||
"@ c #00008C", |
|||
"# c #000053", |
|||
"$ c #00008A", |
|||
"% c #00009A", |
|||
"& c #000073", |
|||
"* c #00007A", |
|||
"= c #000092", |
|||
"- c #00006F", |
|||
"; c #161616", |
|||
"> c #161513", |
|||
", c #12122F", |
|||
"' c #121125", |
|||
") c #F2D7C1", |
|||
"! c #F2BD8E", |
|||
"~ c #140D08", |
|||
"{ c #151519", |
|||
"] c #130D07", |
|||
"^ c #161210", |
|||
"/ c #F2B279", |
|||
"( c #F29747", |
|||
"_ c #140A01", |
|||
": c #151213", |
|||
"< c #130901", |
|||
"[ c #140B04", |
|||
"} c #140900", |
|||
"| c #000000", |
|||
"1 c #120A18", |
|||
"2 c #12080C", |
|||
"3 c #00003F", |
|||
"4 c #000094", |
|||
"5 c #000044", |
|||
"6 c #000083", |
|||
"7 c #00006A", |
|||
" .... ", |
|||
" .......+ ", |
|||
" ..@# #$.% ", |
|||
" ..& *.= ", |
|||
" .@ =.- ", |
|||
"..# ;> ,' ", |
|||
".. ;)!~ {)!] ", |
|||
".. ^/(_ :/(< ", |
|||
"..# [}| 12| ", |
|||
" .$ .@3| ", |
|||
" +.* ..4 ", |
|||
" %.= ..%5 ", |
|||
" =......45 ", |
|||
" -64467 ", |
|||
" ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,91 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_component_xpm[]; |
|||
|
|||
#else |
|||
char * add_component_xpm[] = { |
|||
"16 16 67 1", |
|||
" c None", |
|||
"! c black", |
|||
"# c #D72E2E", |
|||
"$ c #D72F2F", |
|||
"% c #D62E2E", |
|||
"& c #D83434", |
|||
"' c #FEFEFF", |
|||
"( c #FBFBFF", |
|||
") c #F6F6FF", |
|||
"* c #F1F1FF", |
|||
"+ c #EBE9FC", |
|||
", c #E3C3D7", |
|||
"- c #DA6C77", |
|||
". c #D13838", |
|||
"0 c #FF0000", |
|||
"1 c #FAFAFF", |
|||
"2 c #F5F5FF", |
|||
"3 c #F0F0FF", |
|||
"4 c #EBEBFF", |
|||
"5 c #E6E6FF", |
|||
"6 c #E1E1FF", |
|||
"7 c #DBDBFF", |
|||
"8 c #D6555F", |
|||
"9 c #BD5C5C", |
|||
": c #9B9B9B", |
|||
"; c #F4F4FF", |
|||
"< c #EFEFFF", |
|||
"= c #EAEAFF", |
|||
"> c #E5E5FF", |
|||
"? c #E0E0FF", |
|||
"@ c #D6D6FF", |
|||
"A c #D390AC", |
|||
"B c #CB4444", |
|||
"C c #E4E4FF", |
|||
"D c #DFDFFF", |
|||
"E c #DADAFF", |
|||
"F c #D5D5FF", |
|||
"G c #D0D0FF", |
|||
"H c #CCB8E6", |
|||
"I c #D73334", |
|||
"J c #E9E9FF", |
|||
"K c #D4D4FF", |
|||
"L c #CFCFFF", |
|||
"M c #CACAFF", |
|||
"N c #CB8BAF", |
|||
"O c #CB4141", |
|||
"P c #E3E3FF", |
|||
"Q c #DEDEFF", |
|||
"R c #D9D9FF", |
|||
"S c #C9C9FF", |
|||
"T c #C4C4FF", |
|||
"U c #D05364", |
|||
"V c #B96262", |
|||
"W c #9C9C9C", |
|||
"X c #DDDDFF", |
|||
"Y c #D8D8FF", |
|||
"Z c #D3D3FF", |
|||
"[ c #CECEFF", |
|||
"] c #C9C7FC", |
|||
"^ c #C7A8D8", |
|||
"_ c #CE647C", |
|||
"` c #CD3E3E", |
|||
"a c #9E9595", |
|||
"b c #D62F2F", |
|||
"c c #CC4141", |
|||
"d c #BC5C5C", |
|||
"e c #9D9595", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
" ######$% ", |
|||
" &'()*+,-. ", |
|||
"0##&123456789 ", |
|||
" :&;<=>?7@AB ", |
|||
" &<=CDEFGH###0", |
|||
" IJCDEKLMNO:::", |
|||
" IPQRKLSTUVW ", |
|||
"0##IXYZ[]^_`a ", |
|||
" :#####bcde: ", |
|||
" :::::::: ", |
|||
" ", |
|||
" ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,39 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_dashed_line_xpm[]; |
|||
|
|||
#else |
|||
char * add_dashed_line_xpm[] = { |
|||
"16 16 15 1", |
|||
" c None", |
|||
". c #03039B", |
|||
"+ c #8E8E9B", |
|||
"@ c #00009B", |
|||
"# c #1F1F9B", |
|||
"$ c #93939B", |
|||
"% c #00009A", |
|||
"& c #46469A", |
|||
"* c #9B9B9B", |
|||
"= c #93939A", |
|||
"- c #16169A", |
|||
"; c #0B0B9B", |
|||
"> c #97979B", |
|||
", c #1E1E9B", |
|||
"' c #91919B", |
|||
" ", |
|||
" .+ ", |
|||
" @#$ ", |
|||
" @#$ ", |
|||
" @#$ ", |
|||
" ", |
|||
" %&* ", |
|||
" %#= ", |
|||
" %#= ", |
|||
" -= ", |
|||
" ;* ", |
|||
" @#> ", |
|||
" @#$ ", |
|||
" @,$ ", |
|||
" ' ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,34 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_entry_xpm[]; |
|||
|
|||
#else |
|||
char * add_entry_xpm[] = { |
|||
"16 16 10 1", |
|||
" c None", |
|||
". c #006800", |
|||
"+ c #006900", |
|||
"@ c #6C8B6C", |
|||
"# c #9B9B9B", |
|||
"$ c #6C8C6C", |
|||
"% c #9A9A9A", |
|||
"& c #6B8B6B", |
|||
"* c #9C9C9C", |
|||
"= c #6A8B6A", |
|||
" ", |
|||
" ", |
|||
" . ", |
|||
" +@ ", |
|||
" +@# ", |
|||
" +$% ", |
|||
" +$% ", |
|||
" +&# ", |
|||
" .&* ", |
|||
" .&* ", |
|||
" .&# ", |
|||
" +=# ", |
|||
" =# ", |
|||
" % ", |
|||
" ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,78 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_glabel_xpm[]; |
|||
|
|||
#else |
|||
char * add_glabel_xpm[] = { |
|||
"16 16 54 1", |
|||
" c None", |
|||
". c #695F00", |
|||
"+ c #837E52", |
|||
"@ c #6D640F", |
|||
"# c #6F6714", |
|||
"$ c #706818", |
|||
"% c #9C9C9C", |
|||
"& c #9191FF", |
|||
"* c #9B9BFF", |
|||
"= c #A5A5FF", |
|||
"- c #857F66", |
|||
"; c #746D25", |
|||
"> c #827D4F", |
|||
", c #7E7841", |
|||
"' c #8F8C76", |
|||
") c #9E9EFF", |
|||
"! c #A8A8FF", |
|||
"~ c #B2B2FF", |
|||
"{ c #BBBBF9", |
|||
"] c #7D7539", |
|||
"^ c #7A7437", |
|||
"/ c #95948B", |
|||
"( c #878460", |
|||
"_ c #7D773E", |
|||
": c #ACACFF", |
|||
"< c #B6B6FF", |
|||
"[ c #C0C0FF", |
|||
"} c #CACAFF", |
|||
"| c #BFBDCC", |
|||
"1 c #8C896D", |
|||
"2 c #6C6209", |
|||
"3 c #989894", |
|||
"4 c #B9B9FF", |
|||
"5 c #C3C3FF", |
|||
"6 c #CECEFF", |
|||
"7 c #D5D5F9", |
|||
"8 c #847C39", |
|||
"9 c #7B7437", |
|||
"0 c #9B9B9B", |
|||
"a c #797233", |
|||
"b c #817C4D", |
|||
"c c #756D25", |
|||
"d c #898664", |
|||
"e c #C7C7FF", |
|||
"f c #D1D1FF", |
|||
"g c #DBDBFF", |
|||
"h c #9B9566", |
|||
"i c #999997", |
|||
"j c #96958D", |
|||
"k c #86825B", |
|||
"l c #766F2B", |
|||
"m c #706716", |
|||
"n c #97968F", |
|||
"o c #9A9A9A", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
" .. ", |
|||
" ...+ ..... ", |
|||
" .@#$% .&*=-; ", |
|||
" .>,.' .)!~{]^ ", |
|||
" ../(._ .:<[}|.1", |
|||
" .....23.4567890", |
|||
"..abbc.d.efgh;i0", |
|||
"..j00k.l....mn0 ", |
|||
" o0 0o00000 ", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,84 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_junction_xpm[]; |
|||
|
|||
#else |
|||
char * add_junction_xpm[] = { |
|||
"16 16 60 1", |
|||
" c None", |
|||
". c #007D00", |
|||
"+ c #4D8B4D", |
|||
"@ c #9B9B9B", |
|||
"# c #000000", |
|||
"$ c #000700", |
|||
"% c #0A130A", |
|||
"& c #282828", |
|||
"* c #222222", |
|||
"= c #868483", |
|||
"- c #E1D5CA", |
|||
"; c #B7A595", |
|||
"> c #564A3F", |
|||
", c #080707", |
|||
"' c #151515", |
|||
") c #EAE2DB", |
|||
"! c #FFEBDA", |
|||
"~ c #FFE0C5", |
|||
"{ c #FFD5B1", |
|||
"] c #FFCA9C", |
|||
"^ c #806044", |
|||
"/ c #004C00", |
|||
"( c #645F59", |
|||
"_ c #FFE6CF", |
|||
": c #FFDBBB", |
|||
"< c #FFD0A6", |
|||
"[ c #FFC591", |
|||
"} c #FFBA7D", |
|||
"| c #E49C5D", |
|||
"1 c #000D00", |
|||
"2 c #2F552F", |
|||
"3 c #64584D", |
|||
"4 c #FFD5B0", |
|||
"5 c #FFCA9B", |
|||
"6 c #FFBF87", |
|||
"7 c #FFB472", |
|||
"8 c #FFA95D", |
|||
"9 c #E48D41", |
|||
"0 c #080F08", |
|||
"a c #757575", |
|||
"b c #16120F", |
|||
"c c #EAB485", |
|||
"d c #FFB97C", |
|||
"e c #FFAF67", |
|||
"f c #FFA453", |
|||
"g c #FF993E", |
|||
"h c #804715", |
|||
"i c #3A3A3A", |
|||
"j c #414141", |
|||
"k c #22180F", |
|||
"l c #865931", |
|||
"m c #E18B40", |
|||
"n c #B76925", |
|||
"o c #562E0A", |
|||
"p c #131110", |
|||
"q c #8E8E8E", |
|||
"r c #686868", |
|||
"s c #242424", |
|||
"t c #3F3F3F", |
|||
"u c #909090", |
|||
" .. ", |
|||
" .+@ ", |
|||
" .+@ ", |
|||
" #$%& ", |
|||
" *=-;>, ", |
|||
" ')!~{]^* ", |
|||
".../(_:<[}|1... ", |
|||
".++234567890+++@", |
|||
" @@abcdefghi@@@@", |
|||
" jklmnopq ", |
|||
" rs$%tu ", |
|||
" @.+@ ", |
|||
" .+@ ", |
|||
" .+@ ", |
|||
" .+@ ", |
|||
" @@ "}; |
|||
#endif |
|||
@ -0,0 +1,27 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_line_xpm[]; |
|||
|
|||
#else |
|||
char * add_line_xpm[] = { |
|||
"16 16 3 1", |
|||
" c None", |
|||
". c #006900", |
|||
"+ c #9B9B9B", |
|||
" ", |
|||
" ", |
|||
"...... ", |
|||
" ++++.+ ", |
|||
" .+ ", |
|||
" .+ ", |
|||
" .+ ", |
|||
" .+ ", |
|||
" .+ ", |
|||
" .+ ", |
|||
" .+ ", |
|||
" .......... ", |
|||
" ++++++++++", |
|||
" ", |
|||
" ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,48 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_line_label_xpm[]; |
|||
|
|||
#else |
|||
char * add_line_label_xpm[] = { |
|||
"16 16 24 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #020202", |
|||
"@ c #8D8D8D", |
|||
"# c #202020", |
|||
"$ c #555555", |
|||
"% c #9A9A9A", |
|||
"& c #8C8C8C", |
|||
"* c #080808", |
|||
"= c #161616", |
|||
"- c #9B9B9B", |
|||
"; c #131313", |
|||
"> c #969696", |
|||
", c #212121", |
|||
"' c #7C7C7C", |
|||
") c #414141", |
|||
"! c #515151", |
|||
"~ c #525252", |
|||
"{ c #070707", |
|||
"] c #0B0B0B", |
|||
"^ c #979797", |
|||
"/ c #1F1F1F", |
|||
"( c #6B6B6B", |
|||
"_ c #009B00", |
|||
" ", |
|||
" ..+ ", |
|||
" ..+@ ", |
|||
" .#.$% ", |
|||
" ..&*=- ", |
|||
" .;>,.' ", |
|||
" ......)- ", |
|||
" ..!~~{]^ ", |
|||
" ./-% #+( ", |
|||
" -- -- ", |
|||
" ", |
|||
"________________", |
|||
"________________", |
|||
"----------------", |
|||
" ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,78 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_polygon_xpm[]; |
|||
|
|||
#else |
|||
char * add_polygon_xpm[] = { |
|||
"16 16 54 1", |
|||
" c None", |
|||
". c #161616", |
|||
"+ c #161513", |
|||
"@ c #080808", |
|||
"# c #222222", |
|||
"$ c #F2D7C0", |
|||
"% c #F2BC8E", |
|||
"& c #120C24", |
|||
"* c #00009B", |
|||
"= c #000047", |
|||
"- c #C5C4C4", |
|||
"; c #FEE2CA", |
|||
"> c #46372A", |
|||
", c #16120F", |
|||
"' c #F2B279", |
|||
") c #F29647", |
|||
"! c #12091F", |
|||
"~ c #C5A68C", |
|||
"{ c #FEBB7F", |
|||
"] c #462B17", |
|||
"^ c #000033", |
|||
"/ c #140C04", |
|||
"( c #130900", |
|||
"_ c #000000", |
|||
": c #070402", |
|||
"< c #1F1211", |
|||
"[ c #00005E", |
|||
"} c #000091", |
|||
"| c #00008C", |
|||
"1 c #00009A", |
|||
"2 c #00005F", |
|||
"3 c #000040", |
|||
"4 c #858484", |
|||
"5 c #857D75", |
|||
"6 c #26262B", |
|||
"7 c #FFE3CB", |
|||
"8 c #FFC796", |
|||
"9 c #25190E", |
|||
"0 c #856243", |
|||
"a c #855327", |
|||
"b c #00006E", |
|||
"c c #12122F", |
|||
"d c #12112D", |
|||
"e c #F2D7C1", |
|||
"f c #F2BD8E", |
|||
"g c #130D07", |
|||
"h c #161210", |
|||
"i c #F29747", |
|||
"j c #12091E", |
|||
"k c #120F2A", |
|||
"l c #130901", |
|||
"m c #140B04", |
|||
"n c #130800", |
|||
"o c #130A04", |
|||
" .+ @# ", |
|||
".$%&**=-;> ", |
|||
",')!**=~{]^ ", |
|||
" /(__ :<[} ", |
|||
" |12 ", |
|||
" 345_ ", |
|||
" 6789 ", |
|||
" _0a_ ", |
|||
" bb_ ", |
|||
" ** ", |
|||
" ** ", |
|||
" .+ cd_ ", |
|||
" .ef&*****cefg ", |
|||
" h'ij*****k'il ", |
|||
" mn__ _on_ ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,48 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_rectangle_xpm[]; |
|||
|
|||
#else |
|||
char * add_rectangle_xpm[] = { |
|||
"16 16 24 1", |
|||
" c None", |
|||
". c #161616", |
|||
"+ c #161513", |
|||
"@ c #F2D7C0", |
|||
"# c #F2BC8E", |
|||
"$ c #120C24", |
|||
"% c #00009B", |
|||
"& c #16120F", |
|||
"* c #F2B279", |
|||
"= c #F29647", |
|||
"- c #12091F", |
|||
"; c #120A21", |
|||
"> c #12081D", |
|||
", c #000000", |
|||
"' c #12122F", |
|||
") c #12112D", |
|||
"! c #F2D7C1", |
|||
"~ c #F2BD8E", |
|||
"{ c #130D07", |
|||
"] c #120F2A", |
|||
"^ c #F29747", |
|||
"/ c #130901", |
|||
"( c #130A04", |
|||
"_ c #130800", |
|||
" .+ ", |
|||
".@#$%%%%%%%%%% ", |
|||
"&*=-%%%%%%%%%% ", |
|||
" ;>,, %% ", |
|||
" %%, %% ", |
|||
" %% %% ", |
|||
" %% %% ", |
|||
" %% %% ", |
|||
" %% %% ", |
|||
" %% %% ", |
|||
" %% %% ", |
|||
" %% '), ", |
|||
" %%%%%%%%%%'!~{ ", |
|||
" %%%%%%%%%%]*^/ ", |
|||
" ,(_, ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,28 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *add_text_xpm[]; |
|||
|
|||
#else |
|||
char * add_text_xpm[] = { |
|||
"16 16 4 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000098", |
|||
"@ c #00005D", |
|||
" .............. ", |
|||
" .............. ", |
|||
" .+ .... +. ", |
|||
" .@ .... . ", |
|||
" .... ", |
|||
" .... ", |
|||
" .... ", |
|||
" .... ", |
|||
" .... ", |
|||
" .... ", |
|||
" .... ", |
|||
" .... ", |
|||
" .... ", |
|||
" .....+ ", |
|||
" ........ ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,40 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *apply_xpm[]; |
|||
|
|||
#else |
|||
char * apply_xpm[] = { |
|||
"16 16 16 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #C8D7E5", |
|||
"@ c #8EA8C0", |
|||
"# c #9DB8D2", |
|||
"$ c #7E94AA", |
|||
"% c #8299AF", |
|||
"& c #D6E1EB", |
|||
"* c #C4CED6", |
|||
"= c #ACBED0", |
|||
"- c #404040", |
|||
"; c #ACB9C5", |
|||
"> c #727272", |
|||
", c #889FB6", |
|||
"' c #B1BFCB", |
|||
") c #98B2CC", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
" .. ", |
|||
" .+@. ", |
|||
" .+#$. ", |
|||
" .. .+#%. ", |
|||
" .&&. .+#%. ", |
|||
" .*#=. .+#%. ", |
|||
" -=#=.&#%. ", |
|||
" .;####%. ", |
|||
" >,##%. ", |
|||
" .')$. ", |
|||
" ... ", |
|||
" ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,127 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *cancel_xpm[]; |
|||
|
|||
#else |
|||
char * cancel_xpm[] = { |
|||
"16 16 103 2", |
|||
" c None", |
|||
"! c black", |
|||
"# c #422019", |
|||
"$ c #391C17", |
|||
"% c #0D0D0D", |
|||
"& c #020202", |
|||
"' c #050505", |
|||
"( c #321813", |
|||
") c #DD8D7D", |
|||
"* c #D05F49", |
|||
"+ c #4E1D14", |
|||
", c #2D1714", |
|||
"- c #C16E5E", |
|||
". c #AD4632", |
|||
"0 c #090504", |
|||
"1 c #3E1E18", |
|||
"2 c #D3634E", |
|||
"3 c #C95641", |
|||
"4 c #C64D37", |
|||
"5 c #4C1B13", |
|||
"6 c #301914", |
|||
"7 c #D9705B", |
|||
"8 c #C24129", |
|||
"9 c #962E1C", |
|||
": c #120502", |
|||
"; c #0E0B09", |
|||
"< c #C34C36", |
|||
"= c #C03B22", |
|||
"> c #BF3B22", |
|||
"? c #C44D36", |
|||
"@ c #5C251B", |
|||
"A c #1D0F0C", |
|||
"B c #D66F5B", |
|||
"C c #B93B24", |
|||
"D c #922C1B", |
|||
"E c #4E160D", |
|||
"F c #2F1510", |
|||
"G c #BE3B22", |
|||
"H c #B23821", |
|||
"I c #3B1711", |
|||
"J c #CA6D5B", |
|||
"K c #B83E27", |
|||
"L c #822617", |
|||
"M c #2C0B05", |
|||
"N c #2B130E", |
|||
"O c #BD3B22", |
|||
"P c #BA3B22", |
|||
"Q c #B73922", |
|||
"R c #B45B4A", |
|||
"S c #CE523A", |
|||
"T c #992F1D", |
|||
"U c #200804", |
|||
"V c #3C1812", |
|||
"W c #BA3A22", |
|||
"X c #C84E37", |
|||
"Y c #B63922", |
|||
"Z c #2F0E07", |
|||
"[ c #49160C", |
|||
"] c #CE6653", |
|||
"^ c #BD3C24", |
|||
"_ c #BB3B22", |
|||
"` c #B43922", |
|||
"a c #2C140F", |
|||
"b c #1B0704", |
|||
"c c #D17F70", |
|||
"d c #BE3F27", |
|||
"e c #B63D26", |
|||
"f c #BC3B22", |
|||
"g c #B03720", |
|||
"h c #381914", |
|||
"i c #CB7868", |
|||
"j c #BD3F28", |
|||
"k c #922F1E", |
|||
"l c #090909", |
|||
"m c #B43A23", |
|||
"n c #25120F", |
|||
"o c #010101", |
|||
"p c #572119", |
|||
"q c #CC7261", |
|||
"r c #B93A22", |
|||
"s c #96311E", |
|||
"t c #200B08", |
|||
"u c #411710", |
|||
"v c #A23A26", |
|||
"w c #080505", |
|||
"x c #230A06", |
|||
"y c #CD7261", |
|||
"z c #BD3D25", |
|||
"{ c #98311E", |
|||
"| c #240D09", |
|||
"} c #C23B22", |
|||
"~ c #AD3620", |
|||
" ! c #26110D", |
|||
"!! c #0F0907", |
|||
"#! c #912F1E", |
|||
"$! c #94301E", |
|||
"%! c #180906", |
|||
"&! c #A13521", |
|||
"'! c #26110E", |
|||
"(! c #2C0E09", |
|||
")! c #1C0905", |
|||
"*! c #341A15", |
|||
"+! c #311712", |
|||
" ", |
|||
" # $ % & ' ", |
|||
" ( ) * + % , - . 0 ", |
|||
" 1 2 3 4 5 6 7 8 9 : ", |
|||
" ; < = > ? @ A B C D E ", |
|||
" F < G G H I ' J K L M ", |
|||
" N < O P Q R S T U ", |
|||
" V < W W X Y Z & ", |
|||
" & [ ] ^ W _ ` a ", |
|||
" b c d e Q f O g N ", |
|||
" h i j k l I < G G m n ", |
|||
" o p q r s t u ? > = v w ", |
|||
" x y z { | 5 4 } ~ ! ", |
|||
" !!#!$!%! % + X &!'! ", |
|||
" (!)! % *!+! ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,42 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *copyblock_xpm[]; |
|||
|
|||
#else |
|||
char * copyblock_xpm[] = { |
|||
"16 16 18 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #B3B3B3", |
|||
"@ c #FFFFFF", |
|||
"# c #D6D6D6", |
|||
"$ c #646464", |
|||
"% c #4D4D4D", |
|||
"& c #505050", |
|||
"* c #696969", |
|||
"= c #787878", |
|||
"- c #4C4C4C", |
|||
"; c #E3E3E3", |
|||
"> c #5A5A5A", |
|||
", c #535353", |
|||
"' c #919191", |
|||
") c #A2A2A2", |
|||
"! c #5C5C5C", |
|||
"~ c #666666", |
|||
".......... ", |
|||
".+@@@@@@#. ", |
|||
".@@@@@@@@. ", |
|||
".@$%&@*=@. ", |
|||
".@@@@@@@@. ", |
|||
".@&-@&......... ", |
|||
".@@@@.+@@@@@@#. ", |
|||
".;>,'.@@@@@@@@. ", |
|||
".@@@@.@$%&@*=@. ", |
|||
".#@@@.@@@@@@@@. ", |
|||
"......@&-@)*+@. ", |
|||
" .@@@@@@@@. ", |
|||
" .;>,'@!~@. ", |
|||
" .@@@@@@@@. ", |
|||
" .#@@@@@@#. ", |
|||
" ......... "}; |
|||
#endif |
|||
@ -0,0 +1,77 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *cursor_shape_xpm[]; |
|||
|
|||
#else |
|||
char * cursor_shape_xpm[] = { |
|||
"16 16 53 1", |
|||
" c None", |
|||
". c #373737", |
|||
"+ c #9B9B9B", |
|||
"@ c #2E2E2E", |
|||
"# c #323232", |
|||
"$ c #252525", |
|||
"% c #121212", |
|||
"& c #696969", |
|||
"* c #858585", |
|||
"= c #777777", |
|||
"- c #040404", |
|||
"; c #383838", |
|||
"> c #7D7D7D", |
|||
", c #FFFFFF", |
|||
"' c #BDBDCB", |
|||
") c #28282F", |
|||
"! c #6D6D6D", |
|||
"~ c #F7F7FF", |
|||
"{ c #E6E6FF", |
|||
"] c #D1D1F9", |
|||
"^ c #61617D", |
|||
"/ c #050507", |
|||
"( c #363636", |
|||
"_ c #5E5E5E", |
|||
": c #F0F0FF", |
|||
"< c #DFDFFF", |
|||
"[ c #BFBFEC", |
|||
"} c #6E6E93", |
|||
"| c #1C1C27", |
|||
"1 c #4C4C4E", |
|||
"2 c #E8E8FF", |
|||
"3 c #9F9FBC", |
|||
"4 c #7B7B9D", |
|||
"5 c #343434", |
|||
"6 c #9A9A9A", |
|||
"7 c #38383B", |
|||
"8 c #52525D", |
|||
"9 c #1C1C1D", |
|||
"0 c #A6A6DE", |
|||
"a c #393953", |
|||
"b c #636363", |
|||
"c c #242424", |
|||
"d c #7E7E7E", |
|||
"e c #7A7A7A", |
|||
"f c #4E4E6C", |
|||
"g c #9B9BED", |
|||
"h c #12121F", |
|||
"i c #959595", |
|||
"j c #2D2D30", |
|||
"k c #9494EC", |
|||
"l c #54548A", |
|||
"m c #000000", |
|||
"n c #181827", |
|||
" . ", |
|||
" .+ ", |
|||
"..@#........... ", |
|||
" +$%&++++++++++ ", |
|||
" .*=- ", |
|||
" ;>,') ", |
|||
" .!~{]^/ ", |
|||
" (_:<[}| ", |
|||
" (123456+ ", |
|||
" .7890ab ", |
|||
" .cdefgh ", |
|||
" .i+ jklm ", |
|||
" .6 !n# ", |
|||
" .+ e++ ", |
|||
" .+ + ", |
|||
" + "}; |
|||
#endif |
|||
@ -0,0 +1,46 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *datasheet_xpm[]; |
|||
|
|||
#else |
|||
char * datasheet_xpm[] = { |
|||
"16 16 22 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #010101", |
|||
"@ c #FEFEFE", |
|||
"# c #EBEBEB", |
|||
"$ c #696969", |
|||
"% c #272727", |
|||
"& c #FFFFFF", |
|||
"* c #787878", |
|||
"= c #D4D4D4", |
|||
"- c #212121", |
|||
"; c #3A3A3A", |
|||
"> c #757575", |
|||
", c #595959", |
|||
"' c #B0B0B0", |
|||
") c #8E8E8E", |
|||
"! c #C3C3C3", |
|||
"~ c #913131", |
|||
"{ c #8D2D2D", |
|||
"] c #852525", |
|||
"^ c #C69696", |
|||
"/ c #C29292", |
|||
" ..........+. ", |
|||
".@#########$%. ", |
|||
".&##.#.#.#.*=-. ", |
|||
".&#........;>,. ", |
|||
".&#';######.)!. ", |
|||
".&#';######.#!. ", |
|||
".&#.........#!. ", |
|||
".&##.#.#.#.##!. ", |
|||
".&###########!. ", |
|||
".~{{{{{{{{{{{]. ", |
|||
".~&&^{&&^{&&&]. ", |
|||
".~&{&{&{&{&{{]. ", |
|||
".~&{&{&{&{&&{]. ", |
|||
".~&&^{&{&{&{{]. ", |
|||
".~&]]]&&/]&]]]. ", |
|||
"............... "}; |
|||
#endif |
|||
@ -0,0 +1,162 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *delete_arc_xpm[]; |
|||
|
|||
#else |
|||
char * delete_arc_xpm[] = { |
|||
"16 16 138 2", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000099", |
|||
"@ c #000097", |
|||
"# c #000096", |
|||
"$ c #000073", |
|||
"% c #000039", |
|||
"& c #000036", |
|||
"* c #000051", |
|||
"= c #000086", |
|||
"- c #00008E", |
|||
"; c #000093", |
|||
"> c #000085", |
|||
", c #000074", |
|||
"' c #0D0D0D", |
|||
") c #414141", |
|||
"! c #494949", |
|||
"~ c #3D3D3D", |
|||
"{ c #2B2B2B", |
|||
"] c #000001", |
|||
"^ c #010177", |
|||
"/ c #000082", |
|||
"( c #000000", |
|||
"_ c #838170", |
|||
": c #EEEBD6", |
|||
"< c #F0EFE7", |
|||
"[ c #ECEBE2", |
|||
"} c #C5C4B8", |
|||
"| c #525146", |
|||
"1 c #01013F", |
|||
"2 c #0F0F0F", |
|||
"3 c #C0BEA3", |
|||
"4 c #BFBDA3", |
|||
"5 c #797866", |
|||
"6 c #47463F", |
|||
"7 c #262624", |
|||
"8 c #35342D", |
|||
"9 c #858371", |
|||
"0 c #9E9C86", |
|||
"a c #A19F89", |
|||
"b c #A3A18B", |
|||
"c c #2A2A2A", |
|||
"d c #D1CFBA", |
|||
"e c #DAD8C2", |
|||
"f c #E0DECD", |
|||
"g c #B7B5A0", |
|||
"h c #63615A", |
|||
"i c #383735", |
|||
"j c #3B3B32", |
|||
"k c #605F52", |
|||
"l c #989681", |
|||
"m c #B5B39A", |
|||
"n c #B1B097", |
|||
"o c #A2A089", |
|||
"p c #E6E2D1", |
|||
"q c #F2EFE7", |
|||
"r c #F0EFE2", |
|||
"s c #E8E7D8", |
|||
"t c #E3E0D0", |
|||
"u c #D3D0BC", |
|||
"v c #C1BFA5", |
|||
"w c #ADAB92", |
|||
"x c #BEBCA2", |
|||
"y c #C4C2AB", |
|||
"z c #B6B49B", |
|||
"A c #787665", |
|||
"B c #888774", |
|||
"C c #EFEBD0", |
|||
"D c #F9F6E7", |
|||
"E c #F7F3EB", |
|||
"F c #F6F5EC", |
|||
"G c #F6F5EA", |
|||
"H c #F3F1E4", |
|||
"I c #EAE8D7", |
|||
"J c #DCDBC9", |
|||
"K c #9B9988", |
|||
"L c #626154", |
|||
"M c #575649", |
|||
"N c #515045", |
|||
"O c #727064", |
|||
"P c #9D9B8F", |
|||
"Q c #E2DFC6", |
|||
"R c #E7E3CD", |
|||
"S c #E0DEC9", |
|||
"T c #CFCFC9", |
|||
"U c #8C8B7E", |
|||
"V c #757463", |
|||
"W c #676658", |
|||
"X c #424138", |
|||
"Y c #282721", |
|||
"Z c #1E1E1A", |
|||
"` c #33332F", |
|||
" . c #4A4843", |
|||
".. c #676661", |
|||
"+. c #6F6E65", |
|||
"@. c #6A6A63", |
|||
"#. c #6D6B5C", |
|||
"$. c #57564A", |
|||
"%. c #383830", |
|||
"&. c #161514", |
|||
"*. c #191915", |
|||
"=. c #1E1D18", |
|||
"-. c #292922", |
|||
";. c #9E9E93", |
|||
">. c #4C4C3F", |
|||
",. c #35352F", |
|||
"'. c #292925", |
|||
"). c #2E2E29", |
|||
"!. c #0E0E0C", |
|||
"~. c #0A0A08", |
|||
"{. c #0F0F0C", |
|||
"]. c #3D3D37", |
|||
"^. c #33332A", |
|||
"/. c #23231E", |
|||
"(. c #2A2A23", |
|||
"_. c #A3A297", |
|||
":. c #B5B4AC", |
|||
"<. c #706F66", |
|||
"[. c #9F9F90", |
|||
"}. c #737262", |
|||
"|. c #3F3F34", |
|||
"1. c #68685A", |
|||
"2. c #38382E", |
|||
"3. c #68685E", |
|||
"4. c #3E3E33", |
|||
"5. c #25251F", |
|||
"6. c #2B2B24", |
|||
"7. c #ABABA1", |
|||
"8. c #D7D7D0", |
|||
"9. c #89897E", |
|||
"0. c #D4D3CC", |
|||
"a. c #86867A", |
|||
"b. c #57564E", |
|||
"c. c #919185", |
|||
"d. c #49493C", |
|||
"e. c #77776A", |
|||
"f. c #4F4F41", |
|||
"g. c #282821", |
|||
" . . . . . ", |
|||
" . . . . . . . . + @ ", |
|||
" # $ % & * = . . - ", |
|||
" ; . > ", |
|||
" # . , ", |
|||
" ' ) ! ~ { ] ^ / ", |
|||
" ( ( _ : < [ } | ] ] 1 ", |
|||
" 2 3 4 5 6 7 8 9 0 a b ( ", |
|||
" c d e f g h i j k l m n o ( ", |
|||
" ( p q r s t u v w x y z A ( ", |
|||
" ( B C D E F G H I J K L M ( ", |
|||
" ( N O P Q R S T U V W X Y ( ", |
|||
" Z ` ...+.@.#.$.%.&.*.=. ", |
|||
" -.;.>.,.'.).!.~.{.].^./. ", |
|||
" (._.:.<.[.}.|.1.2.3.4.5. ", |
|||
" 6.7.8.9.0.a.b.c.d.e.f.g. "}; |
|||
#endif |
|||
@ -0,0 +1,150 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *delete_circle_xpm[]; |
|||
|
|||
#else |
|||
char * delete_circle_xpm[] = { |
|||
"16 16 126 2", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000096", |
|||
"@ c #00008C", |
|||
"# c #000053", |
|||
"$ c #00008A", |
|||
"% c #00009A", |
|||
"& c #000073", |
|||
"* c #00007A", |
|||
"= c #000092", |
|||
"- c #00006F", |
|||
"; c #000083", |
|||
"> c #0D0D0D", |
|||
", c #414141", |
|||
"' c #494949", |
|||
") c #3D3D3D", |
|||
"! c #2B2B2B", |
|||
"~ c #000001", |
|||
"{ c #010177", |
|||
"] c #000081", |
|||
"^ c #000000", |
|||
"/ c #838170", |
|||
"( c #EEEBD6", |
|||
"_ c #F0EFE7", |
|||
": c #ECEBE2", |
|||
"< c #C5C4B8", |
|||
"[ c #525146", |
|||
"} c #010101", |
|||
"| c #010140", |
|||
"1 c #0F0F0F", |
|||
"2 c #C0BEA3", |
|||
"3 c #BFBDA3", |
|||
"4 c #797866", |
|||
"5 c #47463F", |
|||
"6 c #262624", |
|||
"7 c #35342D", |
|||
"8 c #858371", |
|||
"9 c #9E9C87", |
|||
"0 c #A19F89", |
|||
"a c #A3A18B", |
|||
"b c #2A2A2B", |
|||
"c c #D1CFBA", |
|||
"d c #DAD8C2", |
|||
"e c #E0DECD", |
|||
"f c #B7B5A0", |
|||
"g c #63615A", |
|||
"h c #383735", |
|||
"i c #3B3B32", |
|||
"j c #605F53", |
|||
"k c #989682", |
|||
"l c #B5B39A", |
|||
"m c #B1B096", |
|||
"n c #A2A089", |
|||
"o c #E6E2D1", |
|||
"p c #F2EFE7", |
|||
"q c #F0EFE2", |
|||
"r c #E8E7D8", |
|||
"s c #E3E0D0", |
|||
"t c #D3D0BC", |
|||
"u c #C1BFA6", |
|||
"v c #ADAB93", |
|||
"w c #BEBCA3", |
|||
"x c #C4C2AB", |
|||
"y c #B6B49A", |
|||
"z c #787665", |
|||
"A c #888775", |
|||
"B c #EFEBD1", |
|||
"C c #F9F6E8", |
|||
"D c #F7F3EC", |
|||
"E c #F6F5ED", |
|||
"F c #F6F5EB", |
|||
"G c #F3F1E5", |
|||
"H c #EAE8D8", |
|||
"I c #DCDBCA", |
|||
"J c #9B9987", |
|||
"K c #626153", |
|||
"L c #575649", |
|||
"M c #00003B", |
|||
"N c #515046", |
|||
"O c #727065", |
|||
"P c #9D9B90", |
|||
"Q c #E2DFC7", |
|||
"R c #E7E3CE", |
|||
"S c #E0DECA", |
|||
"T c #CFCFCA", |
|||
"U c #8C8B7F", |
|||
"V c #757463", |
|||
"W c #676657", |
|||
"X c #424137", |
|||
"Y c #282721", |
|||
"Z c #1E1E1A", |
|||
"` c #33332F", |
|||
" . c #4A4844", |
|||
".. c #676662", |
|||
"+. c #6F6E66", |
|||
"@. c #6A6A64", |
|||
"#. c #6D6B5C", |
|||
"$. c #57564A", |
|||
"%. c #383830", |
|||
"&. c #161514", |
|||
"*. c #191915", |
|||
"=. c #1E1D18", |
|||
"-. c #292922", |
|||
";. c #9E9E93", |
|||
">. c #4C4C3F", |
|||
",. c #35352F", |
|||
"'. c #292925", |
|||
"). c #2E2E29", |
|||
"!. c #0E0E0C", |
|||
"~. c #0A0A08", |
|||
"{. c #0F0F0C", |
|||
"]. c #3D3D37", |
|||
"^. c #33332A", |
|||
"/. c #23231E", |
|||
"(. c #2A2A23", |
|||
"_. c #A3A297", |
|||
":. c #B5B4AC", |
|||
"<. c #706F66", |
|||
"[. c #9F9F90", |
|||
"}. c #737262", |
|||
"|. c #3F3F34", |
|||
"1. c #68685A", |
|||
"2. c #38382E", |
|||
"3. c #68685E", |
|||
"4. c #3E3E33", |
|||
"5. c #25251F", |
|||
" . . . . ", |
|||
" . . . . . . . + ", |
|||
" . . @ # # $ . % ", |
|||
" . . & * . = ", |
|||
" . @ = . - ", |
|||
". . # . ; ", |
|||
". . > , ' ) ! ~ { ] ", |
|||
". . ^ ^ / ( _ : < [ ~ ~ } ", |
|||
". . | 1 2 3 4 5 6 7 8 9 0 a ^ ", |
|||
" . b c d e f g h i j k l m n ^ ", |
|||
" + ~ o p q r s t u v w x y z ^ ", |
|||
" ~ A B C D E F G H I J K L ^ ", |
|||
" M N O P Q R S T U V W X Y ^ ", |
|||
" Z ` ...+.@.#.$.%.&.*.=. ", |
|||
" -.;.>.,.'.).!.~.{.].^./. ", |
|||
" (._.:.<.[.}.|.1.2.3.4.5. "}; |
|||
#endif |
|||
@ -0,0 +1,134 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *delete_cotation_xpm[]; |
|||
|
|||
#else |
|||
char * delete_cotation_xpm[] = { |
|||
"16 16 110 2", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #00009B", |
|||
"@ c #000097", |
|||
"# c #000099", |
|||
"$ c #00008B", |
|||
"% c #000095", |
|||
"& c #000088", |
|||
"* c #000072", |
|||
"= c #010101", |
|||
"- c #0D0D0D", |
|||
"; c #414141", |
|||
"> c #494949", |
|||
", c #3D3D3D", |
|||
"' c #2B2B2B", |
|||
") c #01014F", |
|||
"! c #000081", |
|||
"~ c #00008F", |
|||
"{ c #010166", |
|||
"] c #838170", |
|||
"^ c #EEEBD6", |
|||
"/ c #F0EFE7", |
|||
"( c #ECEBE2", |
|||
"_ c #C5C4B8", |
|||
": c #525146", |
|||
"< c #000001", |
|||
"[ c #01016F", |
|||
"} c #0F0F0F", |
|||
"| c #C0BEA3", |
|||
"1 c #BFBDA3", |
|||
"2 c #797866", |
|||
"3 c #47463F", |
|||
"4 c #262624", |
|||
"5 c #35342D", |
|||
"6 c #858371", |
|||
"7 c #9E9C87", |
|||
"8 c #A19F88", |
|||
"9 c #A3A18A", |
|||
"0 c #2A2A2A", |
|||
"a c #D1CFBA", |
|||
"b c #DAD8C2", |
|||
"c c #E0DECD", |
|||
"d c #B7B5A0", |
|||
"e c #63615A", |
|||
"f c #383735", |
|||
"g c #3B3B32", |
|||
"h c #605F52", |
|||
"i c #989681", |
|||
"j c #B5B399", |
|||
"k c #B1B096", |
|||
"l c #A2A08A", |
|||
"m c #E6E2D1", |
|||
"n c #F2EFE7", |
|||
"o c #F0EFE2", |
|||
"p c #E8E7D8", |
|||
"q c #E3E0D0", |
|||
"r c #D3D0BC", |
|||
"s c #C1BFA5", |
|||
"t c #ADAB92", |
|||
"u c #BEBCA2", |
|||
"v c #C4C2AA", |
|||
"w c #B6B49A", |
|||
"x c #787666", |
|||
"y c #888774", |
|||
"z c #EFEBD0", |
|||
"A c #F9F6E7", |
|||
"B c #F7F3EB", |
|||
"C c #F6F5EC", |
|||
"D c #F6F5EA", |
|||
"E c #F3F1E4", |
|||
"F c #EAE8D7", |
|||
"G c #DCDBC9", |
|||
"H c #9B9987", |
|||
"I c #626153", |
|||
"J c #57564A", |
|||
"K c #515045", |
|||
"L c #727064", |
|||
"M c #9D9B8F", |
|||
"N c #E2DFC6", |
|||
"O c #E7E3CD", |
|||
"P c #E0DEC9", |
|||
"Q c #CFCFC9", |
|||
"R c #8C8B7E", |
|||
"S c #757463", |
|||
"T c #676657", |
|||
"U c #424137", |
|||
"V c #282722", |
|||
"W c #1E1E1A", |
|||
"X c #33332F", |
|||
"Y c #4A4843", |
|||
"Z c #676661", |
|||
"` c #6F6E65", |
|||
" . c #6A6A63", |
|||
".. c #6D6B5C", |
|||
"+. c #383830", |
|||
"@. c #161514", |
|||
"#. c #191915", |
|||
"$. c #1E1D19", |
|||
"%. c #292922", |
|||
"&. c #9E9E93", |
|||
"*. c #4C4C3F", |
|||
"=. c #35352F", |
|||
"-. c #292925", |
|||
";. c #2E2E29", |
|||
">. c #0E0E0C", |
|||
",. c #0A0A08", |
|||
"'. c #0F0F0C", |
|||
"). c #3D3D37", |
|||
"!. c #33332A", |
|||
"~. c #23231E", |
|||
" . . ", |
|||
" . . . ", |
|||
" . . . . ", |
|||
" . . ", |
|||
"+ + @ . . # + ", |
|||
"+ $ @ % + ", |
|||
"+ # + + + + + + + + + + + + + ", |
|||
"+ & * = - ; > , ' . ) ! + . ", |
|||
"+ ~ { . . ] ^ / ( _ : < . [ ", |
|||
"+ } | 1 2 3 4 5 6 7 8 9 < ", |
|||
"+ 0 a b c d e f g h i j k l . ", |
|||
"+ . m n o p q r s t u v w x . ", |
|||
"+ . y z A B C D E F G H I J . ", |
|||
"+ . K L M N O P Q R S T U V . ", |
|||
" W X Y Z ` ...J +.@.#.$. ", |
|||
" %.&.*.=.-.;.>.,.'.).!.~. "}; |
|||
#endif |
|||
@ -0,0 +1,148 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *delete_field_xpm[]; |
|||
|
|||
#else |
|||
char * delete_field_xpm[] = { |
|||
"16 16 124 2", |
|||
" c None", |
|||
". c #D2D2D2", |
|||
"+ c #9D9D9D", |
|||
"@ c #DEDEDE", |
|||
"# c #E0E0E0", |
|||
"$ c #5C5C5C", |
|||
"% c #000000", |
|||
"& c #EDEDED", |
|||
"* c #939393", |
|||
"= c #FDFDFD", |
|||
"- c #E4E4E4", |
|||
"; c #F1F1F1", |
|||
"> c #C8C8C8", |
|||
", c #E7E7E7", |
|||
"' c #F4F4F4", |
|||
") c #8F8F8F", |
|||
"! c #E9E9E9", |
|||
"~ c #F6F6F6", |
|||
"{ c #C0C0C0", |
|||
"] c #FAFAFA", |
|||
"^ c #9C9C9C", |
|||
"/ c #999999", |
|||
"( c #F0F0F0", |
|||
"_ c #B5B5B5", |
|||
": c #0E0E0E", |
|||
"< c #424242", |
|||
"[ c #4A4A4A", |
|||
"} c #3E3E3E", |
|||
"| c #2C2C2C", |
|||
"1 c #010101", |
|||
"2 c #C1C1C1", |
|||
"3 c #DDDDDD", |
|||
"4 c #7B7B7B", |
|||
"5 c #848271", |
|||
"6 c #EFECD7", |
|||
"7 c #F1F0E8", |
|||
"8 c #EDECE3", |
|||
"9 c #C6C5B9", |
|||
"0 c #535246", |
|||
"a c #707070", |
|||
"b c #0F0F0F", |
|||
"c c #C0BEA3", |
|||
"d c #BFBDA3", |
|||
"e c #797866", |
|||
"f c #47463F", |
|||
"g c #262624", |
|||
"h c #35342D", |
|||
"i c #858371", |
|||
"j c #9E9C86", |
|||
"k c #A19F88", |
|||
"l c #A3A18A", |
|||
"m c #2A2A2A", |
|||
"n c #D1CFBA", |
|||
"o c #DAD8C2", |
|||
"p c #E0DECD", |
|||
"q c #B7B5A0", |
|||
"r c #63615A", |
|||
"s c #383735", |
|||
"t c #3B3B32", |
|||
"u c #605F52", |
|||
"v c #989681", |
|||
"w c #B5B399", |
|||
"x c #B1B096", |
|||
"y c #A2A089", |
|||
"z c #E6E2D1", |
|||
"A c #F2EFE7", |
|||
"B c #F0EFE2", |
|||
"C c #E8E7D8", |
|||
"D c #E3E0D0", |
|||
"E c #D3D0BC", |
|||
"F c #C1BFA5", |
|||
"G c #ADAB92", |
|||
"H c #BEBCA2", |
|||
"I c #C4C2AA", |
|||
"J c #B6B49A", |
|||
"K c #787665", |
|||
"L c #888774", |
|||
"M c #EFEBD0", |
|||
"N c #F9F6E7", |
|||
"O c #F7F3EB", |
|||
"P c #F6F5EC", |
|||
"Q c #F6F5EA", |
|||
"R c #F3F1E4", |
|||
"S c #EAE8D7", |
|||
"T c #DCDBC9", |
|||
"U c #9B9987", |
|||
"V c #626153", |
|||
"W c #575649", |
|||
"X c #515045", |
|||
"Y c #727064", |
|||
"Z c #9D9B8F", |
|||
"` c #E2DFC6", |
|||
" . c #E7E3CD", |
|||
".. c #E0DEC9", |
|||
"+. c #CFCFC9", |
|||
"@. c #8C8B7E", |
|||
"#. c #757463", |
|||
"$. c #676657", |
|||
"%. c #424137", |
|||
"&. c #282721", |
|||
"*. c #1E1E1A", |
|||
"=. c #33332F", |
|||
"-. c #4A4843", |
|||
";. c #676661", |
|||
">. c #6F6E65", |
|||
",. c #6A6A63", |
|||
"'. c #6D6B5C", |
|||
"). c #57564A", |
|||
"!. c #383830", |
|||
"~. c #161514", |
|||
"{. c #191915", |
|||
"]. c #1E1D18", |
|||
"^. c #292922", |
|||
"/. c #9E9E93", |
|||
"(. c #4C4C3F", |
|||
"_. c #35352F", |
|||
":. c #292925", |
|||
"<. c #2E2E29", |
|||
"[. c #0E0E0C", |
|||
"}. c #0A0A08", |
|||
"|. c #0F0F0C", |
|||
"1. c #3D3D37", |
|||
"2. c #33332A", |
|||
"3. c #23231E", |
|||
". + + + + + + + + + + + + + + . ", |
|||
"+ . @ @ @ @ @ @ @ @ @ @ @ @ @ + ", |
|||
"+ # $ % % $ & % % % * & = = = + ", |
|||
"+ - % ; ; % ; % ; > % ; = = = + ", |
|||
"+ , % ' ' % ' % % % ) ' = = = + ", |
|||
"+ ! % % % % ~ % ~ { % ~ = = = + ", |
|||
"+ & % ] ] % ] % % % ^ ] / = / + ", |
|||
"+ ( = & _ : < [ } | 1 2 3 = = + ", |
|||
". + 4 1 1 5 6 7 8 9 0 1 1 a + . ", |
|||
" b c d e f g h i j k l % ", |
|||
" m n o p q r s t u v w x y % ", |
|||
" % z A B C D E F G H I J K % ", |
|||
" % L M N O P Q R S T U V W % ", |
|||
" % X Y Z ` ...+.@.#.$.%.&.% ", |
|||
" *.=.-.;.>.,.'.).!.~.{.]. ", |
|||
" ^./.(._.:.<.[.}.|.1.2.3. "}; |
|||
#endif |
|||
@ -0,0 +1,155 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *delete_line_xpm[]; |
|||
|
|||
#else |
|||
char * delete_line_xpm[] = { |
|||
"16 16 131 2", |
|||
" c None", |
|||
". c #007D00", |
|||
"+ c #4D8B4D", |
|||
"@ c #9B9B9B", |
|||
"# c #060606", |
|||
"$ c #202020", |
|||
"% c #242424", |
|||
"& c #1E1E1E", |
|||
"* c #151515", |
|||
"= c #000000", |
|||
"- c #48473F", |
|||
"; c #97968B", |
|||
"> c #9C9C98", |
|||
", c #94948F", |
|||
"' c #787872", |
|||
") c #292822", |
|||
"! c #080808", |
|||
"~ c #605F51", |
|||
"{ c #5F5E51", |
|||
"] c #7E7D6B", |
|||
"^ c #9A988A", |
|||
"/ c #8B8A85", |
|||
"( c #908F87", |
|||
"_ c #A5A494", |
|||
": c #787766", |
|||
"< c #504F44", |
|||
"[ c #515045", |
|||
"} c #161616", |
|||
"| c #706F65", |
|||
"1 c #CDCBB3", |
|||
"2 c #CFCDB8", |
|||
"3 c #989683", |
|||
"4 c #55534C", |
|||
"5 c #2F2F2D", |
|||
"6 c #383830", |
|||
"7 c #737161", |
|||
"8 c #9B9984", |
|||
"9 c #ABA991", |
|||
"0 c #AAA990", |
|||
"a c #515044", |
|||
"b c #DBD8C5", |
|||
"c c #E6E3D4", |
|||
"d c #E8E6D7", |
|||
"e c #CFCEBC", |
|||
"f c #A3A095", |
|||
"g c #858379", |
|||
"h c #7E7D6C", |
|||
"i c #868572", |
|||
"j c #ABA992", |
|||
"k c #BDBBA2", |
|||
"l c #B4B298", |
|||
"m c #8D8B77", |
|||
"n c #B7B5A2", |
|||
"o c #F0EDDB", |
|||
"p c #F4F2E4", |
|||
"q c #EFEDE1", |
|||
"r c #ECEADE", |
|||
"s c #E4E2D3", |
|||
"t c #DAD8C4", |
|||
"u c #CBC9B5", |
|||
"v c #CDCBB6", |
|||
"w c #B0AE99", |
|||
"x c #8C8A77", |
|||
"y c #676657", |
|||
"z c #6D6C5C", |
|||
"A c #B0AD9A", |
|||
"B c #CBC8BB", |
|||
"C c #ECE9D8", |
|||
"D c #EEECDC", |
|||
"E c #EBE9D9", |
|||
"F c #E1E0D6", |
|||
"G c #BBBAAA", |
|||
"H c #A8A796", |
|||
"I c #817F6F", |
|||
"J c #525145", |
|||
"K c #3F3F35", |
|||
"L c #383730", |
|||
"M c #525149", |
|||
"N c #747269", |
|||
"O c #A4A293", |
|||
"P c #ABA899", |
|||
"Q c #A5A496", |
|||
"R c #9E9D92", |
|||
"S c #727164", |
|||
"T c #565649", |
|||
"U c #3F3E36", |
|||
"V c #2E2D26", |
|||
"W c #23221D", |
|||
"X c #24241E", |
|||
"Y c #696961", |
|||
"Z c #4B4A41", |
|||
"` c #4E4D48", |
|||
" . c #4C4B45", |
|||
".. c #4C4C46", |
|||
"+. c #3E3D34", |
|||
"@. c #313029", |
|||
"#. c #2A2926", |
|||
"$. c #262620", |
|||
"%. c #21201B", |
|||
"&. c #2A2A23", |
|||
"*. c #A1A095", |
|||
"=. c #808076", |
|||
"-. c #52524A", |
|||
";. c #64645B", |
|||
">. c #505045", |
|||
",. c #272720", |
|||
"'. c #393931", |
|||
"). c #24241D", |
|||
"!. c #39392F", |
|||
"~. c #24241F", |
|||
"{. c #2B2B24", |
|||
"]. c #A7A79C", |
|||
"^. c #C6C5BE", |
|||
"/. c #7D7C72", |
|||
"(. c #BAB9AE", |
|||
"_. c #7D7C6E", |
|||
":. c #7D7D70", |
|||
"<. c #404035", |
|||
"[. c #6F6F64", |
|||
"}. c #46463A", |
|||
"|. c #ABABA1", |
|||
"1. c #D7D7D0", |
|||
"2. c #8B8B7F", |
|||
"3. c #D7D7CF", |
|||
"4. c #989888", |
|||
"5. c #59594F", |
|||
"6. c #98988B", |
|||
"7. c #4A4A3E", |
|||
"8. c #77776A", |
|||
"9. c #4F4F41", |
|||
"0. c #282821", |
|||
" ", |
|||
". . . . . . . . . . . . . . . ", |
|||
". + + + + + + + + + + + + + + @ ", |
|||
" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", |
|||
" # $ % & * = ", |
|||
" = = - ; > , ' ) = = ", |
|||
" ! ~ { ] ^ / ( _ : < [ = ", |
|||
" } | 1 2 3 4 5 6 7 8 9 0 a = ", |
|||
" * b c d e f g h i j k l m = ", |
|||
" = n o p q r s t u v w x y = ", |
|||
" = z A B C D E F G H I J K = ", |
|||
" L M N O P Q R S T U V W ", |
|||
" X Y Z ` ...+.@.X #.$.%. ", |
|||
" &.*.=.-.;.>.,.'.).-.!.~. ", |
|||
" {.].^./.(._.Z :.<.[.}.,. ", |
|||
" {.|.1.2.3.4.5.6.7.8.9.0. "}; |
|||
#endif |
|||
@ -0,0 +1,144 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *Delete_Polygon_xpm[]; |
|||
|
|||
#else |
|||
char * Delete_Polygon_xpm[] = { |
|||
"16 16 120 2", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000099", |
|||
"@ c #00007D", |
|||
"# c #000094", |
|||
"$ c #000093", |
|||
"% c #00008C", |
|||
"& c #000098", |
|||
"* c #000080", |
|||
"= c #0D0D0D", |
|||
"- c #414141", |
|||
"; c #494949", |
|||
"> c #3D3D3D", |
|||
", c #2B2B2C", |
|||
"' c #000001", |
|||
") c #010101", |
|||
"! c #000000", |
|||
"~ c #838170", |
|||
"{ c #EEEBD6", |
|||
"] c #F0EFE7", |
|||
"^ c #ECEBE2", |
|||
"/ c #C5C4B9", |
|||
"( c #525146", |
|||
"_ c #0F0F0F", |
|||
": c #C0BEA3", |
|||
"< c #BFBDA3", |
|||
"[ c #797866", |
|||
"} c #47463F", |
|||
"| c #262624", |
|||
"1 c #35342D", |
|||
"2 c #858372", |
|||
"3 c #9E9C87", |
|||
"4 c #A19F88", |
|||
"5 c #A3A18A", |
|||
"6 c #2A2A2A", |
|||
"7 c #D1CFBA", |
|||
"8 c #DAD8C2", |
|||
"9 c #E0DECD", |
|||
"0 c #B7B5A0", |
|||
"a c #63615A", |
|||
"b c #383735", |
|||
"c c #3B3B32", |
|||
"d c #605F53", |
|||
"e c #989682", |
|||
"f c #B5B399", |
|||
"g c #B1B096", |
|||
"h c #A2A089", |
|||
"i c #E6E2D1", |
|||
"j c #F2EFE7", |
|||
"k c #F0EFE2", |
|||
"l c #E8E7D8", |
|||
"m c #E3E0D0", |
|||
"n c #D3D0BC", |
|||
"o c #C1BFA5", |
|||
"p c #ADAB93", |
|||
"q c #BEBCA3", |
|||
"r c #C4C2AA", |
|||
"s c #B6B49A", |
|||
"t c #787665", |
|||
"u c #888775", |
|||
"v c #EFEBD1", |
|||
"w c #F9F6E8", |
|||
"x c #F7F3EC", |
|||
"y c #F6F5ED", |
|||
"z c #F6F5EB", |
|||
"A c #F3F1E5", |
|||
"B c #EAE8D8", |
|||
"C c #DCDBCA", |
|||
"D c #9B9987", |
|||
"E c #626153", |
|||
"F c #575649", |
|||
"G c #00004D", |
|||
"H c #515046", |
|||
"I c #727065", |
|||
"J c #9D9B90", |
|||
"K c #E2DFC7", |
|||
"L c #E7E3CE", |
|||
"M c #E0DECA", |
|||
"N c #CFCFCA", |
|||
"O c #8C8B7F", |
|||
"P c #757464", |
|||
"Q c #676657", |
|||
"R c #424137", |
|||
"S c #282721", |
|||
"T c #1E1E1A", |
|||
"U c #33332F", |
|||
"V c #4A4843", |
|||
"W c #676661", |
|||
"X c #6F6E65", |
|||
"Y c #6A6A63", |
|||
"Z c #6D6B5C", |
|||
"` c #57564A", |
|||
" . c #383830", |
|||
".. c #161514", |
|||
"+. c #191915", |
|||
"@. c #1E1D18", |
|||
"#. c #292922", |
|||
"$. c #9E9E93", |
|||
"%. c #4C4C3F", |
|||
"&. c #35352F", |
|||
"*. c #292925", |
|||
"=. c #2E2E29", |
|||
"-. c #0E0E0C", |
|||
";. c #0A0A08", |
|||
">. c #0F0F0C", |
|||
",. c #3D3D37", |
|||
"'. c #33332A", |
|||
"). c #23231E", |
|||
"!. c #2A2A23", |
|||
"~. c #A3A297", |
|||
"{. c #B5B4AC", |
|||
"]. c #706F66", |
|||
"^. c #9F9F90", |
|||
"/. c #737262", |
|||
"(. c #3F3F34", |
|||
"_. c #68685A", |
|||
":. c #38382E", |
|||
"<. c #68685E", |
|||
"[. c #3E3E33", |
|||
"}. c #25251F", |
|||
". . . . . . . . ", |
|||
". . . . . . . . + ", |
|||
" @ . # ", |
|||
" $ . % ", |
|||
" & . * ", |
|||
" . . ", |
|||
" = - ; > , ' ) ", |
|||
" ! ! ~ { ] ^ / ( ! ! ", |
|||
" _ : < [ } | 1 2 3 4 5 ! ", |
|||
" 6 7 8 9 0 a b c d e f g h ! ", |
|||
" ! i j k l m n o p q r s t ! ", |
|||
" . ' u v w x y z A B C D E F ! ", |
|||
" . G H I J K L M N O P Q R S ! ", |
|||
" T U V W X Y Z ` ...+.@. ", |
|||
" #.$.%.&.*.=.-.;.>.,.'.). ", |
|||
" !.~.{.].^./.(._.:.<.[.}. "}; |
|||
#endif |
|||
@ -0,0 +1,138 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *delete_rectangle_xpm[]; |
|||
|
|||
#else |
|||
char * delete_rectangle_xpm[] = { |
|||
"16 16 114 2", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #0D0D0D", |
|||
"@ c #414141", |
|||
"# c #494949", |
|||
"$ c #3D3D3D", |
|||
"% c #2B2B2B", |
|||
"& c #000001", |
|||
"* c #010177", |
|||
"= c #000000", |
|||
"- c #838170", |
|||
"; c #EEEBD6", |
|||
"> c #F0EFE7", |
|||
", c #ECEBE2", |
|||
"' c #C5C4B8", |
|||
") c #525146", |
|||
"! c #010101", |
|||
"~ c #0F0F0F", |
|||
"{ c #C0BEA3", |
|||
"] c #BFBDA3", |
|||
"^ c #797866", |
|||
"/ c #47463F", |
|||
"( c #262624", |
|||
"_ c #35342D", |
|||
": c #858371", |
|||
"< c #9E9C87", |
|||
"[ c #A19F89", |
|||
"} c #A3A18A", |
|||
"| c #2A2A2A", |
|||
"1 c #D1CFBA", |
|||
"2 c #DAD8C2", |
|||
"3 c #E0DECD", |
|||
"4 c #B7B5A0", |
|||
"5 c #63615A", |
|||
"6 c #383735", |
|||
"7 c #3B3B32", |
|||
"8 c #605F52", |
|||
"9 c #989682", |
|||
"0 c #B5B39A", |
|||
"a c #B1B096", |
|||
"b c #A2A089", |
|||
"c c #E6E2D1", |
|||
"d c #F2EFE7", |
|||
"e c #F0EFE2", |
|||
"f c #E8E7D8", |
|||
"g c #E3E0D0", |
|||
"h c #D3D0BC", |
|||
"i c #C1BFA5", |
|||
"j c #ADAB92", |
|||
"k c #BEBCA3", |
|||
"l c #C4C2AB", |
|||
"m c #B6B49A", |
|||
"n c #787665", |
|||
"o c #888775", |
|||
"p c #EFEBD1", |
|||
"q c #F9F6E8", |
|||
"r c #F7F3EC", |
|||
"s c #F6F5ED", |
|||
"t c #F6F5EB", |
|||
"u c #F3F1E5", |
|||
"v c #EAE8D8", |
|||
"w c #DCDBCA", |
|||
"x c #9B9988", |
|||
"y c #626153", |
|||
"z c #575649", |
|||
"A c #00004D", |
|||
"B c #515046", |
|||
"C c #727065", |
|||
"D c #9D9B90", |
|||
"E c #E2DFC7", |
|||
"F c #E7E3CE", |
|||
"G c #E0DECA", |
|||
"H c #CFCFCA", |
|||
"I c #8C8B7F", |
|||
"J c #757464", |
|||
"K c #676657", |
|||
"L c #424137", |
|||
"M c #282721", |
|||
"N c #1E1E1A", |
|||
"O c #33332F", |
|||
"P c #4A4843", |
|||
"Q c #676661", |
|||
"R c #6F6E65", |
|||
"S c #6A6A63", |
|||
"T c #6D6B5C", |
|||
"U c #57564A", |
|||
"V c #383830", |
|||
"W c #161514", |
|||
"X c #191915", |
|||
"Y c #1E1D18", |
|||
"Z c #292922", |
|||
"` c #9E9E93", |
|||
" . c #4C4C3F", |
|||
".. c #35352F", |
|||
"+. c #292925", |
|||
"@. c #2E2E29", |
|||
"#. c #0E0E0C", |
|||
"$. c #0A0A08", |
|||
"%. c #0F0F0C", |
|||
"&. c #3D3D37", |
|||
"*. c #33332A", |
|||
"=. c #23231E", |
|||
"-. c #2A2A23", |
|||
";. c #A3A297", |
|||
">. c #B5B4AC", |
|||
",. c #706F66", |
|||
"'. c #9F9F90", |
|||
"). c #737262", |
|||
"!. c #3F3F34", |
|||
"~. c #68685A", |
|||
"{. c #38382E", |
|||
"]. c #68685E", |
|||
"^. c #3E3E33", |
|||
"/. c #25251F", |
|||
". . . . . . . . . . . . . ", |
|||
". . . . . . . . . . . . . ", |
|||
". . . . ", |
|||
". . . . ", |
|||
". . . . ", |
|||
". . . . ", |
|||
". . + @ # $ % & * ", |
|||
". . = = - ; > , ' ) & = ", |
|||
". . ! ~ { ] ^ / ( _ : < [ } = ", |
|||
". . | 1 2 3 4 5 6 7 8 9 0 a b = ", |
|||
". . = c d e f g h i j k l m n = ", |
|||
". . & o p q r s t u v w x y z = ", |
|||
". . A B C D E F G H I J K L M = ", |
|||
" N O P Q R S T U V W X Y ", |
|||
" Z ` ...+.@.#.$.%.&.*.=. ", |
|||
" -.;.>.,.'.).!.~.{.].^./. "}; |
|||
#endif |
|||
@ -0,0 +1,135 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *delete_segment_xpm[]; |
|||
|
|||
#else |
|||
char * delete_segment_xpm[] = { |
|||
"16 16 111 2", |
|||
" c None", |
|||
". c #007D00", |
|||
"+ c #007C00", |
|||
"@ c #0D0D0D", |
|||
"# c #414141", |
|||
"$ c #494949", |
|||
"% c #3D3D3D", |
|||
"& c #2B2B2B", |
|||
"* c #000000", |
|||
"= c #838170", |
|||
"- c #EEEBD6", |
|||
"; c #F0EFE7", |
|||
"> c #ECEBE2", |
|||
", c #C5C4B8", |
|||
"' c #525145", |
|||
") c #0F0F0F", |
|||
"! c #C0BEA3", |
|||
"~ c #BFBDA3", |
|||
"{ c #797866", |
|||
"] c #47463F", |
|||
"^ c #262624", |
|||
"/ c #35342D", |
|||
"( c #858371", |
|||
"_ c #9E9C86", |
|||
": c #A19F88", |
|||
"< c #A3A18A", |
|||
"[ c #2A2A2A", |
|||
"} c #D1CFBA", |
|||
"| c #DAD8C2", |
|||
"1 c #E0DECD", |
|||
"2 c #B7B5A0", |
|||
"3 c #63615A", |
|||
"4 c #383735", |
|||
"5 c #3B3B32", |
|||
"6 c #605F52", |
|||
"7 c #989681", |
|||
"8 c #B5B399", |
|||
"9 c #B1B096", |
|||
"0 c #A2A089", |
|||
"a c #E6E2D1", |
|||
"b c #F2EFE7", |
|||
"c c #F0EFE2", |
|||
"d c #E8E7D8", |
|||
"e c #E3E0D0", |
|||
"f c #D3D0BC", |
|||
"g c #C1BFA5", |
|||
"h c #ADAB92", |
|||
"i c #BEBCA2", |
|||
"j c #C4C2AA", |
|||
"k c #B6B49A", |
|||
"l c #787665", |
|||
"m c #888774", |
|||
"n c #EFEBD0", |
|||
"o c #F9F6E7", |
|||
"p c #F7F3EB", |
|||
"q c #F6F5EC", |
|||
"r c #F6F5EA", |
|||
"s c #F3F1E4", |
|||
"t c #EAE8D7", |
|||
"u c #DCDBC9", |
|||
"v c #9B9987", |
|||
"w c #626153", |
|||
"x c #575649", |
|||
"y c #515045", |
|||
"z c #727064", |
|||
"A c #9D9B8F", |
|||
"B c #E2DFC6", |
|||
"C c #E7E3CD", |
|||
"D c #E0DEC9", |
|||
"E c #CFCFC9", |
|||
"F c #8C8B7E", |
|||
"G c #757463", |
|||
"H c #676657", |
|||
"I c #424137", |
|||
"J c #282721", |
|||
"K c #1E1E1A", |
|||
"L c #33332F", |
|||
"M c #4A4843", |
|||
"N c #676661", |
|||
"O c #6F6E65", |
|||
"P c #6A6A63", |
|||
"Q c #6D6B5C", |
|||
"R c #57564A", |
|||
"S c #383830", |
|||
"T c #161514", |
|||
"U c #191915", |
|||
"V c #1E1D18", |
|||
"W c #292922", |
|||
"X c #9E9E93", |
|||
"Y c #4C4C3F", |
|||
"Z c #35352F", |
|||
"` c #292925", |
|||
" . c #2E2E29", |
|||
".. c #0E0E0C", |
|||
"+. c #0A0A08", |
|||
"@. c #0F0F0C", |
|||
"#. c #3D3D37", |
|||
"$. c #33332A", |
|||
"%. c #23231E", |
|||
"&. c #2A2A23", |
|||
"*. c #A3A297", |
|||
"=. c #B5B4AC", |
|||
"-. c #706F66", |
|||
";. c #9F9F90", |
|||
">. c #737262", |
|||
",. c #3F3F34", |
|||
"'. c #68685A", |
|||
"). c #38382E", |
|||
"!. c #68685E", |
|||
"~. c #3E3E33", |
|||
"{. c #25251F", |
|||
" ", |
|||
". . . . . . . . . . . . . . . . ", |
|||
"+ . . . . . . . . . . . . . . . ", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
" @ # $ % & * ", |
|||
" * * = - ; > , ' * * ", |
|||
" ) ! ~ { ] ^ / ( _ : < * ", |
|||
" [ } | 1 2 3 4 5 6 7 8 9 0 * ", |
|||
" * a b c d e f g h i j k l * ", |
|||
" * m n o p q r s t u v w x * ", |
|||
" * y z A B C D E F G H I J * ", |
|||
" K L M N O P Q R S T U V ", |
|||
" W X Y Z ` ...+.@.#.$.%. ", |
|||
" &.*.=.-.;.>.,.'.).!.~.{. "}; |
|||
#endif |
|||
@ -0,0 +1,138 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *delete_text_xpm[]; |
|||
|
|||
#else |
|||
char * delete_text_xpm[] = { |
|||
"16 16 114 2", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000098", |
|||
"@ c #00005D", |
|||
"# c #01016F", |
|||
"$ c #0D0D0E", |
|||
"% c #414142", |
|||
"& c #49494A", |
|||
"* c #3D3D3D", |
|||
"= c #2B2B2B", |
|||
"- c #000000", |
|||
"; c #000001", |
|||
"> c #838171", |
|||
", c #EEEBD7", |
|||
"' c #F0EFE8", |
|||
") c #ECEBE2", |
|||
"! c #C5C4B8", |
|||
"~ c #525145", |
|||
"{ c #0F0F0F", |
|||
"] c #C0BEA3", |
|||
"^ c #BFBDA4", |
|||
"/ c #797867", |
|||
"( c #474640", |
|||
"_ c #262625", |
|||
": c #35342D", |
|||
"< c #858371", |
|||
"[ c #9E9C86", |
|||
"} c #A19F88", |
|||
"| c #A3A18A", |
|||
"1 c #2A2A2A", |
|||
"2 c #D1CFBA", |
|||
"3 c #DAD8C2", |
|||
"4 c #E0DECE", |
|||
"5 c #B7B5A1", |
|||
"6 c #63615B", |
|||
"7 c #383736", |
|||
"8 c #3B3B32", |
|||
"9 c #605F52", |
|||
"0 c #989681", |
|||
"a c #B5B399", |
|||
"b c #B1B096", |
|||
"c c #A2A089", |
|||
"d c #E6E2D1", |
|||
"e c #F2EFE7", |
|||
"f c #F0EFE3", |
|||
"g c #E8E7D9", |
|||
"h c #E3E0D1", |
|||
"i c #D3D0BD", |
|||
"j c #C1BFA5", |
|||
"k c #ADAB92", |
|||
"l c #BEBCA2", |
|||
"m c #C4C2AA", |
|||
"n c #B6B49A", |
|||
"o c #787665", |
|||
"p c #888774", |
|||
"q c #EFEBD0", |
|||
"r c #F9F6E8", |
|||
"s c #F7F3EC", |
|||
"t c #F6F5ED", |
|||
"u c #F6F5EB", |
|||
"v c #F3F1E4", |
|||
"w c #EAE8D7", |
|||
"x c #DCDBC9", |
|||
"y c #9B9987", |
|||
"z c #626153", |
|||
"A c #575649", |
|||
"B c #515045", |
|||
"C c #727065", |
|||
"D c #9D9B90", |
|||
"E c #E2DFC7", |
|||
"F c #E7E3CE", |
|||
"G c #E0DECA", |
|||
"H c #CFCFC9", |
|||
"I c #8C8B7E", |
|||
"J c #757463", |
|||
"K c #676657", |
|||
"L c #424137", |
|||
"M c #282721", |
|||
"N c #1E1E1B", |
|||
"O c #333330", |
|||
"P c #4A4844", |
|||
"Q c #676662", |
|||
"R c #6F6E66", |
|||
"S c #6A6A64", |
|||
"T c #6D6B5D", |
|||
"U c #57564B", |
|||
"V c #383830", |
|||
"W c #161514", |
|||
"X c #191915", |
|||
"Y c #1E1D18", |
|||
"Z c #292923", |
|||
"` c #9E9E94", |
|||
" . c #4C4C40", |
|||
".. c #353530", |
|||
"+. c #292926", |
|||
"@. c #2E2E2A", |
|||
"#. c #0E0E0D", |
|||
"$. c #0A0A09", |
|||
"%. c #0F0F0C", |
|||
"&. c #3D3D37", |
|||
"*. c #33332A", |
|||
"=. c #23231E", |
|||
"-. c #2A2A23", |
|||
";. c #A3A297", |
|||
">. c #B5B4AC", |
|||
",. c #706F66", |
|||
"'. c #9F9F90", |
|||
"). c #737262", |
|||
"!. c #3F3F34", |
|||
"~. c #68685A", |
|||
"{. c #38382E", |
|||
"]. c #68685E", |
|||
"^. c #3E3E33", |
|||
"/. c #25251F", |
|||
". . . . . . . . . . . . . . ", |
|||
". . . . . . . . . . . . . . ", |
|||
". + . . . . + . ", |
|||
". @ . . . . . ", |
|||
" . . . . ", |
|||
" . . . . ", |
|||
" # $ % & * = - ", |
|||
" - ; > , ' ) ! ~ - - ", |
|||
" { ] ^ / ( _ : < [ } | - ", |
|||
" 1 2 3 4 5 6 7 8 9 0 a b c - ", |
|||
" - d e f g h i j k l m n o - ", |
|||
" - p q r s t u v w x y z A - ", |
|||
" - B C D E F G H I J K L M - ", |
|||
" N O P Q R S T U V W X Y ", |
|||
" Z ` ...+.@.#.$.%.&.*.=. ", |
|||
" -.;.>.,.'.).!.~.{.].^./. "}; |
|||
#endif |
|||
@ -0,0 +1,114 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *display_options_xpm[]; |
|||
|
|||
#else |
|||
char * display_options_xpm[] = { |
|||
"16 16 90 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #E5E1E1", |
|||
"@ c #EDEDE9", |
|||
"# c #EDEDED", |
|||
"$ c #F1F1ED", |
|||
"% c #E9E5E5", |
|||
"& c #C9C5BE", |
|||
"* c #BDB9B1", |
|||
"= c #B5B1AD", |
|||
"- c #ADA9A2", |
|||
"; c #010101", |
|||
"> c #A3A197", |
|||
", c #9D9D9D", |
|||
"' c #A1A1A1", |
|||
") c #A1A5A1", |
|||
"! c #919591", |
|||
"~ c #818581", |
|||
"{ c #5D615D", |
|||
"] c #3D413D", |
|||
"^ c #2D312D", |
|||
"/ c #1D211D", |
|||
"( c #A7A299", |
|||
"_ c #9DA19D", |
|||
": c #8D918D", |
|||
"< c #717571", |
|||
"[ c #515551", |
|||
"} c #424842", |
|||
"| c #353935", |
|||
"1 c #ABA79C", |
|||
"2 c #E9E9E5", |
|||
"3 c #999D99", |
|||
"4 c #7D817D", |
|||
"5 c #797D79", |
|||
"6 c #F0F0F0", |
|||
"7 c #DEDEDE", |
|||
"8 c #DFDFDF", |
|||
"9 c #E0E0E0", |
|||
"0 c #BFBFBF", |
|||
"a c #C0C0C0", |
|||
"b c #C1C1C1", |
|||
"c c #D1D1CA", |
|||
"d c #676961", |
|||
"e c #707470", |
|||
"f c #979797", |
|||
"g c #989898", |
|||
"h c #B1ADA6", |
|||
"i c #52554F", |
|||
"j c #616561", |
|||
"k c #E3E3E3", |
|||
"l c #DDDDDD", |
|||
"m c #C8C8C8", |
|||
"n c #656565", |
|||
"o c #848484", |
|||
"p c #878787", |
|||
"q c #A9A59D", |
|||
"r c #313931", |
|||
"s c #353D35", |
|||
"t c #A3A3A3", |
|||
"u c #010100", |
|||
"v c #A19D94", |
|||
"w c #ADA999", |
|||
"x c #B1A9A1", |
|||
"y c #CFCFCF", |
|||
"z c #A4A4A4", |
|||
"A c #989897", |
|||
"B c #ABABAB", |
|||
"C c #EEEEEE", |
|||
"D c #999588", |
|||
"E c #838383", |
|||
"F c #8D8D81", |
|||
"G c #656561", |
|||
"H c #69655D", |
|||
"I c #696559", |
|||
"J c #B5B5B5", |
|||
"K c #757575", |
|||
"L c #6B6B6B", |
|||
"M c #777777", |
|||
"N c #888888", |
|||
"O c #54544C", |
|||
"P c #757169", |
|||
"Q c #79796E", |
|||
"R c #010000", |
|||
"S c #E0E0DF", |
|||
"T c #C1C1C0", |
|||
"U c #A7A7A7", |
|||
"V c #7B7B7B", |
|||
"W c #747474", |
|||
"X c #717171", |
|||
"Y c #7D7D7D", |
|||
"............... ", |
|||
".+@#@$$$@%+&*=-;", |
|||
".@;;;;;;;;;;;;>;", |
|||
".$;,')!!~{{]^/(;", |
|||
".$;_):~~<[[}|/1;", |
|||
".2;3:4........;.", |
|||
".2;~5.6788888898", |
|||
".+;~5.8000000aba", |
|||
".c;de.80f...gaba", |
|||
".h;ij.80.klm.nop", |
|||
".q;rs.80.lat..u.", |
|||
".vw-x;9a;yzA.BC#", |
|||
".D;;;.8ag...nEbb", |
|||
".FGHI.8aJKLnMN..", |
|||
" ;OPQRSTUVVWX.kl", |
|||
" .;;.8aY.....la"}; |
|||
#endif |
|||
@ -0,0 +1,52 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *edit_xpm[]; |
|||
|
|||
#else |
|||
char * edit_xpm[] = { |
|||
"16 16 28 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #F9E53A", |
|||
"@ c #F0B44C", |
|||
"# c #FAE93C", |
|||
"$ c #F5B343", |
|||
"% c #635632", |
|||
"& c #FAE73A", |
|||
"* c #F5B344", |
|||
"= c #6B5E33", |
|||
"- c #F8E239", |
|||
"; c #F2B043", |
|||
"> c #615739", |
|||
", c #F7DD38", |
|||
"' c #F1AD41", |
|||
") c #615637", |
|||
"! c #F7DA37", |
|||
"~ c #EDB24C", |
|||
"{ c #655931", |
|||
"] c #F6D636", |
|||
"^ c #EEA73E", |
|||
"/ c #64582F", |
|||
"( c #F4D035", |
|||
"_ c #EBA23D", |
|||
": c #5B512F", |
|||
"< c #D5AC73", |
|||
"[ c #60552E", |
|||
"} c #4E4014", |
|||
" ", |
|||
" ... ", |
|||
" .+@. ", |
|||
" .#$%. ", |
|||
" .&*=. ", |
|||
" .-;>. ", |
|||
" .,'). ", |
|||
" .!~{. ", |
|||
" .]^/. ", |
|||
" .(_:. ", |
|||
" .<[. ", |
|||
" .}.. ", |
|||
" .. ", |
|||
" ", |
|||
" ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,32 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *edit_text_xpm[]; |
|||
|
|||
#else |
|||
char * edit_text_xpm[] = { |
|||
"16 16 8 1", |
|||
" c None", |
|||
". c #1D2E40", |
|||
"+ c #1B2C3D", |
|||
"@ c #1B2B3D", |
|||
"# c #1E3043", |
|||
"$ c #1C2D3F", |
|||
"% c #111B26", |
|||
"& c #1C2C3E", |
|||
" ", |
|||
" ", |
|||
" .+ +@ ", |
|||
" ## ", |
|||
" ## ", |
|||
" ## ", |
|||
" ## ", |
|||
" ## ", |
|||
" ## ", |
|||
" ## ", |
|||
" ## ", |
|||
" ## ", |
|||
" ## ", |
|||
" .$ %&& ", |
|||
" ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,87 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *exit_xpm[]; |
|||
|
|||
#else |
|||
char * exit_xpm[] = { |
|||
"16 16 63 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #E2E2E0", |
|||
"@ c #D3D3D0", |
|||
"# c #C0C0BD", |
|||
"$ c #ADADAB", |
|||
"% c #929291", |
|||
"& c #B7B7B5", |
|||
"* c #9A9A98", |
|||
"= c #E46245", |
|||
"- c #DEDEDC", |
|||
"; c #C1C1BE", |
|||
"> c #B9B9B7", |
|||
", c #9C9C9B", |
|||
"' c #060806", |
|||
") c #070907", |
|||
"! c #E7755B", |
|||
"~ c #B3533E", |
|||
"{ c #D0D0CD", |
|||
"] c #0E110C", |
|||
"^ c #0F120D", |
|||
"/ c #DF421E", |
|||
"( c #B14D36", |
|||
"_ c #BDBDBB", |
|||
": c #A4A4A2", |
|||
"< c #161C14", |
|||
"[ c #191F16", |
|||
"} c #B0160A", |
|||
"| c #B11B10", |
|||
"1 c #993929", |
|||
"2 c #797977", |
|||
"3 c #5B5B5A", |
|||
"4 c #1D251B", |
|||
"5 c #20281D", |
|||
"6 c #990000", |
|||
"7 c #880000", |
|||
"8 c #AA3F2C", |
|||
"9 c #6C6C6A", |
|||
"0 c #273124", |
|||
"a c #2A3526", |
|||
"b c #C83E2B", |
|||
"c c #A1100B", |
|||
"d c #A3140E", |
|||
"e c #2B3727", |
|||
"f c #313D2C", |
|||
"g c #D4D4D1", |
|||
"h c #354331", |
|||
"i c #B4B4B2", |
|||
"j c #8D8D8B", |
|||
"k c #2D3A29", |
|||
"l c #3B4A35", |
|||
"m c #E0E0DE", |
|||
"n c #C9C9C7", |
|||
"o c #939491", |
|||
"p c #51544F", |
|||
"q c #34412F", |
|||
"r c #42543D", |
|||
"s c #495D43", |
|||
"t c #5C6059", |
|||
"u c #495C42", |
|||
"v c #4F6448", |
|||
"w c #53684B", |
|||
"x c #546A4D", |
|||
" ", |
|||
" .......... ", |
|||
" .+@#$%.... ", |
|||
" ...+@#&*.... ", |
|||
" .=.-@;>,.'). ", |
|||
"....!~.{;>,.]^. ", |
|||
".====/(._:,.<[. ", |
|||
".=}}}}|1.23.45. ", |
|||
".=666678.9,.0a. ", |
|||
".bcd778.;>,.ef. ", |
|||
"....78.g;>,.ah. ", |
|||
" .8.+g;ij.kl. ", |
|||
" ...mnop.qrs. ", |
|||
" .&t.luvwx. ", |
|||
" .......... ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,62 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *file_footprint_xpm[]; |
|||
|
|||
#else |
|||
char * file_footprint_xpm[] = { |
|||
"16 16 38 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #F8F8F8", |
|||
"@ c #7C7C7C", |
|||
"# c #1E1E1E", |
|||
"$ c #FFFFFF", |
|||
"% c #ECECEC", |
|||
"& c #B3B3B3", |
|||
"* c #BBBBBB", |
|||
"= c #3D3D3D", |
|||
"- c #EBEBEB", |
|||
"; c #646464", |
|||
"> c #CACACA", |
|||
", c #B5B5B5", |
|||
"' c #A7A7A7", |
|||
") c #282828", |
|||
"! c #606060", |
|||
"~ c #C4C4C4", |
|||
"{ c #626262", |
|||
"] c #D2D2D2", |
|||
"^ c #AEAEAE", |
|||
"/ c #7D7D7D", |
|||
"( c #FEFEFE", |
|||
"_ c #D73333", |
|||
": c #AB8989", |
|||
"< c #E6E6E6", |
|||
"[ c #D93F3F", |
|||
"} c #D72E2E", |
|||
"| c #AC8989", |
|||
"1 c #D73838", |
|||
"2 c #AFAFAF", |
|||
"3 c #EAE4E4", |
|||
"4 c #615E5E", |
|||
"5 c #EAE5E5", |
|||
"6 c #FDFDFD", |
|||
"7 c #646161", |
|||
"8 c #ABABAB", |
|||
"9 c #050505", |
|||
" ......... ", |
|||
".++++++++@# ", |
|||
".$%%%%%%%&*= ", |
|||
".$-;;>>;;,'*) ", |
|||
".$-!~{{~!]^^/. ", |
|||
".(_:_<<[:_>>^. ", |
|||
".(}|}--1|}--2. ", |
|||
".(343--543--2. ", |
|||
".(_:_--[:_--2. ", |
|||
".(}|}--1|}--2. ", |
|||
".6343--543--2. ", |
|||
".6_:_--_:_--2. ", |
|||
".6}|}--}|}--2. ", |
|||
".6347;;743--2. ", |
|||
".228888882222. ", |
|||
"............9. "}; |
|||
#endif |
|||
@ -0,0 +1,70 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern const char *fonts_xpm[]; |
|||
|
|||
#else |
|||
const char * fonts_xpm[] = { |
|||
"16 16 46 1", |
|||
" c None", |
|||
". c #70653B", |
|||
"+ c #463F24", |
|||
"@ c #6B6139", |
|||
"# c #1B180D", |
|||
"$ c #2C2818", |
|||
"% c #595030", |
|||
"& c #252112", |
|||
"* c #292516", |
|||
"= c #70643B", |
|||
"- c #827544", |
|||
"; c #3D3721", |
|||
"> c #37311D", |
|||
", c #3E3721", |
|||
"' c #302B1A", |
|||
") c #5C5331", |
|||
"! c #010101", |
|||
"~ c #1A170E", |
|||
"{ c #1E1A10", |
|||
"] c #403922", |
|||
"^ c #584F2F", |
|||
"/ c #16140C", |
|||
"( c #1E1B10", |
|||
"_ c #312B1A", |
|||
": c #0F0D07", |
|||
"< c #2D2818", |
|||
"[ c #322D1A", |
|||
"} c #231F11", |
|||
"| c #3C3620", |
|||
"1 c #5A5230", |
|||
"2 c #332E1B", |
|||
"3 c #12100A", |
|||
"4 c #4F472A", |
|||
"5 c #413A23", |
|||
"6 c #302B19", |
|||
"7 c #342E1B", |
|||
"8 c #4A4227", |
|||
"9 c #6E633A", |
|||
"0 c #080704", |
|||
"a c #2F2919", |
|||
"b c #4C4529", |
|||
"c c #51472B", |
|||
"d c #242113", |
|||
"e c #322D1B", |
|||
"f c #5E5432", |
|||
"g c #211E12", |
|||
" ", |
|||
" .+ ", |
|||
" @ # ", |
|||
" $ ", |
|||
" %&* ", |
|||
" = * -;> ", |
|||
" , ' )!~ ", |
|||
" { !] ^!/ (_ ", |
|||
" :<[ }| 1!2<!3[ ", |
|||
" 4!5 6!7 ", |
|||
" 8!* ^!* ", |
|||
" 8!* ^!* ", |
|||
" 8!/ 90a ", |
|||
" b!!cd~e ", |
|||
" f*g a5 ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,87 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *info_xpm[]; |
|||
|
|||
#else |
|||
char * info_xpm[] = { |
|||
"16 16 63 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #9CA3AA", |
|||
"@ c #B4BCC3", |
|||
"# c #E0E9F0", |
|||
"$ c #CDDAE7", |
|||
"% c #9DAAB6", |
|||
"& c #848F9B", |
|||
"* c #E6ECF2", |
|||
"= c #E7EEF4", |
|||
"- c #DEE7EF", |
|||
"; c #CBD9E7", |
|||
"> c #B5CADD", |
|||
", c #9BB5CE", |
|||
"' c #596776", |
|||
") c #DBE5EE", |
|||
"! c #F2F2F2", |
|||
"~ c #727679", |
|||
"{ c #D0DDE9", |
|||
"] c #BACCDF", |
|||
"^ c #AAC2D8", |
|||
"/ c #9DB1C5", |
|||
"( c #D7E2EC", |
|||
"_ c #85898D", |
|||
": c #A8B0B6", |
|||
"< c #A3AEBA", |
|||
"[ c #6F7B86", |
|||
"} c #C4D4DF", |
|||
"| c #C1CBD9", |
|||
"1 c #BDCFE0", |
|||
"2 c #CDDBE8", |
|||
"3 c #79838D", |
|||
"4 c #828B93", |
|||
"5 c #D7E1E7", |
|||
"6 c #CED5E0", |
|||
"7 c #8597A8", |
|||
"8 c #ADC2D4", |
|||
"9 c #B7C8D9", |
|||
"0 c #BCCDDC", |
|||
"a c #C4D1DF", |
|||
"b c #8A939A", |
|||
"c c #D1DAE2", |
|||
"d c #868F97", |
|||
"e c #6D7F90", |
|||
"f c #93A7B9", |
|||
"g c #A1B4C4", |
|||
"h c #8A95A1", |
|||
"i c #868F9A", |
|||
"j c #7E8892", |
|||
"k c #B4AA89", |
|||
"l c #C4B069", |
|||
"m c #A19156", |
|||
"n c #A49B7E", |
|||
"o c #F8EECD", |
|||
"p c #FDFDFB", |
|||
"q c #F6E9BD", |
|||
"r c #D8C274", |
|||
"s c #686350", |
|||
"t c #F5F0DF", |
|||
"u c #FCF8EC", |
|||
"v c #EADFB7", |
|||
"w c #B2A05F", |
|||
"x c #3B382D", |
|||
" ", |
|||
" .... ", |
|||
" .+@#$%&. ", |
|||
" .+*=-;>,'. ", |
|||
" .)=!~{]^/. ", |
|||
" .(-_:<[}|. ", |
|||
" .1;{23456. ", |
|||
" 7890abcd. ", |
|||
" .efghij. ", |
|||
" .klmn. ", |
|||
" .opqr. ", |
|||
" slms ", |
|||
" .tuvw. ", |
|||
" x... ", |
|||
" .. ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,53 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *mirror_H_xpm[]; |
|||
|
|||
#else |
|||
char * mirror_H_xpm[] = { |
|||
"16 16 29 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #9B9B9B", |
|||
"@ c #858585", |
|||
"# c #4C4C4C", |
|||
"$ c #1A1A1A", |
|||
"% c #939393", |
|||
"& c #696969", |
|||
"* c #606060", |
|||
"= c #D2D2D2", |
|||
"- c #202020", |
|||
"; c #FFFFFF", |
|||
"> c #3C3C3C", |
|||
", c #737373", |
|||
"' c #A0A0A5", |
|||
") c #373737", |
|||
"! c #EAEAF9", |
|||
"~ c #141417", |
|||
"{ c #F9F9FF", |
|||
"] c #E9E8FF", |
|||
"^ c #666578", |
|||
"/ c #F2F2FF", |
|||
"( c #E2E1FF", |
|||
"_ c #B7B6DF", |
|||
": c #0F0E0F", |
|||
"< c #EBEAFF", |
|||
"[ c #DAD9FF", |
|||
"} c #CAC9FF", |
|||
"| c #36364B", |
|||
" . ", |
|||
" .+ ", |
|||
" .+. ", |
|||
" .+.@ ", |
|||
" +.# ", |
|||
" .$% ", |
|||
" . .&* ", |
|||
" .+.=- ", |
|||
" .+.;>, ", |
|||
" .+.;') ", |
|||
" +.;!~@ ", |
|||
" .{]^# ", |
|||
" . ./(_:% ", |
|||
" .+.<[}|* ", |
|||
" .+.....- ", |
|||
" .+ ++++++"}; |
|||
#endif |
|||
@ -0,0 +1,55 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *mirror_V_xpm[]; |
|||
|
|||
#else |
|||
char * mirror_V_xpm[] = { |
|||
"16 16 30 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #9B9B9B", |
|||
"@ c #E3E3FF", |
|||
"# c #EBEAFF", |
|||
"$ c #F2F2FF", |
|||
"% c #F9F9FF", |
|||
"& c #FFFFFF", |
|||
"* c #D2D2D2", |
|||
"= c #696969", |
|||
"- c #1A1A1A", |
|||
"; c #4D4D4D", |
|||
"> c #8C8C8C", |
|||
", c #D3D2FF", |
|||
"' c #DAD9FF", |
|||
") c #E2E1FF", |
|||
"! c #E4E3F9", |
|||
"~ c #9B9BA5", |
|||
"{ c #3A3A3C", |
|||
"] c #202020", |
|||
"^ c #636363", |
|||
"/ c #979797", |
|||
"( c #C3C1FF", |
|||
"_ c #B1B0DF", |
|||
": c #626278", |
|||
"< c #141417", |
|||
"[ c #373737", |
|||
"} c #7A7A7A", |
|||
"| c #34344B", |
|||
"1 c #0E0E0F", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
".... .... ....", |
|||
" ++++ ++++ +++", |
|||
" ............. ", |
|||
" .@#$%&&*=-;>++ ", |
|||
" .,')!~{]^/++ ", |
|||
" .(_:<[}++ ", |
|||
" .|1;>++ ", |
|||
" .^/++ ", |
|||
" + "}; |
|||
#endif |
|||
|
|||
@ -0,0 +1,103 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *morgan1_xpm[]; |
|||
|
|||
#else |
|||
char * morgan1_xpm[] = { |
|||
"16 16 79 1", |
|||
" c None", |
|||
". c #6361D1", |
|||
"+ c #6260D0", |
|||
"@ c #5452B1", |
|||
"# c #474596", |
|||
"$ c #5B5AC2", |
|||
"% c #5E5CC7", |
|||
"& c #615FCE", |
|||
"* c #302F66", |
|||
"= c #5251AE", |
|||
"- c #514FAB", |
|||
"; c #504EA9", |
|||
"> c #5A59C0", |
|||
", c #5755B9", |
|||
"' c #D72E2E", |
|||
") c #D72D2D", |
|||
"! c #D62E2E", |
|||
"~ c #FEFEFF", |
|||
"{ c #FBFBFF", |
|||
"] c #F6F6FF", |
|||
"^ c #F1F1FF", |
|||
"/ c #EBE9FC", |
|||
"( c #E3C5D9", |
|||
"_ c #DA727E", |
|||
": c #D13737", |
|||
"< c #FAFAFF", |
|||
"[ c #F5F5FF", |
|||
"} c #F0F0FF", |
|||
"| c #EBEBFF", |
|||
"1 c #E6E6FF", |
|||
"2 c #E1E1FF", |
|||
"3 c #DBDBFF", |
|||
"4 c #D65F6B", |
|||
"5 c #BE5A5A", |
|||
"6 c #9B9B9B", |
|||
"7 c #D53131", |
|||
"8 c #F4F4FF", |
|||
"9 c #EFEFFF", |
|||
"0 c #EAEAFF", |
|||
"a c #E5E5FF", |
|||
"b c #E0E0FF", |
|||
"c c #D6D6FF", |
|||
"d c #D398B6", |
|||
"e c #D13838", |
|||
"f c #D43232", |
|||
"g c #E4E4FF", |
|||
"h c #DFDFFF", |
|||
"i c #DADAFF", |
|||
"j c #D5D5FF", |
|||
"k c #D0D0FF", |
|||
"l c #CBBCEC", |
|||
"m c #B5CCFF", |
|||
"n c #D62D2D", |
|||
"o c #E9E9FF", |
|||
"p c #D4D4FF", |
|||
"q c #CFCFFF", |
|||
"r c #CACAFF", |
|||
"s c #CB92B8", |
|||
"t c #D03838", |
|||
"u c #B56A6A", |
|||
"v c #E3E3FF", |
|||
"w c #DEDEFF", |
|||
"x c #D9D9FF", |
|||
"y c #C9C9FF", |
|||
"z c #C4C4FF", |
|||
"A c #CF5C70", |
|||
"B c #BB5E5E", |
|||
"C c #DDDDFF", |
|||
"D c #D8D8FF", |
|||
"E c #D3D3FF", |
|||
"F c #CECEFF", |
|||
"G c #C9C7FC", |
|||
"H c #C6A9DA", |
|||
"I c #CD6983", |
|||
"J c #CE3D3D", |
|||
"K c #9E9494", |
|||
"L c #D52E2E", |
|||
"M c #CD4040", |
|||
"N c #BE5B5B", |
|||
" .... ", |
|||
" .+@#$+% ", |
|||
".&* =.- ... ", |
|||
".# .; .> ,,", |
|||
".# ....& .", |
|||
" ", |
|||
" ''''''') ", |
|||
" !~{]^/(_: ", |
|||
"'''<[}|12345 ", |
|||
" 67890ab3cdef ", |
|||
" !90ghijkl!mn''", |
|||
" !oghipqrs:tu66", |
|||
" !vwxpqyzAB6 ", |
|||
"'''CDEFGHIJK ", |
|||
" 67''''LMNK6 ", |
|||
" 66666666 "}; |
|||
#endif |
|||
@ -0,0 +1,101 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *morgan2_xpm[]; |
|||
|
|||
#else |
|||
char * morgan2_xpm[] = { |
|||
"16 16 77 1", |
|||
" c None", |
|||
". c #6361D1", |
|||
"+ c #615FCE", |
|||
"@ c #4D4CA3", |
|||
"# c #4E4CA5", |
|||
"$ c #6260D0", |
|||
"% c #605ECC", |
|||
"& c #5755B8", |
|||
"* c #5F5DC8", |
|||
"= c #5F5DCA", |
|||
"- c #504EA9", |
|||
"; c #615FCD", |
|||
"> c #5958BD", |
|||
", c #5E5CC7", |
|||
"' c #4F4DA7", |
|||
") c #D72D2D", |
|||
"! c #D72E2E", |
|||
"~ c #D62D2D", |
|||
"{ c #D52D2D", |
|||
"] c #EEB7BA", |
|||
"^ c #F6F6FF", |
|||
"/ c #F1F1FF", |
|||
"( c #EAE1F3", |
|||
"_ c #E0A1B1", |
|||
": c #D73A3C", |
|||
"< c #D32D2D", |
|||
"[ c #B5CCFF", |
|||
"} c #D12C2C", |
|||
"| c #D93F40", |
|||
"1 c #EEE6F4", |
|||
"2 c #EBEBFF", |
|||
"3 c #E6E6FF", |
|||
"4 c #E1E1FF", |
|||
"5 c #DAC2E1", |
|||
"6 c #D6383B", |
|||
"7 c #C52A2A", |
|||
"8 c #992121", |
|||
"9 c #CD2B2B", |
|||
"0 c #921F1F", |
|||
"a c #E5B6C5", |
|||
"b c #E5E5FF", |
|||
"c c #E0E0FF", |
|||
"d c #DBDBFF", |
|||
"e c #D6D6FF", |
|||
"f c #D2A1C2", |
|||
"g c #D62E2E", |
|||
"h c #DE93A2", |
|||
"i c #DFDFFF", |
|||
"j c #DADAFF", |
|||
"k c #D5D5FF", |
|||
"l c #D0D0FF", |
|||
"m c #CBCBFF", |
|||
"n c #D25C6D", |
|||
"o c #DCA3B8", |
|||
"p c #D4D4FF", |
|||
"q c #CFCFFF", |
|||
"r c #CACAFF", |
|||
"s c #CA99C2", |
|||
"t c #5E1414", |
|||
"u c #D73233", |
|||
"v c #D8C6E8", |
|||
"w c #C9C9FF", |
|||
"x c #C6AEE1", |
|||
"y c #D5373B", |
|||
"z c #8F1E1E", |
|||
"A c #CE2B2B", |
|||
"B c #D795AD", |
|||
"C c #D3D3FF", |
|||
"D c #CECEFF", |
|||
"E c #C9C0F3", |
|||
"F c #CB8CB1", |
|||
"G c #D4373C", |
|||
"H c #A02222", |
|||
"I c #B12525", |
|||
"J c #D32C2C", |
|||
"K c #B92727", |
|||
"L c #6F1818", |
|||
" .... ", |
|||
" ..+@#$% ", |
|||
"... ..& *. ", |
|||
"= -; .. >. ", |
|||
" ,...' .. ", |
|||
" ", |
|||
" )!!!!!! ", |
|||
" ~{]^/(_:< ", |
|||
"!~[}|1234567 ", |
|||
" 890{abcdefg ", |
|||
" {hijklmn}!!!", |
|||
" ! !ojpqrs~t ", |
|||
"!~[}uvpqwxyz ", |
|||
" 8A9BCDEFGH ", |
|||
" I!!!!JKL ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,72 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *move_xpm[]; |
|||
|
|||
#else |
|||
char * move_xpm[] = { |
|||
"16 16 48 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #31313D", |
|||
"@ c #DCDCEF", |
|||
"# c #33333F", |
|||
"$ c #595959", |
|||
"% c #84849B", |
|||
"& c #FFFFFF", |
|||
"* c #010101", |
|||
"= c #4B4B4B", |
|||
"- c #9B9B9B", |
|||
"; c #F1F1FF", |
|||
"> c #464646", |
|||
", c #E7E5FF", |
|||
"' c #5D5D84", |
|||
") c #232332", |
|||
"! c #767676", |
|||
"~ c #FBFBFF", |
|||
"{ c #EAEAFF", |
|||
"] c #E2E1FF", |
|||
"^ c #DBDBFF", |
|||
"/ c #D5D3FF", |
|||
"( c #CDCDFF", |
|||
"_ c #C8C6FF", |
|||
": c #C1C1FF", |
|||
"< c #BDBBFF", |
|||
"[ c #B7B7FF", |
|||
"} c #9594D7", |
|||
"| c #202020", |
|||
"1 c #33333E", |
|||
"2 c #808099", |
|||
"3 c #D2D0FF", |
|||
"4 c #53527C", |
|||
"5 c #222231", |
|||
"6 c #7D7D7D", |
|||
"7 c #C8C8FF", |
|||
"8 c #6C6C6C", |
|||
"9 c #C0BFFF", |
|||
"0 c #B8B8FF", |
|||
"a c #B2B0FF", |
|||
"b c #52527B", |
|||
"c c #ABAAFF", |
|||
"d c #4C4C76", |
|||
"e c #3E3E3E", |
|||
"f c #1F1F2F", |
|||
"g c #8887D0", |
|||
"h c #1F1F2E", |
|||
"i c #181818", |
|||
" . ", |
|||
" +@#$ ", |
|||
" .%&%*= ", |
|||
" .&.--- ", |
|||
" .&.-- ", |
|||
" . .;.-- .> ", |
|||
" +%....,.....')!", |
|||
".@&~;{]^/(_:<[}|", |
|||
" 12....3.....456", |
|||
" *---.7.----*8-", |
|||
" -- .9.-- --", |
|||
" .0.-- ", |
|||
" .a.-- ", |
|||
" .bcd*e ", |
|||
" fgh8-- ", |
|||
" i6-- "}; |
|||
#endif |
|||
@ -0,0 +1,80 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *move_arc_xpm[]; |
|||
|
|||
#else |
|||
char * move_arc_xpm[] = { |
|||
"16 16 56 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000099", |
|||
"@ c #000097", |
|||
"# c #000096", |
|||
"$ c #000073", |
|||
"% c #000039", |
|||
"& c #000036", |
|||
"* c #000051", |
|||
"= c #000086", |
|||
"- c #00008E", |
|||
"; c #000006", |
|||
"> c #00006D", |
|||
", c #000085", |
|||
"' c #31313D", |
|||
") c #DCDCEF", |
|||
"! c #31313C", |
|||
"~ c #00005D", |
|||
"{ c #000074", |
|||
"] c #000000", |
|||
"^ c #84849B", |
|||
"/ c #FFFFFF", |
|||
"( c #00004C", |
|||
"_ c #000095", |
|||
": c #000078", |
|||
"< c #000050", |
|||
"[ c #000058", |
|||
"} c #F1F1FF", |
|||
"| c #000001", |
|||
"1 c #00003B", |
|||
"2 c #E7E5FF", |
|||
"3 c #646489", |
|||
"4 c #232333", |
|||
"5 c #FBFBFF", |
|||
"6 c #EAEAFF", |
|||
"7 c #E2E1FF", |
|||
"8 c #DBDBFF", |
|||
"9 c #D5D3FF", |
|||
"0 c #CDCDFF", |
|||
"a c #C8C6FF", |
|||
"b c #C1C1FF", |
|||
"c c #9F9DDB", |
|||
"d c #30303B", |
|||
"e c #7A7A96", |
|||
"f c #D2D0FF", |
|||
"g c #5A5981", |
|||
"h c #1F1F2F", |
|||
"i c #C8C8FF", |
|||
"j c #00000D", |
|||
"k c #C0BFFF", |
|||
"l c #5C5C82", |
|||
"m c #B8B8FF", |
|||
"n c #56557D", |
|||
"o c #20202F", |
|||
"p c #9493D6", |
|||
"q c #1D1D2C", |
|||
" ..... ", |
|||
" ........+@ ", |
|||
" #$% &*=..- ", |
|||
" ;>., ", |
|||
" ')!~.{ ", |
|||
" ]^/^](_ ", |
|||
" ]/] :<[ ", |
|||
" ] ]}] .|1 ", |
|||
" '^]]]2]]]34 ", |
|||
" ])5}67890abc]", |
|||
" de]]]f]]]gh]", |
|||
" ] ]i] |j ", |
|||
" ] ]k] ] ", |
|||
" ]lmn]] ", |
|||
" opq] ", |
|||
" ] "}; |
|||
#endif |
|||
@ -0,0 +1,73 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *move_circle_xpm[]; |
|||
|
|||
#else |
|||
char * move_circle_xpm[] = { |
|||
"16 16 49 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000096", |
|||
"@ c #00008C", |
|||
"# c #000053", |
|||
"$ c #00008A", |
|||
"% c #00009A", |
|||
"& c #000073", |
|||
"* c #000000", |
|||
"= c #000092", |
|||
"- c #31313D", |
|||
"; c #DCDCEF", |
|||
"> c #31313C", |
|||
", c #000055", |
|||
"' c #00006F", |
|||
") c #84849B", |
|||
"! c #FFFFFF", |
|||
"~ c #00004C", |
|||
"{ c #000083", |
|||
"] c #00007C", |
|||
"^ c #00004A", |
|||
"/ c #F1F1FF", |
|||
"( c #000001", |
|||
"_ c #E7E5FF", |
|||
": c #646489", |
|||
"< c #232332", |
|||
"[ c #FBFBFF", |
|||
"} c #EAEAFF", |
|||
"| c #E2E1FF", |
|||
"1 c #DBDBFF", |
|||
"2 c #D5D3FF", |
|||
"3 c #CDCDFF", |
|||
"4 c #C8C6FF", |
|||
"5 c #C1C1FF", |
|||
"6 c #9F9DDB", |
|||
"7 c #30303B", |
|||
"8 c #7A7A96", |
|||
"9 c #D2D0FF", |
|||
"0 c #5A5981", |
|||
"a c #1F1F2F", |
|||
"b c #C8C8FF", |
|||
"c c #000062", |
|||
"d c #00002E", |
|||
"e c #C0BFFF", |
|||
"f c #5C5C82", |
|||
"g c #B8B8FF", |
|||
"h c #56557D", |
|||
"i c #9493D6", |
|||
"j c #1D1D2C", |
|||
" .... ", |
|||
" .......+ ", |
|||
" ..@# #$.% ", |
|||
" ..& *#.= ", |
|||
" .@ -;>,.' ", |
|||
"..# *)!)*~{ ", |
|||
".. *!* ]^ ", |
|||
".. * */* .(* ", |
|||
"..# -)***_***:< ", |
|||
" .$*;[/}|123456*", |
|||
" +.#78***9***0a ", |
|||
" %.,* *b*cd** ", |
|||
" =.~].*e*d * ", |
|||
" '{^(fgh** ", |
|||
" *aij* ", |
|||
" * "}; |
|||
#endif |
|||
@ -0,0 +1,86 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *move_field_xpm[]; |
|||
|
|||
#else |
|||
char * move_field_xpm[] = { |
|||
"16 16 62 1", |
|||
" c None", |
|||
". c #D2D2D2", |
|||
"+ c #9D9D9D", |
|||
"@ c #DEDEDE", |
|||
"# c #E0E0E0", |
|||
"$ c #5C5C5C", |
|||
"% c #000000", |
|||
"& c #EDEDED", |
|||
"* c #939393", |
|||
"= c #FDFDFD", |
|||
"- c #E4E4E4", |
|||
"; c #F1F1F1", |
|||
"> c #C3C3C3", |
|||
", c #272727", |
|||
"' c #E7E7E7", |
|||
") c #F4F4F4", |
|||
"! c #30303B", |
|||
"~ c #DCDCEF", |
|||
"{ c #33333E", |
|||
"] c #9A9A9A", |
|||
"^ c #E9E9E9", |
|||
"/ c #8C8C8C", |
|||
"( c #84849B", |
|||
"_ c #FFFFFF", |
|||
": c #010101", |
|||
"< c #7C7C7C", |
|||
"[ c #FAFAFA", |
|||
"} c #B0B0B0", |
|||
"| c #7A7A7A", |
|||
"1 c #848484", |
|||
"2 c #999999", |
|||
"3 c #F0F0F0", |
|||
"4 c #B1B1B1", |
|||
"5 c #020202", |
|||
"6 c #CBCBCB", |
|||
"7 c #F1F1FF", |
|||
"8 c #989898", |
|||
"9 c #7F7F7F", |
|||
"0 c #343440", |
|||
"a c #E7E5FF", |
|||
"b c #646489", |
|||
"c c #262635", |
|||
"d c #FBFBFF", |
|||
"e c #EAEAFF", |
|||
"f c #E2E1FF", |
|||
"g c #DBDBFF", |
|||
"h c #D5D3FF", |
|||
"i c #CDCDFF", |
|||
"j c #C8C6FF", |
|||
"k c #C1C1FF", |
|||
"l c #9F9DDB", |
|||
"m c #7A7A96", |
|||
"n c #D2D0FF", |
|||
"o c #5A5981", |
|||
"p c #20202F", |
|||
"q c #C8C8FF", |
|||
"r c #C0BFFF", |
|||
"s c #5C5C82", |
|||
"t c #B8B8FF", |
|||
"u c #56557D", |
|||
"v c #9493D6", |
|||
"w c #1D1D2C", |
|||
".++++++++++++++.", |
|||
"+.@@@@@@@@@@@@@+", |
|||
"+#$%%$&%%%*&===+", |
|||
"+-%;;%;%>,%;===+", |
|||
"+'%))%)%!~{]===+", |
|||
"+^%%%%/%(_(:<==+", |
|||
"+&%[[%-%%_%}|12+", |
|||
"+3==456=%7%6=58+", |
|||
".++90(%%%a%%%bc]", |
|||
" %~d7efghijkl%", |
|||
" !m%%%n%%%op ", |
|||
" % %q% %% ", |
|||
" % %r% % ", |
|||
" %stu%% ", |
|||
" pvw% ", |
|||
" % "}; |
|||
#endif |
|||
@ -0,0 +1,72 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *move_line_xpm[]; |
|||
|
|||
#else |
|||
char * move_line_xpm[] = { |
|||
"16 16 48 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #29299B", |
|||
"@ c #43439B", |
|||
"# c #45459B", |
|||
"$ c #46469B", |
|||
"% c #9B9B9B", |
|||
"& c #47479B", |
|||
"* c #39397D", |
|||
"= c #0D0D1E", |
|||
"- c #353575", |
|||
"; c #70709A", |
|||
"> c #2E2E9B", |
|||
", c #49499B", |
|||
"' c #4A4A9B", |
|||
") c #565656", |
|||
"! c #32323E", |
|||
"~ c #DCDCEF", |
|||
"{ c #4A4A4A", |
|||
"] c #000000", |
|||
"^ c #84849B", |
|||
"/ c #FFFFFF", |
|||
"( c #F1F1FF", |
|||
"_ c #31313D", |
|||
": c #E7E5FF", |
|||
"< c #646489", |
|||
"[ c #232332", |
|||
"} c #FBFBFF", |
|||
"| c #EAEAFF", |
|||
"1 c #E2E1FF", |
|||
"2 c #DBDBFF", |
|||
"3 c #D5D3FF", |
|||
"4 c #CDCDFF", |
|||
"5 c #C8C6FF", |
|||
"6 c #C1C1FF", |
|||
"7 c #9F9DDB", |
|||
"8 c #30303B", |
|||
"9 c #7A7A96", |
|||
"0 c #D2D0FF", |
|||
"a c #5A5981", |
|||
"b c #20202F", |
|||
"c c #C8C8FF", |
|||
"d c #C0BFFF", |
|||
"e c #5C5C82", |
|||
"f c #B8B8FF", |
|||
"g c #56557D", |
|||
"h c #9493D6", |
|||
"i c #1D1D2C", |
|||
" ", |
|||
"..... ...... ...", |
|||
"+@@#$% &*=-; >,'", |
|||
" %%%%% )!~!{ %%", |
|||
" ]^/^]] ", |
|||
" ]/] ", |
|||
" ] ](] ] ", |
|||
" _^]]]:]]]<[ ", |
|||
" ]~}(|1234567]", |
|||
" 89]]]0]]]ab ", |
|||
" ] ]c] ]] ", |
|||
" ] ]d] ] ", |
|||
" ]efg]] ", |
|||
" bhi] ", |
|||
" ] ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,70 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *move_polygon_xpm[]; |
|||
|
|||
#else |
|||
char * move_polygon_xpm[] = { |
|||
"16 16 46 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000099", |
|||
"@ c #00007D", |
|||
"# c #000094", |
|||
"$ c #000074", |
|||
"% c #00001E", |
|||
"& c #000066", |
|||
"* c #31313D", |
|||
"= c #DCDCEF", |
|||
"- c #30303E", |
|||
"; c #000046", |
|||
"> c #000000", |
|||
", c #84849B", |
|||
"' c #FFFFFF", |
|||
") c #000001", |
|||
"! c #00006D", |
|||
"~ c #F1F1FF", |
|||
"{ c #00007C", |
|||
"] c #E7E5FF", |
|||
"^ c #646489", |
|||
"/ c #232332", |
|||
"( c #FBFBFF", |
|||
"_ c #EAEAFF", |
|||
": c #E2E1FF", |
|||
"< c #DBDBFF", |
|||
"[ c #D5D3FF", |
|||
"} c #CDCDFF", |
|||
"| c #C8C6FF", |
|||
"1 c #C1C1FF", |
|||
"2 c #9F9DDB", |
|||
"3 c #30303B", |
|||
"4 c #7A7A96", |
|||
"5 c #D2D0FF", |
|||
"6 c #5A5981", |
|||
"7 c #20202F", |
|||
"8 c #000062", |
|||
"9 c #C8C8FF", |
|||
"0 c #000063", |
|||
"a c #00004C", |
|||
"b c #C0BFFF", |
|||
"c c #5C5C82", |
|||
"d c #B8B8FF", |
|||
"e c #56557D", |
|||
"f c #9493D6", |
|||
"g c #1D1D2C", |
|||
"........ ", |
|||
"........+ ", |
|||
" @.# ", |
|||
" $%& ", |
|||
" *=-; ", |
|||
" >,',)> ", |
|||
" >'>!> ", |
|||
" > >~>{ > ", |
|||
" *,>>>]>>>^/ ", |
|||
" >=(~_:<[}|12>", |
|||
" 34>>>5>>>67 ", |
|||
" ...8)!{>9>0>>> ", |
|||
" ....a{.>b>{ > ", |
|||
" >>cde>> ", |
|||
" 7fg> ", |
|||
" > "}; |
|||
#endif |
|||
@ -0,0 +1,64 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *move_rectangle_xpm[]; |
|||
|
|||
#else |
|||
char * move_rectangle_xpm[] = { |
|||
"16 16 40 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000000", |
|||
"@ c #31313D", |
|||
"# c #DCDCEF", |
|||
"$ c #31313C", |
|||
"% c #000062", |
|||
"& c #84849B", |
|||
"* c #FFFFFF", |
|||
"= c #000001", |
|||
"- c #00004C", |
|||
"; c #00006D", |
|||
"> c #00007C", |
|||
", c #F1F1FF", |
|||
"' c #E7E5FF", |
|||
") c #646489", |
|||
"! c #232332", |
|||
"~ c #FBFBFF", |
|||
"{ c #EAEAFF", |
|||
"] c #E2E1FF", |
|||
"^ c #DBDBFF", |
|||
"/ c #D5D3FF", |
|||
"( c #CDCDFF", |
|||
"_ c #C8C6FF", |
|||
": c #C1C1FF", |
|||
"< c #9F9DDB", |
|||
"[ c #30303B", |
|||
"} c #7A7A96", |
|||
"| c #D2D0FF", |
|||
"1 c #5A5981", |
|||
"2 c #20202F", |
|||
"3 c #C8C8FF", |
|||
"4 c #000063", |
|||
"5 c #C0BFFF", |
|||
"6 c #00006F", |
|||
"7 c #5C5C82", |
|||
"8 c #B8B8FF", |
|||
"9 c #56557D", |
|||
"0 c #9493D6", |
|||
"a c #1D1D2C", |
|||
"............. ", |
|||
"............. ", |
|||
".. .. ", |
|||
".. + .. ", |
|||
".. @#$%. ", |
|||
".. +&*&=- ", |
|||
".. +*+;>+ ", |
|||
".. + +,+>.+ ", |
|||
".. @&+++'+++)! ", |
|||
".. +#~,{]^/(_:<+", |
|||
".. [}+++|+++12 ", |
|||
"....%=;>+3+4>++ ", |
|||
".....->.+5+>6+ ", |
|||
" ++789++ ", |
|||
" 20a+ ", |
|||
" + "}; |
|||
#endif |
|||
@ -0,0 +1,70 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *move_text_xpm[]; |
|||
|
|||
#else |
|||
char * move_text_xpm[] = { |
|||
"16 16 46 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000098", |
|||
"@ c #00005D", |
|||
"# c #00007D", |
|||
"$ c #000000", |
|||
"% c #00006C", |
|||
"& c #303040", |
|||
"* c #DCDCEF", |
|||
"= c #31313C", |
|||
"- c #000058", |
|||
"; c #000001", |
|||
"> c #84849B", |
|||
", c #FFFFFF", |
|||
"' c #00008D", |
|||
") c #00007C", |
|||
"! c #F1F1FF", |
|||
"~ c #31313D", |
|||
"{ c #E7E5FF", |
|||
"] c #646489", |
|||
"^ c #232332", |
|||
"/ c #FBFBFF", |
|||
"( c #EAEAFF", |
|||
"_ c #E2E1FF", |
|||
": c #DBDBFF", |
|||
"< c #D5D3FF", |
|||
"[ c #CDCDFF", |
|||
"} c #C8C6FF", |
|||
"| c #C1C1FF", |
|||
"1 c #9F9DDB", |
|||
"2 c #30303B", |
|||
"3 c #7A7A96", |
|||
"4 c #D2D0FF", |
|||
"5 c #5A5981", |
|||
"6 c #20202F", |
|||
"7 c #00006D", |
|||
"8 c #C8C8FF", |
|||
"9 c #00004C", |
|||
"0 c #C0BFFF", |
|||
"a c #000050", |
|||
"b c #5C5C82", |
|||
"c c #B8B8FF", |
|||
"d c #56557D", |
|||
"e c #1F1F31", |
|||
"f c #9493D6", |
|||
"g c #1C1C2F", |
|||
".............. ", |
|||
".............. ", |
|||
".+ .... +. ", |
|||
".@ ...#$ . ", |
|||
" ..%&*= ", |
|||
" .-;>,>$$ ", |
|||
" -')$,$ ", |
|||
" ;).$!$ $ ", |
|||
" ~>$$${$$$]^ ", |
|||
" $*/!(_:<[}|1$", |
|||
" 23$$$4$$$56 ", |
|||
" ;7)$8$ $$ ", |
|||
" 9).$0$ $ ", |
|||
" ..a;bcd$$ ", |
|||
" ....@efg$ ", |
|||
" $$$ "}; |
|||
#endif |
|||
@ -0,0 +1,157 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *new_library_xpm[]; |
|||
|
|||
#else |
|||
char * new_library_xpm[] = { |
|||
"16 16 133 2", |
|||
" c None", |
|||
". c #060708", |
|||
"+ c #323538", |
|||
"@ c #1E1E1F", |
|||
"# c #FFF500", |
|||
"$ c #0A0D0E", |
|||
"% c #E4E6E7", |
|||
"& c #F5F5F5", |
|||
"* c #919175", |
|||
"= c #EFE500", |
|||
"- c #B4B272", |
|||
"; c #F6F6F6", |
|||
"> c #D7D7D7", |
|||
", c #DFE0E1", |
|||
"' c #636222", |
|||
") c #F7EE0B", |
|||
"! c #F7ED0C", |
|||
"~ c #9B9B9B", |
|||
"{ c #050608", |
|||
"] c #E3E6E7", |
|||
"^ c #D7D8D8", |
|||
"/ c #D1D1D1", |
|||
"( c #A9A881", |
|||
"_ c #070A0D", |
|||
": c #E5E7E9", |
|||
"< c #F8F8F8", |
|||
"[ c #D4D4D4", |
|||
"} c #BCBCBC", |
|||
"| c #CCCCCC", |
|||
"1 c #C9C9C9", |
|||
"2 c #B4B172", |
|||
"3 c #F7EE0C", |
|||
"4 c #FBF101", |
|||
"5 c #020305", |
|||
"6 c #9E9E9F", |
|||
"7 c #F4F4F5", |
|||
"8 c #CECECE", |
|||
"9 c #CFCFCF", |
|||
"0 c #B5B5B5", |
|||
"a c #CBCAAC", |
|||
"b c #FBF20F", |
|||
"c c #CBC888", |
|||
"d c #F6ED0B", |
|||
"e c #626144", |
|||
"f c #353535", |
|||
"g c #0A0A0A", |
|||
"h c #000000", |
|||
"i c #838686", |
|||
"j c #B3B7BB", |
|||
"k c #DDDDDD", |
|||
"l c #B7B7B7", |
|||
"m c #C8C8C8", |
|||
"n c #C4C4C4", |
|||
"o c #B7BABD", |
|||
"p c #A8AA8F", |
|||
"q c #A1A1A1", |
|||
"r c #E4E3C6", |
|||
"s c #A2A2A2", |
|||
"t c #DFDFDF", |
|||
"u c #232324", |
|||
"v c #1B1B1B", |
|||
"w c #98999B", |
|||
"x c #BBBBBB", |
|||
"y c #C3C3C3", |
|||
"z c #BCBDBE", |
|||
"A c #A2A5A7", |
|||
"B c #CECFD0", |
|||
"C c #DADBDB", |
|||
"D c #E1E2E3", |
|||
"E c #F6F7F8", |
|||
"F c #D6D6D8", |
|||
"G c #AEB0B1", |
|||
"H c #7B7E80", |
|||
"I c #B3B6B8", |
|||
"J c #BFBFBF", |
|||
"K c #AEB1B5", |
|||
"L c #B9BBBC", |
|||
"M c #F2F2F2", |
|||
"N c #FBFCFC", |
|||
"O c #F8FAFB", |
|||
"P c #F7F8F9", |
|||
"Q c #CACBCD", |
|||
"R c #858B91", |
|||
"S c #171818", |
|||
"T c #737E87", |
|||
"U c #B9B9B9", |
|||
"V c #D8D8D8", |
|||
"W c #A7AAAC", |
|||
"X c #E4E4E4", |
|||
"Y c #E5E5E5", |
|||
"Z c #E3E4E4", |
|||
"` c #F9FAFB", |
|||
" . c #DEDFDF", |
|||
".. c #B3B6BA", |
|||
"+. c #171A1D", |
|||
"@. c #414447", |
|||
"#. c #8D9398", |
|||
"$. c #ABADAF", |
|||
"%. c #FEFEFE", |
|||
"&. c #FDFDFD", |
|||
"*. c #F9FAFA", |
|||
"=. c #F9F9FA", |
|||
"-. c #CBCDD0", |
|||
";. c #737B84", |
|||
">. c #626973", |
|||
",. c #868788", |
|||
"'. c #EAEAEA", |
|||
"). c #FDFEFE", |
|||
"!. c #FCFDFD", |
|||
"~. c #FAFBFB", |
|||
"{. c #EFF0F0", |
|||
"]. c #A8ADB3", |
|||
"^. c #15171A", |
|||
"/. c #11151A", |
|||
"(. c #47515D", |
|||
"_. c #C0C6CC", |
|||
":. c #C4C8CB", |
|||
"<. c #D5D6D7", |
|||
"[. c #DBDBDB", |
|||
"}. c #F3F4F4", |
|||
"|. c #D1D1D2", |
|||
"1. c #798087", |
|||
"2. c #191B1D", |
|||
"3. c #2A2D30", |
|||
"4. c #474D50", |
|||
"5. c #7E8284", |
|||
"6. c #9B9D9F", |
|||
"7. c #9FA5AB", |
|||
"8. c #91989E", |
|||
"9. c #0C0E10", |
|||
"0. c #2A333D", |
|||
"a. c #181D21", |
|||
"b. c #1D2227", |
|||
" . + @ # ", |
|||
" $ % & * = # - # ", |
|||
" $ % ; > , ' ) # ! ~ ", |
|||
" { ] ; ^ / # # # ( # # # ", |
|||
" _ : < [ } | 1 2 3 # 4 2 ~ ~ ", |
|||
"5 6 7 8 9 | 0 a b c # 2 d e f g ", |
|||
"h i j k l m n o p q # ~ r s t u ", |
|||
" v w x m y z A B C D ~ E F G h ", |
|||
" h H I t J K L M N O P E Q R h ", |
|||
" S T U V W X Y Z ` P ...+. ", |
|||
" h @.#.$.[ %.&.N *.=.-.;.h ", |
|||
" h >.,.Y '.).!.~.{.].^. ", |
|||
" /.(._.:.<.[.}.|.1.h ", |
|||
" 2.3.4.5.6.7.8.9. ", |
|||
" 0.a.b. ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,159 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *open_library_xpm[]; |
|||
|
|||
#else |
|||
char * open_library_xpm[] = { |
|||
"16 16 135 2", |
|||
" c None", |
|||
". c #060708", |
|||
"+ c #323538", |
|||
"@ c #1E1E1F", |
|||
"# c #0A0D0E", |
|||
"$ c #E4E6E7", |
|||
"% c #F5F5F5", |
|||
"& c #828486", |
|||
"* c #040405", |
|||
"= c #F6F6F6", |
|||
"- c #D5D5D5", |
|||
"; c #DFE0E1", |
|||
"> c #1F2021", |
|||
", c #050608", |
|||
"' c #E3E6E7", |
|||
") c #F2F2F2", |
|||
"! c #7B7C7C", |
|||
"~ c #212121", |
|||
"{ c #DADADA", |
|||
"] c #BEBFC2", |
|||
"^ c #0E0E0E", |
|||
"/ c #070A0D", |
|||
"( c #E5E7E9", |
|||
"_ c #191919", |
|||
": c #777777", |
|||
"< c #C9C9C9", |
|||
"[ c #DCDDDD", |
|||
"} c #525354", |
|||
"| c #020305", |
|||
"1 c #9E9E9F", |
|||
"2 c #F4F4F5", |
|||
"3 c #3F3F3F", |
|||
"4 c #292929", |
|||
"5 c #272727", |
|||
"6 c #A6A7A8", |
|||
"7 c #C5C5C5", |
|||
"8 c #555555", |
|||
"9 c #343434", |
|||
"0 c #353535", |
|||
"a c #0A0A0A", |
|||
"b c #000000", |
|||
"c c #838686", |
|||
"d c #B3B7BB", |
|||
"e c #DDDDDD", |
|||
"f c #9A9A9A", |
|||
"g c #171717", |
|||
"h c #949494", |
|||
"i c #6D6D6E", |
|||
"j c #0F0F10", |
|||
"k c #999A9A", |
|||
"l c #FBFCFC", |
|||
"m c #FBFBFB", |
|||
"n c #FAFAFB", |
|||
"o c #F9FAFB", |
|||
"p c #E9E9E9", |
|||
"q c #232324", |
|||
"r c #1B1B1B", |
|||
"s c #98999B", |
|||
"t c #BBBBBB", |
|||
"u c #C2C2C2", |
|||
"v c #9E9E9E", |
|||
"w c #BBBCBD", |
|||
"x c #9EA0A1", |
|||
"y c #8A8B8B", |
|||
"z c #141414", |
|||
"A c #BABBBC", |
|||
"B c #F7F8F9", |
|||
"C c #F6F7F8", |
|||
"D c #DFDFE1", |
|||
"E c #AEB0B1", |
|||
"F c #7B7E80", |
|||
"G c #B3B6B8", |
|||
"H c #DFDFDF", |
|||
"I c #BEBEBE", |
|||
"J c #AEB1B5", |
|||
"K c #B9BBBC", |
|||
"L c #6B6B6B", |
|||
"M c #333334", |
|||
"N c #E0E1E2", |
|||
"O c #CDCECF", |
|||
"P c #CACBCD", |
|||
"Q c #858B91", |
|||
"R c #171818", |
|||
"S c #737E87", |
|||
"T c #B9B9B9", |
|||
"U c #D8D8D8", |
|||
"V c #A7AAAC", |
|||
"W c #E4E4E4", |
|||
"X c #D7D7D7", |
|||
"Y c #767676", |
|||
"Z c #4A4A4B", |
|||
"` c #626262", |
|||
" . c #B3B6BA", |
|||
".. c #171A1D", |
|||
"+. c #414447", |
|||
"@. c #8D9398", |
|||
"#. c #ABADAF", |
|||
"$. c #D4D4D4", |
|||
"%. c #FEFEFE", |
|||
"&. c #D0D0D0", |
|||
"*. c #323232", |
|||
"=. c #0D0D0D", |
|||
"-. c #060606", |
|||
";. c #AEAFB1", |
|||
">. c #737B84", |
|||
",. c #626973", |
|||
"'. c #868788", |
|||
"). c #E5E5E5", |
|||
"!. c #EAEAEA", |
|||
"~. c #E9EAEA", |
|||
"{. c #ABABAB", |
|||
"]. c #505050", |
|||
"^. c #4D4D4D", |
|||
"/. c #A7ACB2", |
|||
"(. c #15171A", |
|||
"_. c #11151A", |
|||
":. c #47515D", |
|||
"<. c #C0C6CC", |
|||
"[. c #C4C8CB", |
|||
"}. c #D5D6D7", |
|||
"|. c #D9D9D9", |
|||
"1. c #BCBCBC", |
|||
"2. c #BCBCBD", |
|||
"3. c #798087", |
|||
"4. c #191B1D", |
|||
"5. c #2A2D30", |
|||
"6. c #474D50", |
|||
"7. c #7E8284", |
|||
"8. c #9B9D9F", |
|||
"9. c #9FA5AB", |
|||
"0. c #91989E", |
|||
"a. c #0C0E10", |
|||
"b. c #2A333D", |
|||
"c. c #181D21", |
|||
"d. c #1D2227", |
|||
" . + @ ", |
|||
" # $ % & * ", |
|||
" # $ = - ; > ", |
|||
" , ' ) ! ~ { ] ^ ", |
|||
" / ( = ^ _ : < [ } ", |
|||
"| 1 2 < 3 ~ 4 5 6 7 8 9 9 9 0 a ", |
|||
"b c d e f g h i j k l m n o p q ", |
|||
" r s t u v w x y z A B C D E b ", |
|||
" b F G H I J K e L M N O P Q b ", |
|||
" R S T U V W X Y 5 Z ` ... ", |
|||
" b +.@.#.$.%.&.*.=.-.;.>.b ", |
|||
" b ,.'.).!.~.{.].^./.(. ", |
|||
" _.:.<.[.}.|.1.2.3.b ", |
|||
" 4.5.6.7.8.9.0.a. ", |
|||
" b.c.d. ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,73 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *options_arc_xpm[]; |
|||
|
|||
#else |
|||
char * options_arc_xpm[] = { |
|||
"16 16 49 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000099", |
|||
"@ c #000097", |
|||
"# c #000096", |
|||
"$ c #000073", |
|||
"% c #000039", |
|||
"& c #000036", |
|||
"* c #000051", |
|||
"= c #000086", |
|||
"- c #00008E", |
|||
"; c #000093", |
|||
"> c #000085", |
|||
", c #000074", |
|||
"' c #000095", |
|||
") c #000058", |
|||
"! c #000000", |
|||
"~ c #000001", |
|||
"{ c #F0F0F0", |
|||
"] c #DEDEDE", |
|||
"^ c #DFDFDF", |
|||
"/ c #DFDFE0", |
|||
"( c #BFBFBF", |
|||
"_ c #C0C0C0", |
|||
": c #C0C0C1", |
|||
"< c #979797", |
|||
"[ c #989898", |
|||
"} c #E3E3E3", |
|||
"| c #DDDDDD", |
|||
"1 c #C8C8C8", |
|||
"2 c #656565", |
|||
"3 c #838384", |
|||
"4 c #878788", |
|||
"5 c #888888", |
|||
"6 c #AFAFAF", |
|||
"7 c #A3A3A3", |
|||
"8 c #F1F1F1", |
|||
"9 c #CECECE", |
|||
"0 c #ABABAB", |
|||
"a c #EEEEEE", |
|||
"b c #EDEDED", |
|||
"c c #E9E9E9", |
|||
"d c #D9D9D9", |
|||
"e c #838383", |
|||
"f c #C1C1C1", |
|||
"g c #B5B5B5", |
|||
"h c #757575", |
|||
"i c #6B6B6B", |
|||
"j c #777777", |
|||
" ..... ", |
|||
" ........+@ ", |
|||
" #$% &*=..- ", |
|||
" ;.> ", |
|||
" #., ", |
|||
" .' ", |
|||
" +.) ", |
|||
" !!!!!!!!~~!!", |
|||
" !{]^^^^^^//^^", |
|||
" !^((((((_::__", |
|||
" !^(<!!![_::__", |
|||
" !^(!}|1!23456", |
|||
" !^(!|_7!!!!!8", |
|||
" !^(!97<!0abcd", |
|||
" !^_[!!!2effff", |
|||
" !^_ghi2j5!!!["}; |
|||
#endif |
|||
@ -0,0 +1,78 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *options_circle_xpm[]; |
|||
|
|||
#else |
|||
char * options_circle_xpm[] = { |
|||
"16 16 54 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000096", |
|||
"@ c #00008C", |
|||
"# c #000053", |
|||
"$ c #00008A", |
|||
"% c #00009A", |
|||
"& c #000073", |
|||
"* c #00007A", |
|||
"= c #000092", |
|||
"- c #00006F", |
|||
"; c #000000", |
|||
"> c #000001", |
|||
", c #F0F0F0", |
|||
"' c #DEDEDE", |
|||
") c #DFDFDF", |
|||
"! c #DFDFE0", |
|||
"~ c #BFBFBF", |
|||
"{ c #C0C0C1", |
|||
"] c #C0C0C0", |
|||
"^ c #979797", |
|||
"/ c #989898", |
|||
"( c #E3E3E3", |
|||
"_ c #DDDDDD", |
|||
": c #C8C8C8", |
|||
"< c #656566", |
|||
"[ c #838384", |
|||
"} c #878787", |
|||
"| c #888888", |
|||
"1 c #AFAFAF", |
|||
"2 c #A3A3A4", |
|||
"3 c #F1F1F1", |
|||
"4 c #BFBFC0", |
|||
"5 c #CECECF", |
|||
"6 c #979798", |
|||
"7 c #ABABAC", |
|||
"8 c #EEEEEE", |
|||
"9 c #EDEDED", |
|||
"0 c #E9E9E9", |
|||
"a c #D9D9D9", |
|||
"b c #989899", |
|||
"c c #838383", |
|||
"d c #C1C1C1", |
|||
"e c #B5B5B6", |
|||
"f c #757576", |
|||
"g c #6B6B6C", |
|||
"h c #656565", |
|||
"i c #777777", |
|||
"j c #A7A7A7", |
|||
"k c #7B7B7B", |
|||
"l c #747474", |
|||
"m c #717171", |
|||
"n c #7D7D7D", |
|||
"o c #A3A3A3", |
|||
" .... ", |
|||
" .......+ ", |
|||
" ..@# #$.% ", |
|||
" ..& *.= ", |
|||
" .@ =.- ", |
|||
"..# ;;;;;;;>>>;;", |
|||
".. ;,')))))!!!))", |
|||
".. ;)~~~~~~{{{]]", |
|||
"..#;)~^;;;/{{{]]", |
|||
" .$;)~;(_:><[}|1", |
|||
" +.;)~;_]2>>>;;3", |
|||
" %>!4>526>7890a", |
|||
" >!{b>>><cdddd", |
|||
" ;){efghi|;;;/", |
|||
" ;)]jkklm;(_:;", |
|||
" ;)]n;;;;;_]o;"}; |
|||
#endif |
|||
@ -0,0 +1,77 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *options_new_pad_xpm[]; |
|||
|
|||
#else |
|||
char * options_new_pad_xpm[] = { |
|||
"16 16 53 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #FFF500", |
|||
"@ c #000200", |
|||
"# c #003B00", |
|||
"$ c #006400", |
|||
"% c #007700", |
|||
"& c #1E5000", |
|||
"* c #ECE300", |
|||
"= c #787300", |
|||
"- c #005F00", |
|||
"; c #007D00", |
|||
"> c #428200", |
|||
", c #EBE200", |
|||
"' c #F6ED00", |
|||
") c #007600", |
|||
"! c #006100", |
|||
"~ c #2B2900", |
|||
"{ c #427600", |
|||
"] c #EBE600", |
|||
"^ c #F8EF00", |
|||
"/ c #6A6500", |
|||
"( c #268200", |
|||
"_ c #EBEB00", |
|||
": c #428D00", |
|||
"< c #585400", |
|||
"[ c #F7ED00", |
|||
"} c #007800", |
|||
"| c #1E8600", |
|||
"1 c #003F00", |
|||
"2 c #006E00", |
|||
"3 c #003800", |
|||
"4 c #F0F0F0", |
|||
"5 c #DEDEDE", |
|||
"6 c #DFDFDF", |
|||
"7 c #BFBFBF", |
|||
"8 c #C0C0C0", |
|||
"9 c #979797", |
|||
"0 c #989898", |
|||
"a c #E3E3E3", |
|||
"b c #DDDDDD", |
|||
"c c #C8C8C8", |
|||
"d c #656565", |
|||
"e c #838383", |
|||
"f c #878787", |
|||
"g c #888888", |
|||
"h c #A3A3A3", |
|||
"i c #CECECE", |
|||
"j c #ABABAB", |
|||
"k c #EEEEEE", |
|||
"l c #EDEDED", |
|||
"m c #E9E9E9", |
|||
"n c #C1C1C1", |
|||
" ..... + ", |
|||
" @#$%$&* +=+ ", |
|||
" @-;;;;;>,+' ", |
|||
".#;;)!)+++~+++ ", |
|||
".$;) %{]+^/ ", |
|||
".%;! (_:+<[ ", |
|||
".$;) }|1+. ", |
|||
".#;;%2};;3.. ", |
|||
" @-;;...........", |
|||
" @#.45666666666", |
|||
" ..67777778888", |
|||
" .679...08888", |
|||
" .67.abc.defg", |
|||
" .67.b8h.....", |
|||
" .67.ih9.jklm", |
|||
" .680...dennn"}; |
|||
#endif |
|||
@ -0,0 +1,57 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *options_pad_xpm[]; |
|||
|
|||
#else |
|||
char * options_pad_xpm[] = { |
|||
"16 16 33 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #000200", |
|||
"@ c #003B00", |
|||
"# c #006400", |
|||
"$ c #007700", |
|||
"% c #005F00", |
|||
"& c #007D00", |
|||
"* c #007600", |
|||
"= c #006100", |
|||
"- c #006E00", |
|||
"; c #007800", |
|||
"> c #F0F0F0", |
|||
", c #DEDEDE", |
|||
"' c #DFDFDF", |
|||
") c #BFBFBF", |
|||
"! c #C0C0C0", |
|||
"~ c #979797", |
|||
"{ c #989898", |
|||
"] c #E3E3E3", |
|||
"^ c #DDDDDD", |
|||
"/ c #C8C8C8", |
|||
"( c #656565", |
|||
"_ c #838383", |
|||
": c #878787", |
|||
"< c #888888", |
|||
"[ c #A3A3A3", |
|||
"} c #CECECE", |
|||
"| c #ABABAB", |
|||
"1 c #EEEEEE", |
|||
"2 c #EDEDED", |
|||
"3 c #E9E9E9", |
|||
"4 c #C1C1C1", |
|||
" ..... ", |
|||
" +@#$#@+ ", |
|||
" +%&&&&&%+ ", |
|||
".@&&*=*&&@. ", |
|||
".#&* $&#. ", |
|||
".$&= -&$. ", |
|||
".#&* ;&#. ", |
|||
".@&&$-;&&@. ", |
|||
" +%&&...........", |
|||
" +@.>,'''''''''", |
|||
" ..'))))))!!!!", |
|||
" .')~...{!!!!", |
|||
" .').]^/.(_:<", |
|||
" .').^![.....", |
|||
" .').}[~.|123", |
|||
" .'!{...(_444"}; |
|||
#endif |
|||
@ -0,0 +1,68 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *options_rectangle_xpm[]; |
|||
|
|||
#else |
|||
char * options_rectangle_xpm[] = { |
|||
"16 16 44 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000000", |
|||
"@ c #000001", |
|||
"# c #F0F0F0", |
|||
"$ c #DEDEDE", |
|||
"% c #DFDFDF", |
|||
"& c #DFDFE0", |
|||
"* c #BFBFBF", |
|||
"= c #C0C0C1", |
|||
"- c #C0C0C0", |
|||
"; c #979797", |
|||
"> c #989898", |
|||
", c #E3E3E3", |
|||
"' c #DDDDDD", |
|||
") c #C8C8C8", |
|||
"! c #656566", |
|||
"~ c #838384", |
|||
"{ c #878787", |
|||
"] c #888888", |
|||
"^ c #AFAFAF", |
|||
"/ c #A3A3A3", |
|||
"( c #F1F1F1", |
|||
"_ c #BFBFC0", |
|||
": c #CECECF", |
|||
"< c #A3A3A4", |
|||
"[ c #979798", |
|||
"} c #ABABAC", |
|||
"| c #EEEEEF", |
|||
"1 c #EDEDED", |
|||
"2 c #E9E9E9", |
|||
"3 c #D9D9D9", |
|||
"4 c #989899", |
|||
"5 c #C1C1C1", |
|||
"6 c #B5B5B5", |
|||
"7 c #757575", |
|||
"8 c #6B6B6B", |
|||
"9 c #656565", |
|||
"0 c #777777", |
|||
"a c #A7A7A7", |
|||
"b c #7B7B7B", |
|||
"c c #747474", |
|||
"d c #717171", |
|||
"e c #7D7D7D", |
|||
"............. ", |
|||
"............. ", |
|||
".. .. ", |
|||
".. .. ", |
|||
".. .. ", |
|||
".. +++++++@@+++", |
|||
".. +#$%%%%%&&%%%", |
|||
".. +%******==---", |
|||
".. +%*;+++>==---", |
|||
".. +%*+,')+!~{]^", |
|||
".. +%*+'-/+@@++(", |
|||
"...@&_@:<[@}|123", |
|||
"...@&=4@@@!~5555", |
|||
" +%-67890]+++>", |
|||
" +%-abbcd+,')+", |
|||
" +%-e+++++'-/+"}; |
|||
#endif |
|||
@ -0,0 +1,55 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *options_segment_xpm[]; |
|||
|
|||
#else |
|||
char * options_segment_xpm[] = { |
|||
"16 16 31 1", |
|||
" c None", |
|||
". c #007D00", |
|||
"+ c #000000", |
|||
"@ c #F0F0F0", |
|||
"# c #DEDEDE", |
|||
"$ c #DFDFDF", |
|||
"% c #BFBFBF", |
|||
"& c #C0C0C0", |
|||
"* c #979797", |
|||
"= c #989898", |
|||
"- c #E3E3E3", |
|||
"; c #DDDDDD", |
|||
"> c #C8C8C8", |
|||
", c #656565", |
|||
"' c #838383", |
|||
") c #878787", |
|||
"! c #888888", |
|||
"~ c #AFAFAF", |
|||
"{ c #A3A3A3", |
|||
"] c #F1F1F1", |
|||
"^ c #CECECE", |
|||
"/ c #ABABAB", |
|||
"( c #EEEEEE", |
|||
"_ c #EDEDED", |
|||
": c #E9E9E9", |
|||
"< c #D9D9D9", |
|||
"[ c #C1C1C1", |
|||
"} c #B5B5B5", |
|||
"| c #757575", |
|||
"1 c #6B6B6B", |
|||
"2 c #777777", |
|||
" ", |
|||
" ", |
|||
"................", |
|||
"................", |
|||
" ", |
|||
" ", |
|||
" ", |
|||
" ++++++++++++", |
|||
" +@#$$$$$$$$$$", |
|||
" +$%%%%%%&&&&&", |
|||
" +$%*+++=&&&&&", |
|||
" +$%+-;>+,')!~", |
|||
" +$%+;&{+++++]", |
|||
" +$%+^{*+/(_:<", |
|||
" +$&=+++,'[[[[", |
|||
" +$&}|1,2!+++="}; |
|||
#endif |
|||
@ -0,0 +1,64 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *options_text_xpm[]; |
|||
|
|||
#else |
|||
char * options_text_xpm[] = { |
|||
"16 16 40 1", |
|||
" c None", |
|||
". c #00009B", |
|||
"+ c #000098", |
|||
"@ c #00005D", |
|||
"# c #000000", |
|||
"$ c #000001", |
|||
"% c #F0F0F0", |
|||
"& c #DEDEDE", |
|||
"* c #DFDFE0", |
|||
"= c #DFDFDF", |
|||
"- c #BFBFBF", |
|||
"; c #BFBFC0", |
|||
"> c #C0C0C0", |
|||
", c #979798", |
|||
"' c #989898", |
|||
") c #C1C1C1", |
|||
"! c #E3E3E4", |
|||
"~ c #DDDDDE", |
|||
"{ c #C8C8C9", |
|||
"] c #656565", |
|||
"^ c #838383", |
|||
"/ c #878787", |
|||
"( c #888888", |
|||
"_ c #AFAFAF", |
|||
": c #C0C0C1", |
|||
"< c #A3A3A4", |
|||
"[ c #F1F1F1", |
|||
"} c #CECECF", |
|||
"| c #ABABAC", |
|||
"1 c #EEEEEE", |
|||
"2 c #EDEDED", |
|||
"3 c #E9E9E9", |
|||
"4 c #D9D9D9", |
|||
"5 c #989899", |
|||
"6 c #656566", |
|||
"7 c #838384", |
|||
"8 c #B5B5B5", |
|||
"9 c #757575", |
|||
"0 c #6B6B6B", |
|||
"a c #777777", |
|||
".............. ", |
|||
".............. ", |
|||
".+ .... +. ", |
|||
".@ .... . ", |
|||
" .... ", |
|||
" .... ", |
|||
" .... ", |
|||
" ##$$$$#######", |
|||
" #%&****=======", |
|||
" #=-;;;;->>>>>>", |
|||
" #=-,$$$'>>>>>)", |
|||
" #=-$!~{#]^/(_)", |
|||
" #=;$~:<#####[>", |
|||
" #*;$}<,$|1234)", |
|||
" #*:5$$$67))))>", |
|||
" #=>890]a(###'>"}; |
|||
#endif |
|||
@ -0,0 +1,138 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *orient_xpm[]; |
|||
|
|||
#else |
|||
char * orient_xpm[] = { |
|||
"16 16 114 2", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #010101", |
|||
"@ c #656565", |
|||
"# c #B2B2B2", |
|||
"$ c #6E6E70", |
|||
"% c #6A6A70", |
|||
"& c #A1A1AD", |
|||
"* c #585860", |
|||
"= c #1A1A1A", |
|||
"- c #C19393", |
|||
"; c #F6DBDD", |
|||
"> c #F5F5FB", |
|||
", c #76767B", |
|||
"' c #72727A", |
|||
") c #DDDDF3", |
|||
"! c #D5D5F1", |
|||
"~ c #9A9AB2", |
|||
"{ c #141418", |
|||
"] c #BEBEBE", |
|||
"^ c #F3DBDD", |
|||
"/ c #CE0D0C", |
|||
"( c #E0959D", |
|||
"_ c #E4E4F6", |
|||
": c #DCDCF3", |
|||
"< c #D5D5F0", |
|||
"[ c #CDCDEE", |
|||
"} c #C5C5EB", |
|||
"| c #8E8EAE", |
|||
"1 c #676262", |
|||
"2 c #FAF3F5", |
|||
"3 c #F2F0F8", |
|||
"4 c #C42223", |
|||
"5 c #CD0100", |
|||
"6 c #D14D54", |
|||
"7 c #D3C7E1", |
|||
"8 c #CCCCEE", |
|||
"9 c #BDBDE8", |
|||
"0 c #B5B5E6", |
|||
"a c #45455A", |
|||
"b c #B1A4A6", |
|||
"c c #E18185", |
|||
"d c #D96166", |
|||
"e c #C8282B", |
|||
"f c #CD1416", |
|||
"g c #CCA4BE", |
|||
"h c #BCBCE8", |
|||
"i c #B4B4E5", |
|||
"j c #ADADE3", |
|||
"k c #74749D", |
|||
"l c #6C6C70", |
|||
"m c #767278", |
|||
"n c #DB8E99", |
|||
"o c #CD474E", |
|||
"p c #D87F81", |
|||
"q c #F5F3F6", |
|||
"r c #C4C4EA", |
|||
"s c #ACACE3", |
|||
"t c #51516F", |
|||
"u c #464663", |
|||
"v c #69696F", |
|||
"w c #70707A", |
|||
"x c #DADAF2", |
|||
"y c #D09AB0", |
|||
"z c #C81415", |
|||
"A c #E0ACAF", |
|||
"B c #FFFFFF", |
|||
"C c #DCDCEE", |
|||
"D c #C1C1E9", |
|||
"E c #4D4D6E", |
|||
"F c #424262", |
|||
"G c #9F9FAC", |
|||
"H c #D2D2EF", |
|||
"I c #CACAED", |
|||
"J c #B99BB0", |
|||
"K c #F7F5F6", |
|||
"L c #E2E2ED", |
|||
"M c #C0C0E9", |
|||
"N c #66669B", |
|||
"O c #565660", |
|||
"P c #C2C2EA", |
|||
"Q c #B2B2DD", |
|||
"R c #8484A3", |
|||
"S c #D4D4DD", |
|||
"T c #DBDBE6", |
|||
"U c #9696DB", |
|||
"V c #9292DA", |
|||
"W c #3B3B5A", |
|||
"X c #9797B1", |
|||
"Y c #C1C1EA", |
|||
"Z c #B9B9E7", |
|||
"` c #B2B2E5", |
|||
" . c #A7A7DE", |
|||
".. c #7B7BAA", |
|||
"+. c #A4A4BB", |
|||
"@. c #F8F8FA", |
|||
"#. c #8E8ED0", |
|||
"$. c #6262A0", |
|||
"%. c #000001", |
|||
"&. c #8B8BAD", |
|||
"*. c #B1B1E4", |
|||
"=. c #A9A9E2", |
|||
"-. c #50506F", |
|||
";. c #4C4C6D", |
|||
">. c #8080BF", |
|||
",. c #75759D", |
|||
"'. c #7777A0", |
|||
"). c #0D0D15", |
|||
"!. c #43435A", |
|||
"~. c #71719D", |
|||
"{. c #444462", |
|||
"]. c #414162", |
|||
"^. c #616197", |
|||
"/. c #313150", |
|||
" ", |
|||
" . . . . ", |
|||
" + @ # $ % & * + ", |
|||
" = - ; > , ' ) ! ~ { ", |
|||
" + ] ^ / ( _ : < [ } | + ", |
|||
" 1 2 3 4 5 6 7 8 } 9 0 a . ", |
|||
" . b c d e 5 5 f g h i j k . ", |
|||
" . l m n o 5 5 p q r s t u . ", |
|||
" . v w x y z A B B C D E F . ", |
|||
" . G x H I J K B B L ! M N . ", |
|||
" O H I P Q R S B T U V W . ", |
|||
" + X Y Z ` ...+.@.#.$.%. ", |
|||
" { &.*.=.-.;.>.,.'.).. ", |
|||
" + !.~.{.].^./.. . ", |
|||
" . . . . . . ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,27 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *pad_sketch_xpm[]; |
|||
|
|||
#else |
|||
char * pad_sketch_xpm[] = { |
|||
"16 16 3 1", |
|||
" c None", |
|||
". c #007D00", |
|||
"+ c #007C00", |
|||
" ", |
|||
" .... ", |
|||
" ..++++.. ", |
|||
" .. .. ", |
|||
" .. .. ", |
|||
" . .. . ", |
|||
" .+ .... +. ", |
|||
" .+ .. .. +. ", |
|||
" .+ .. .. +. ", |
|||
" .+ .... +. ", |
|||
" . .. . ", |
|||
" .. .. ", |
|||
" .. .. ", |
|||
" ..++++.. ", |
|||
" .... ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,109 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *read_setup_xpm[]; |
|||
|
|||
#else |
|||
char * read_setup_xpm[] = { |
|||
"16 16 85 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #E1E1E1", |
|||
"@ c #C1C1C1", |
|||
"# c #999999", |
|||
"$ c #9A9A9A", |
|||
"% c #C2C2C2", |
|||
"& c #E5E5E5", |
|||
"* c #DFDFDF", |
|||
"= c #CACACA", |
|||
"- c #666666", |
|||
"; c #858585", |
|||
"> c #898989", |
|||
", c #8A8A8A", |
|||
"' c #B1B1B1", |
|||
") c #A5A5A5", |
|||
"! c #F3F3F3", |
|||
"~ c #D0D0D0", |
|||
"{ c #ADADAD", |
|||
"] c #F0F0F0", |
|||
"^ c #EFEFEF", |
|||
"/ c #EBEBEB", |
|||
"( c #DBDBDB", |
|||
"_ c #C3C3C3", |
|||
": c #E4E5DF", |
|||
"< c #D5D6CB", |
|||
"[ c #D6D7CA", |
|||
"} c #B7B7B7", |
|||
"| c #767676", |
|||
"1 c #6C6C6C", |
|||
"2 c #787878", |
|||
"3 c #8D907B", |
|||
"4 c #92957E", |
|||
"5 c #90937D", |
|||
"6 c #A9A9A9", |
|||
"7 c #7C7C7C", |
|||
"8 c #757575", |
|||
"9 c #505050", |
|||
"0 c #8A8C7D", |
|||
"a c #8E917B", |
|||
"b c #91947F", |
|||
"c c #7E7E7E", |
|||
"d c #878A75", |
|||
"e c #666858", |
|||
"f c #4B4D3F", |
|||
"g c #4D4F40", |
|||
"h c #404135", |
|||
"i c #424337", |
|||
"j c #434437", |
|||
"k c #404236", |
|||
"l c #3C3D32", |
|||
"m c #48493C", |
|||
"n c #1A1A16", |
|||
"o c #939393", |
|||
"p c #848672", |
|||
"q c #25261F", |
|||
"r c #F1F2E9", |
|||
"s c #DDE0C7", |
|||
"t c #D6DABB", |
|||
"u c #CDD2AC", |
|||
"v c #C7CCA7", |
|||
"w c #989C80", |
|||
"x c #5F6152", |
|||
"y c #888980", |
|||
"z c #A7AB8C", |
|||
"A c #878A70", |
|||
"B c #6D6D6D", |
|||
"C c #676767", |
|||
"D c #777777", |
|||
"E c #EFF0E5", |
|||
"F c #9EA284", |
|||
"G c #606060", |
|||
"H c #888888", |
|||
"I c #818181", |
|||
"J c #7B7B7B", |
|||
"K c #96968D", |
|||
"L c #E3E5D1", |
|||
"M c #83866D", |
|||
"N c #EDEFE2", |
|||
"O c #A2A688", |
|||
"P c #E7E9DA", |
|||
"Q c #D1D3BD", |
|||
"R c #BBBF9D", |
|||
"S c #989B80", |
|||
"T c #6E715C", |
|||
" .+@#...$%%%%%", |
|||
" .+@.&*=.-;>,'", |
|||
" .+@.*%).....!", |
|||
" .+@.~)#.{]^/(", |
|||
"....+%$...-;____", |
|||
":<[.+%}|1-2,...$", |
|||
"345.+%67789.&*=.", |
|||
"0ab.+%c.....*%).", |
|||
"defghiijklmno)#.", |
|||
"pqrstuuuuuvw...-", |
|||
"xysuuuuuuuzA.BCD", |
|||
"qEtuuuuuuuF.GHIJ", |
|||
"KLuuuuuuuuM.....", |
|||
"NuuuuuuuuO.. ", |
|||
"PQRRRRRRST. ", |
|||
"........... "}; |
|||
#endif |
|||
@ -0,0 +1,102 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char * repaint_xpm[]; |
|||
|
|||
#else |
|||
char * repaint_xpm[] = { |
|||
"16 16 78 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #817858", |
|||
"@ c #D6D0BD", |
|||
"# c #413C27", |
|||
"$ c #E7D8A6", |
|||
"% c #F2EDD9", |
|||
"& c #877B52", |
|||
"* c #E9DBAE", |
|||
"= c #F1EBD6", |
|||
"- c #918458", |
|||
"; c #DACD9F", |
|||
"> c #F4EED9", |
|||
", c #6B6040", |
|||
"' c #EDE4C6", |
|||
") c #0C0B07", |
|||
"! c #A29771", |
|||
"~ c #9A8F6A", |
|||
"{ c #ADA281", |
|||
"] c #D5CCAF", |
|||
"^ c #7F7862", |
|||
"/ c #A39B7B", |
|||
"( c #7B6F4A", |
|||
"_ c #CCBC85", |
|||
": c #E2CF8B", |
|||
"< c #BCAC75", |
|||
"[ c #CEBD82", |
|||
"} c #C1B178", |
|||
"| c #5B5438", |
|||
"1 c #A39878", |
|||
"2 c #918C74", |
|||
"3 c #8B8468", |
|||
"4 c #8B8365", |
|||
"5 c #91896C", |
|||
"6 c #90886A", |
|||
"7 c #6A634C", |
|||
"8 c #D1C7A8", |
|||
"9 c #E8E7E3", |
|||
"0 c #D3D2CE", |
|||
"a c #B9B8B5", |
|||
"b c #948E78", |
|||
"c c #51504F", |
|||
"d c #161616", |
|||
"e c #101010", |
|||
"f c #121211", |
|||
"g c #0E0D0B", |
|||
"h c #555555", |
|||
"i c #050505", |
|||
"j c #040404", |
|||
"k c #6B372D", |
|||
"l c #6D392E", |
|||
"m c #974E3F", |
|||
"n c #44231C", |
|||
"o c #2F2F2F", |
|||
"p c #272727", |
|||
"q c #9D5546", |
|||
"r c #6C392E", |
|||
"s c #9C5344", |
|||
"t c #964E3F", |
|||
"u c #6C382D", |
|||
"v c #542B22", |
|||
"w c #9F5647", |
|||
"x c #A75E4F", |
|||
"y c #AD5C4B", |
|||
"z c #A55C4D", |
|||
"A c #2F1813", |
|||
"B c #B35D4B", |
|||
"C c #7E4134", |
|||
"D c #8D493B", |
|||
"E c #582D24", |
|||
"F c #6C372D", |
|||
"G c #613228", |
|||
"H c #64332A", |
|||
"I c #623228", |
|||
"J c #65342A", |
|||
"K c #502921", |
|||
"L c #4C271F", |
|||
"M c #3C1E18", |
|||
" .. ", |
|||
" .+@#. ", |
|||
" .$%&. ", |
|||
" .*=-. ", |
|||
" .;>,. ", |
|||
" ...').. ", |
|||
" .!~{]^/(. ", |
|||
" ._::::<[}|. ", |
|||
" .123444567. ", |
|||
" .890a9a9ab. ", |
|||
" .cdedddfdg. ", |
|||
" .hij.k.jlm. ", |
|||
" nholpqrstu. ", |
|||
" vwxyxzxzxA ", |
|||
"BCDEFGHIJIKLM ", |
|||
" "}; |
|||
#endif |
|||
@ -0,0 +1,117 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *rotate_pos_xpm[]; |
|||
|
|||
#else |
|||
char * rotate_pos_xpm[] = { |
|||
"16 16 93 2", |
|||
" c None", |
|||
". c #202020", |
|||
"+ c #090909", |
|||
"@ c #0C0C0C", |
|||
"# c #CACACB", |
|||
"$ c #3E3E3E", |
|||
"% c #9B9B9B", |
|||
"& c #010101", |
|||
"* c #A8A8A9", |
|||
"= c #FEFEFF", |
|||
"- c #727275", |
|||
"; c #646469", |
|||
"> c #505057", |
|||
", c #141416", |
|||
"' c #4A4A4A", |
|||
") c #F8F8FF", |
|||
"! c #F1F1FF", |
|||
"~ c #EBEBFF", |
|||
"{ c #E0E0FA", |
|||
"] c #A3A3BC", |
|||
"^ c #484855", |
|||
"/ c #171717", |
|||
"( c #96969A", |
|||
"_ c #C3C3CE", |
|||
": c #E6E6FA", |
|||
"< c #E4E4FF", |
|||
"[ c #DDDDFF", |
|||
"} c #D7D7FF", |
|||
"| c #707089", |
|||
"1 c #3B3B3D", |
|||
"2 c #000000", |
|||
"3 c #272727", |
|||
"4 c #444444", |
|||
"5 c #727272", |
|||
"6 c #4B4B4C", |
|||
"7 c #46464C", |
|||
"8 c #B3B3CE", |
|||
"9 c #D0D0FF", |
|||
"0 c #49495C", |
|||
"a c #5B5B5B", |
|||
"b c #5A5A76", |
|||
"c c #656580", |
|||
"d c #3B3B48", |
|||
"e c #5C5C5C", |
|||
"f c #313131", |
|||
"g c #4B4B4B", |
|||
"h c #494949", |
|||
"i c #8C8C8C", |
|||
"j c #212122", |
|||
"k c #BCBCDF", |
|||
"l c #8686AA", |
|||
"m c #474747", |
|||
"n c #8888B2", |
|||
"o c #C9C9FF", |
|||
"p c #B1B1D9", |
|||
"q c #262627", |
|||
"r c #595959", |
|||
"s c #2F2F2F", |
|||
"t c #40404C", |
|||
"u c #686880", |
|||
"v c #5A5A72", |
|||
"w c #262626", |
|||
"x c #4C4C64", |
|||
"y c #A9A9C9", |
|||
"z c #404048", |
|||
"A c #0D0D0F", |
|||
"B c #C0C0C5", |
|||
"C c #323232", |
|||
"D c #222222", |
|||
"E c #4D4D4D", |
|||
"F c #535353", |
|||
"G c #28282A", |
|||
"H c #737392", |
|||
"I c #DFDFF9", |
|||
"J c #BCBCCC", |
|||
"K c #93939C", |
|||
"L c #A1A1A2", |
|||
"M c #383838", |
|||
"N c #353535", |
|||
"O c #4F4F5F", |
|||
"P c #A3A3C1", |
|||
"Q c #DADAFC", |
|||
"R c #424242", |
|||
"S c #6C6C6C", |
|||
"T c #3D3D3F", |
|||
"U c #595961", |
|||
"V c #62626A", |
|||
"W c #73737A", |
|||
"X c #404040", |
|||
"Y c #040404", |
|||
"Z c #303031", |
|||
"` c #989898", |
|||
" . c #8F8F8F", |
|||
" ", |
|||
" . + ", |
|||
" @ # $ % ", |
|||
" & * = - ; > , ", |
|||
" ' = = ) ! ~ { ] ^ ", |
|||
" / * = ( _ : < [ } | 1 ", |
|||
" 2 2 2 3 # 4 5 6 7 8 } 9 0 a ", |
|||
"2 b c d e f g h i j k 9 l m ", |
|||
"2 n o p q r s q t u v w ", |
|||
" x o 9 y z A w B C D E E F ", |
|||
" G H 9 } [ I J K ) L M % % % ", |
|||
" N O P Q < ~ ! ) = R S ", |
|||
" r T U V W ) L ' % ", |
|||
" % % X B $ % % ", |
|||
" Y Z ` % ", |
|||
" .% "}; |
|||
#endif |
|||
@ -0,0 +1,120 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *rotate_neg_xpm[]; |
|||
|
|||
#else |
|||
char * rotate_neg_xpm[] = { |
|||
"16 16 96 2", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #2A2A2B", |
|||
"@ c #C5C5CB", |
|||
"# c #313131", |
|||
"$ c #141416", |
|||
"% c #4D4D57", |
|||
"& c #5F5F67", |
|||
"* c #6F6F75", |
|||
"= c #F8F8FF", |
|||
"- c #A8A8A9", |
|||
"; c #343434", |
|||
"> c #444454", |
|||
", c #9F9FBC", |
|||
"' c #D9D9FA", |
|||
") c #E4E4FF", |
|||
"! c #EBEBFF", |
|||
"~ c #F1F1FF", |
|||
"{ c #FEFEFF", |
|||
"] c #4A4A4A", |
|||
"^ c #646464", |
|||
"/ c #6C6C89", |
|||
"( c #D0D0FF", |
|||
"_ c #D7D7FF", |
|||
": c #DDDDFF", |
|||
"< c #E0E0FA", |
|||
"[ c #BEBECE", |
|||
"} c #92929A", |
|||
"| c #3F3F3F", |
|||
"1 c #9B9B9B", |
|||
"2 c #46465C", |
|||
"3 c #C9C9FF", |
|||
"4 c #AEAECE", |
|||
"5 c #44444C", |
|||
"6 c #4B4B4C", |
|||
"7 c #727272", |
|||
"8 c #444444", |
|||
"9 c #363636", |
|||
"0 c #949494", |
|||
"a c #3A3A3A", |
|||
"b c #8282AA", |
|||
"c c #B6B6DF", |
|||
"d c #252526", |
|||
"e c #939393", |
|||
"f c #8F8F8F", |
|||
"g c #494949", |
|||
"h c #202020", |
|||
"i c #2C2C2D", |
|||
"j c #686868", |
|||
"k c #3D3D48", |
|||
"l c #686880", |
|||
"m c #5D5D76", |
|||
"n c #575772", |
|||
"o c #656580", |
|||
"p c #3E3E4C", |
|||
"q c #6E6E6E", |
|||
"r c #959595", |
|||
"s c #1E1E1E", |
|||
"t c #050505", |
|||
"u c #828282", |
|||
"v c #050507", |
|||
"w c #B7B7D9", |
|||
"x c #8C8CB2", |
|||
"y c #272727", |
|||
"z c #4D4D4D", |
|||
"A c #929292", |
|||
"B c #1F1F1F", |
|||
"C c #C4C4C5", |
|||
"D c #292929", |
|||
"E c #2C2C2C", |
|||
"F c #3A3A41", |
|||
"G c #AEAEC9", |
|||
"H c #4F4F64", |
|||
"I c #6F6F6F", |
|||
"J c #2F2F2F", |
|||
"K c #A1A1A2", |
|||
"L c #98989C", |
|||
"M c #C1C1CC", |
|||
"N c #E5E5F9", |
|||
"O c #777792", |
|||
"P c #545455", |
|||
"Q c #424242", |
|||
"R c #E1E1FC", |
|||
"S c #A7A7C1", |
|||
"T c #51515F", |
|||
"U c #525252", |
|||
"V c #101010", |
|||
"W c #77777A", |
|||
"X c #65656A", |
|||
"Y c #5B5B61", |
|||
"Z c #3D3D3F", |
|||
"` c #5D5D5D", |
|||
" . c #3E3E3E", |
|||
".. c #989898", |
|||
"+. c #3D3D3D", |
|||
"@. c #404040", |
|||
" ", |
|||
" . + ", |
|||
" . @ # ", |
|||
" $ % & * = - ; ", |
|||
" > , ' ) ! ~ = { ] ^ ", |
|||
" / ( _ : < [ } = - | 1 ", |
|||
" 2 3 ( 4 5 6 7 8 @ 9 0 a . . ", |
|||
". b 3 c d e f g h i 0 j k l m . ", |
|||
". n o p q r s t u e v w ( x y ", |
|||
" | z z A B C D E F G _ ( H I ", |
|||
" 1 1 J K { L M N ) : _ O P 1 ", |
|||
" Q { { = ~ ! R S T U 1 1 ", |
|||
" V K { W X Y Z ` r 1 1 ", |
|||
" 1 .C 8 1 1 1 1 1 1 ", |
|||
" ..+.@.1 1 1 1 ", |
|||
" e ` "}; |
|||
#endif |
|||
@ -0,0 +1,100 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *rotate_field_xpm[]; |
|||
|
|||
#else |
|||
char * rotate_field_xpm[] = { |
|||
"16 16 76 1", |
|||
" c None", |
|||
". c #D2D2D2", |
|||
"+ c #9D9D9D", |
|||
"@ c #DEDEDE", |
|||
"# c #E0E0E0", |
|||
"$ c #5C5C5C", |
|||
"% c #000000", |
|||
"& c #EDEDED", |
|||
"* c #939393", |
|||
"= c #FDFDFD", |
|||
"- c #E4E4E4", |
|||
"; c #F1F1F1", |
|||
"> c #CFCFCF", |
|||
", c #C7C7C7", |
|||
"' c #E7E7E7", |
|||
") c #F4F4F4", |
|||
"! c #8F8F8F", |
|||
"~ c #E9E9E9", |
|||
"{ c #B1B1B1", |
|||
"] c #373737", |
|||
"^ c #67676A", |
|||
"/ c #3B3B3B", |
|||
"( c #A3A3A3", |
|||
"_ c #D1D1D1", |
|||
": c #FAFAFA", |
|||
"< c #636363", |
|||
"[ c #F7F7F8", |
|||
"} c #F8F8FF", |
|||
"| c #EBEBF9", |
|||
"1 c #E0E0F3", |
|||
"2 c #BFBFD6", |
|||
"3 c #8B8BA0", |
|||
"4 c #4F4F57", |
|||
"5 c #B6B6B6", |
|||
"6 c #F0F0F0", |
|||
"7 c #9F9F9F", |
|||
"8 c #F1F1FF", |
|||
"9 c #EBEBFF", |
|||
"0 c #E4E4FF", |
|||
"a c #DDDDFF", |
|||
"b c #CECEF4", |
|||
"c c #393945", |
|||
"d c #777777", |
|||
"e c #606060", |
|||
"f c #3A3A3A", |
|||
"g c #69696C", |
|||
"h c #353536", |
|||
"i c #3B3B3E", |
|||
"j c #3F3F45", |
|||
"k c #777789", |
|||
"l c #D4D4FC", |
|||
"m c #8888A7", |
|||
"n c #2E2E2E", |
|||
"o c #9494B0", |
|||
"p c #B8B8E2", |
|||
"q c #A1A1CC", |
|||
"r c #A0A0C4", |
|||
"s c #757594", |
|||
"t c #CFCFFE", |
|||
"u c #7D7D94", |
|||
"v c #383842", |
|||
"w c #2F2F34", |
|||
"x c #1D1D1F", |
|||
"y c #5C5C61", |
|||
"z c #434345", |
|||
"A c #2B2B37", |
|||
"B c #C2C2EE", |
|||
"C c #D7D7FF", |
|||
"D c #F5F5FC", |
|||
"E c #6F6F6F", |
|||
"F c #22222A", |
|||
"G c #83839B", |
|||
"H c #B5B5D1", |
|||
"I c #D8D8F2", |
|||
"J c #E5E5F9", |
|||
"K c #59595E", |
|||
".++++++++++++++.", |
|||
"+.@@@@@@@@@@@@@+", |
|||
"+#$%%$&%%%*&===+", |
|||
"+-%;;%;%>,%;===+", |
|||
"+'%))%)%%%!)===+", |
|||
"+~%%%%{]^/%(_==+", |
|||
"+&%::%<[}|12345+", |
|||
"+6===7<[}890abcd", |
|||
".+++++efghijklmn", |
|||
" %%% % %op%", |
|||
" %qr% % %%%", |
|||
" %stuvwxyz ", |
|||
" ABCa098DE ", |
|||
" FGHIJ8DE% ", |
|||
" %%%Kz% ", |
|||
" %% "}; |
|||
#endif |
|||
@ -0,0 +1,123 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *save_cmpstuff_xpm[]; |
|||
|
|||
#else |
|||
char * save_cmpstuff_xpm[] = { |
|||
"16 16 99 2", |
|||
" c None", |
|||
". c #160A00", |
|||
"+ c #FF7800", |
|||
"@ c #000000", |
|||
"# c #231000", |
|||
"$ c #E1DFDE", |
|||
"% c #44260C", |
|||
"& c #E86D00", |
|||
"* c #FFFFFF", |
|||
"= c #C35B00", |
|||
"- c #FAF6F3", |
|||
"; c #A38F7C", |
|||
"> c #C7B4A5", |
|||
", c #FDBD85", |
|||
"' c #FFBF87", |
|||
") c #FFF3EC", |
|||
"! c #FEE6D6", |
|||
"~ c #D8BDA8", |
|||
"{ c #C7874F", |
|||
"] c #F9B880", |
|||
"^ c #FFF5EF", |
|||
"/ c #FFE8D8", |
|||
"( c #FFDBC2", |
|||
"_ c #B9957C", |
|||
": c #010101", |
|||
"< c #FFEADC", |
|||
"[ c #FFDDC5", |
|||
"} c #FFD0AF", |
|||
"| c #F6F7F9", |
|||
"1 c #CADCEA", |
|||
"2 c #C78980", |
|||
"3 c #D08E83", |
|||
"4 c #CF8D82", |
|||
"5 c #CF8E82", |
|||
"6 c #FFDFC8", |
|||
"7 c #FFD1B2", |
|||
"8 c #FFC49C", |
|||
"9 c #DAE6EF", |
|||
"0 c #8CA8BC", |
|||
"a c #B6867D", |
|||
"b c #C67568", |
|||
"c c #C67467", |
|||
"d c #C57366", |
|||
"e c #C57365", |
|||
"f c #FFD3B5", |
|||
"g c #FFC69F", |
|||
"h c #FFB988", |
|||
"i c #010100", |
|||
"j c #CEDFEB", |
|||
"k c #D6D6D5", |
|||
"l c #FDFDFD", |
|||
"m c #FCFCFC", |
|||
"n c #FFC8A2", |
|||
"o c #FFBB8C", |
|||
"p c #FFAE75", |
|||
"q c #D6D6D6", |
|||
"r c #D5D5D5", |
|||
"s c #FFBD8F", |
|||
"t c #FFB079", |
|||
"u c #FFA262", |
|||
"v c #8CA8BD", |
|||
"w c #FBFBFB", |
|||
"x c #F3F3F3", |
|||
"y c #E9E9E9", |
|||
"z c #FFB27C", |
|||
"A c #FFA465", |
|||
"B c #FE9A55", |
|||
"C c #D6D5D5", |
|||
"D c #D3D2D2", |
|||
"E c #C4C3C3", |
|||
"F c #C4C4C4", |
|||
"G c #C3C3C3", |
|||
"H c #FFA669", |
|||
"I c #FAA162", |
|||
"J c #A37E60", |
|||
"K c #CEDFEC", |
|||
"L c #EDEDED", |
|||
"M c #F1F0F0", |
|||
"N c #EAE9E9", |
|||
"O c #EAEAEA", |
|||
"P c #E1A074", |
|||
"Q c #442102", |
|||
"R c #CEDEEB", |
|||
"S c #ADBDCB", |
|||
"T c #C8D4DD", |
|||
"U c #C5CDD8", |
|||
"V c #BEC9D4", |
|||
"W c #BECAD5", |
|||
"X c #BDC9D4", |
|||
"Y c #8CA7BC", |
|||
"Z c #87A4BA", |
|||
"` c #7E98AC", |
|||
" . c #8098AC", |
|||
".. c #7F98AC", |
|||
"+. c #7D97AB", |
|||
"@. c #8BA6BB", |
|||
"#. c #A6AFBB", |
|||
"$. c #CDCCCC", |
|||
"%. c #9A9B9B", |
|||
" . + + + ", |
|||
" @ # + + + ", |
|||
" @ $ % & * = + * + @ @ ", |
|||
" @ * - ; > , ' ' * * + + + * @ ", |
|||
" @ * ) ! ~ { ] ' * * + + + * @ ", |
|||
"@ @ ^ / ( _ : : : : : : : : : @ ", |
|||
" @ < [ } : | 1 2 3 3 3 3 4 4 5 ", |
|||
" @ 6 7 8 : 9 0 a b c c c d e d ", |
|||
" @ f g h i j 0 k l l l l m m m ", |
|||
" @ n o p i j 0 q q q q q r r r ", |
|||
"@ @ s t u i j v q l l l l w x y ", |
|||
" @ z A B i j v q q q C D E F G ", |
|||
" @ H I J : K v L l l M N N O y ", |
|||
" @ P Q @ R v S T U V W V X X ", |
|||
" @ # @ R Y Y Z ` . . ...+.", |
|||
" . @ R Y @.#.G E $.N r %."}; |
|||
#endif |
|||
@ -0,0 +1,123 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *save_library_xpm[]; |
|||
|
|||
#else |
|||
char * save_library_xpm[] = { |
|||
"16 16 99 2", |
|||
" c None", |
|||
". c #070809", |
|||
"+ c #323538", |
|||
"@ c #1F1F20", |
|||
"# c #0B0D0E", |
|||
"$ c #E5E7E8", |
|||
"% c #F6F6F6", |
|||
"& c #838587", |
|||
"* c #050506", |
|||
"= c #0B0D0F", |
|||
"- c #F7F7F7", |
|||
"; c #D8D8D8", |
|||
"> c #E0E1E2", |
|||
", c #1F2021", |
|||
"' c #050709", |
|||
") c #E4E7E8", |
|||
"! c #D8D9D9", |
|||
"~ c #D2D2D2", |
|||
"{ c #E2E2E2", |
|||
"] c #BFC1C3", |
|||
"^ c #0F0F0F", |
|||
"/ c #000000", |
|||
"( c #363737", |
|||
"_ c #D18F84", |
|||
": c #D19084", |
|||
"< c #D39186", |
|||
"[ c #BFD5E8", |
|||
"} c #565656", |
|||
"| c #353535", |
|||
"1 c #363636", |
|||
"2 c #0B0B0B", |
|||
"3 c #C77467", |
|||
"4 c #C77466", |
|||
"5 c #C87668", |
|||
"6 c #CD867A", |
|||
"7 c #8DA9BE", |
|||
"8 c #54697C", |
|||
"9 c #FCFDFD", |
|||
"0 c #FCFCFC", |
|||
"a c #FBFBFC", |
|||
"b c #FAFBFC", |
|||
"c c #EAEAEA", |
|||
"d c #242425", |
|||
"e c #FEFEFE", |
|||
"f c #F9F9F9", |
|||
"g c #84A0B5", |
|||
"h c #4F6475", |
|||
"i c #E2E3E4", |
|||
"j c #F8F9FA", |
|||
"k c #F7F8F9", |
|||
"l c #E0E0E2", |
|||
"m c #AFB1B2", |
|||
"n c #D7D7D7", |
|||
"o c #D6D6D6", |
|||
"p c #F1F1F1", |
|||
"q c #819AAE", |
|||
"r c #496072", |
|||
"s c #F9FBFC", |
|||
"t c #CBCCCE", |
|||
"u c #868C92", |
|||
"v c #F4F4F4", |
|||
"w c #EBEBEB", |
|||
"x c #DFE0E0", |
|||
"y c #B4B7BB", |
|||
"z c #181B1E", |
|||
"A c #D4D4D4", |
|||
"B c #C5C5C5", |
|||
"C c #FAFBFB", |
|||
"D c #FAFAFB", |
|||
"E c #CCCED1", |
|||
"F c #747C85", |
|||
"G c #F2F2F2", |
|||
"H c #EEEEEE", |
|||
"I c #FBFCFC", |
|||
"J c #F0F1F1", |
|||
"K c #A9AEB4", |
|||
"L c #16181B", |
|||
"M c #BFCBD6", |
|||
"N c #A1B6C4", |
|||
"O c #F4F5F5", |
|||
"P c #D2D2D3", |
|||
"Q c #7A8188", |
|||
"R c #7E99AD", |
|||
"S c #7D97AC", |
|||
"T c #A0A6AD", |
|||
"U c #92999F", |
|||
"V c #0D0F11", |
|||
"W c #CECECE", |
|||
"X c #9C9D9D", |
|||
"Y c #2F4656", |
|||
"Z c #80868C", |
|||
"` c #191E22", |
|||
" . c #1E2328", |
|||
".. c #183042", |
|||
"+. c #33495A", |
|||
"@. c #B9B9B9", |
|||
"#. c #132D3C", |
|||
"$. c #586D80", |
|||
"%. c #97A5B0", |
|||
" . + @ ", |
|||
" # $ % & * ", |
|||
" = $ - ; > , ", |
|||
" ' ) - ! ~ { ] ^ ", |
|||
"/ / / / / / / / / ( ", |
|||
"_ _ _ _ : _ < [ [ / } | | | 1 2 ", |
|||
"3 3 3 4 3 5 6 7 8 / 9 0 a b c d ", |
|||
"e e e e e e f g h / i j k l m / ", |
|||
"n n n n n o p q r / s j k t u / ", |
|||
"e e 0 v w w p q r / b j x y z ", |
|||
"n A B B B B p q r / C D E F / ", |
|||
"G w w w w w H q r / I J K L ", |
|||
"M M M M M M N q r / O P Q / ", |
|||
"q q q q R S q q r / T U V ", |
|||
"B W w n X Y Z q r / ` . ", |
|||
"..+.o B @.#.$.%.r / "}; |
|||
#endif |
|||
@ -0,0 +1,115 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *save_netlist_xpm[]; |
|||
|
|||
#else |
|||
char * save_netlist_xpm[] = { |
|||
"16 16 91 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #F0F0F0", |
|||
"@ c #FFFFFF", |
|||
"# c #0F0F0F", |
|||
"$ c #EFEFEF", |
|||
"% c #101010", |
|||
"& c #B3D7F0", |
|||
"* c #0B0D0F", |
|||
"= c #B3D6EF", |
|||
"- c #51616D", |
|||
"; c #39454D", |
|||
"> c #BFE5FF", |
|||
", c #0B0E10", |
|||
"' c #FAF9F9", |
|||
") c #746355", |
|||
"! c #E3C8B4", |
|||
"~ c #FFCAA5", |
|||
"{ c #FFBD8E", |
|||
"] c #F1B58B", |
|||
"^ c #4C392A", |
|||
"/ c #F3F1F0", |
|||
"( c #A7C8E0", |
|||
"_ c #C3DCEC", |
|||
": c #B9C9D3", |
|||
"< c #A38266", |
|||
"[ c #FDC49C", |
|||
"} c #FEB481", |
|||
"| c #AE8868", |
|||
"1 c #777471", |
|||
"2 c #C4DCEB", |
|||
"3 c #BFE5FE", |
|||
"4 c #FFEBD9", |
|||
"5 c #FFEAD7", |
|||
"6 c #E9CAAF", |
|||
"7 c #E3BB9E", |
|||
"8 c #EBBB99", |
|||
"9 c #E4C2A5", |
|||
"0 c #A38E7B", |
|||
"a c #FFFDFC", |
|||
"b c #8EA0AA", |
|||
"c c #010101", |
|||
"d c #000101", |
|||
"e c #FFC38E", |
|||
"f c #F6F7F9", |
|||
"g c #CADCEA", |
|||
"h c #C78980", |
|||
"i c #D08E83", |
|||
"j c #CF8E82", |
|||
"k c #DBB48E", |
|||
"l c #DAE6F0", |
|||
"m c #8CA8BD", |
|||
"n c #B6867E", |
|||
"o c #C67568", |
|||
"p c #C67467", |
|||
"q c #C57366", |
|||
"r c #C67466", |
|||
"s c #CEDFEC", |
|||
"t c #D6D6D6", |
|||
"u c #FDFDFD", |
|||
"v c #FCFCFC", |
|||
"w c #FB7E0F", |
|||
"x c #010100", |
|||
"y c #CEDEEB", |
|||
"z c #D6D6D5", |
|||
"A c #D6D5D5", |
|||
"B c #D5D5D5", |
|||
"C c #FF800F", |
|||
"D c #FDFDFC", |
|||
"E c #FDFCFC", |
|||
"F c #FBFBFB", |
|||
"G c #F3F3F3", |
|||
"H c #E9E9E9", |
|||
"I c #D5D6D6", |
|||
"J c #D3D3D3", |
|||
"K c #C3C3C3", |
|||
"L c #C4C4C4", |
|||
"M c #EDEDED", |
|||
"N c #F1F1F1", |
|||
"O c #EAEAEA", |
|||
"P c #ADBECC", |
|||
"Q c #C9D5DE", |
|||
"R c #C6CED9", |
|||
"S c #BECAD5", |
|||
"T c #BDC9D4", |
|||
"U c #CDDEEB", |
|||
"V c #8BA7BC", |
|||
"W c #87A4BA", |
|||
"X c #7E98AC", |
|||
"Y c #7F98AC", |
|||
"Z c #7D97AB", |
|||
" ...............", |
|||
".+@@@@#$@#$@@@@%", |
|||
".&*=-......;>*=,", |
|||
".+@@')!~{]^/@@@%", |
|||
".&.(_:<[}|123.(,", |
|||
".+@@45678905a@@%", |
|||
".&*=_bccccdcc.c.", |
|||
".+@@ecfghiiiiiij", |
|||
".&.(kclmnopppqrq", |
|||
".+@@@csmtuuuuuuv", |
|||
".&*=wxymtzzAtBtB", |
|||
".+@@CxymtDDEuFGH", |
|||
".&.(>csmttItJKLK", |
|||
".+@@@csmMuuNOOOH", |
|||
".&*=>csmPQRSSTST", |
|||
" .....UVVWXYYYYZ"}; |
|||
#endif |
|||
@ -0,0 +1,87 @@ |
|||
/* XPM */ |
|||
#ifndef XPMMAIN |
|||
extern char *save_project_xpm[]; |
|||
|
|||
#else |
|||
char * save_project_xpm[] = { |
|||
"16 16 63 1", |
|||
" c None", |
|||
". c #000000", |
|||
"+ c #020202", |
|||
"@ c #F8F8F8", |
|||
"# c #ECECEC", |
|||
"$ c #EBEBEB", |
|||
"% c #6B6B6B", |
|||
"& c #2D2D2D", |
|||
"* c #181818", |
|||
"= c #C5C5C5", |
|||
"- c #434343", |
|||
"; c #5E5E5E", |
|||
"> c #F0F0F0", |
|||
", c #707070", |
|||
"' c #3D3D3D", |
|||
") c #C3C3C3", |
|||
"! c #0E0E0E", |
|||
"~ c #9C9C9C", |
|||
"{ c #4B4B4B", |
|||
"] c #616161", |
|||
"^ c #131313", |
|||
"/ c #D18F84", |
|||
"( c #D19084", |
|||
"_ c #D39186", |
|||
": c #BFD5E8", |
|||
"< c #C6C6C6", |
|||
"[ c #1B1B1B", |
|||
"} c #C77467", |
|||
"| c #C77466", |
|||
"1 c #C87668", |
|||
"2 c #CD867A", |
|||
"3 c #8DA9BE", |
|||
"4 c #54697C", |
|||
"5 c #FEFEFE", |
|||
"6 c #F9F9F9", |
|||
"7 c #84A0B5", |
|||
"8 c #4F6475", |
|||
"9 c #D7D7D7", |
|||
"0 c #D6D6D6", |
|||
"a c #F1F1F1", |
|||
"b c #819AAE", |
|||
"c c #496072", |
|||
"d c #FCFCFC", |
|||
"e c #F4F4F4", |
|||
"f c #090909", |
|||
"g c #D4D4D4", |
|||
"h c #F2F2F2", |
|||
"i c #EEEEEE", |
|||
"j c #121212", |
|||
"k c #BFCBD6", |
|||
"l c #A1B6C4", |
|||
"m c #7E99AD", |
|||
"n c #7D97AC", |
|||
"o c #CECECE", |
|||
"p c #9C9D9D", |
|||
"q c #2F4656", |
|||
"r c #80868C", |
|||
"s c #183042", |
|||
"t c #33495A", |
|||
"u c #B9B9B9", |
|||
"v c #132D3C", |
|||
"w c #586D80", |
|||
"x c #97A5B0", |
|||
" ......+ ", |
|||
" .@#$$$%& ", |
|||
" ......*=$-;.", |
|||
" .>#$$$,')$=!", |
|||
".........~{]^$=!", |
|||
"////(/_::.$<[$=!", |
|||
"}}}|}1234.$<[$=!", |
|||
"555555678.$<[$=!", |
|||
"999990abc.$<[$=!", |
|||
"55de$$abc.$<[))f", |
|||
"9g====abc.$<[.. ", |
|||
"h$$$$$ibc.))j ", |
|||
"kkkkkklbc.... ", |
|||
"bbbbmnbbc. ", |
|||
"=o$9pqrbc. ", |
|||
"st0=uvwxc. "}; |
|||
#endif |
|||
Some files were not shown because too many files changed in this diff
Write
Preview
Loading…
Cancel
Save
Reference in new issue