<br />
void CDocumentationView::BottomLayerView()<br />
{<br />
float div = 1000;<br />
float X1 = 0.000, Y1 = 0.000, X2 = 0.000, Y2 = 0.0;<br />
float XCen = 0.0, YCen = 0.0, wid = 0.0, hei = 0.0, dia = 0.0, rad = 0.0; <br />
BYTE Red = 0, Green = 0, Blue = 0;<br />
<br />
int size = FootPrintArray.GetSize();<br />
<br />
for(int inc = 0; inc < size; inc++)<br />
{<br />
<br />
FootPrint* foot = (FootPrint*) FootPrintArray.GetAt(inc);<br />
<br />
if(foot -> color != 0)<br />
{<br />
<br />
m_color = foot -> color;<br />
<br />
Red = ((BYTE*)(&m_color))[0];<br />
Green = ((BYTE*)(&m_color))[1];<br />
Blue = ((BYTE*)(&m_color))[2]; <br />
<br />
int no = foot -> RefDes.GetSize(); <br />
CString temppinno = "\0";<br />
float XStart = 0.0, YStart = 0.0;<br />
int pinnos = 0;<br />
<br />
glColor3ub(Red, Green, Blue);<br />
<br />
for(int incval = 0; incval < no; incval++)<br />
{<br />
<br />
CColoringComp* component = (CColoringComp*) foot -> RefDes.GetAt(incval);<br />
<br />
int pinno = component -> PinArray.GetSize();<br />
<br />
for(int incval1 = 0; incval1 < pinno; incval1++)<br />
{<br />
<br />
CPinDetails* pin = (CPinDetails*) component -> PinArray.GetAt(incval1);<br />
<br />
int graphicno = pin -> GraphicData.GetSize();<br />
<br />
for(int incval2 = 0; incval2 < graphicno; incval2++)<br />
{<br />
<br />
if(pin -> Mirror == "YES")<br />
{<br />
<br />
CGraphic* graphicdata = (CGraphic*) pin -> GraphicData.GetAt(incval2);<br />
<br />
if(graphicdata -> number <= 255)<br />
{ <br />
<br />
XCen = graphicdata -> Data1;<br />
<br />
if(Mirrored)<br />
XCen = -(graphicdata -> Data1);<br />
<br />
YCen = graphicdata -> Data2;<br />
wid = graphicdata -> Data3;<br />
hei = graphicdata -> Data4;<br />
dia = graphicdata -> Data3;<br />
<br />
if(INCH == true)<br />
{<br />
<br />
XCen = (GLfloat) (XCen / 1000.00); <br />
YCen = (GLfloat) (YCen / 1000.00);<br />
wid = (GLfloat) (wid / 1000.00);<br />
hei = (GLfloat) (hei / 1000.00);<br />
dia = (GLfloat) (dia/1000.00);<br />
<br />
}<br />
else if(MILLIMETER == TRUE)<br />
{<br />
<br />
XCen = (GLfloat) (XCen / 1000.00);<br />
YCen = (GLfloat) (YCen / 1000.00);<br />
wid = (GLfloat) (wid / 1000.00);<br />
hei = (GLfloat) (hei / 1000.00);<br />
dia = (GLfloat) (dia/1000.00);<br />
<br />
wid = (GLfloat) (wid * 25.4);<br />
hei = (GLfloat) (hei * 25.4);<br />
dia = (GLfloat) (dia * 25.4); <br />
XCen = (GLfloat) (XCen * 25.4);<br />
YCen = (GLfloat) (YCen * 25.4); <br />
<br />
}<br />
<br />
if( (graphicdata -> Name.Find("RECTANGLE", 0) != -1) || (graphicdata -> Name.Find("SQUARE", 0) != -1) || (graphicdata -> Name.Find("OBLONG", 0) != -1) )<br />
{<br />
<br />
X1 = (float) (XCen - (wid / 2));<br />
Y1 = (float) (YCen - (hei / 2));<br />
X2 = (float) (XCen + (wid / 2));<br />
Y2 = (float) (YCen + (hei / 2)); <br />
<br />
glColor3ub(Red,Green,Blue);<br />
glRectf(X1, Y1, X2, Y2);<br />
glFlush(); <br />
<br />
if(graphicdata -> Name.Find("OBLONG", 0) != -1)<br />
{<br />
<br />
rad = hei / 2; <br />
<br />
glBegin(GL_TRIANGLE_FAN);<br />
<br />
for(long ang = 0 ; ang <= 360 ; ang += 10)<br />
{<br />
<br />
glVertex2d(X1 + rad * sin(ang * PI / 180), YCen + rad * cos(ang * PI / 180));<br />
<br />
}<br />
<br />
glEnd();<br />
glFlush(); <br />
<br />
glBegin(GL_TRIANGLE_FAN);<br />
<br />
for(ang = 0 ; ang <= 360 ; ang += 10)<br />
{<br />
<br />
glVertex2d(X2 + rad * sin(ang * PI / 180), YCen + rad * cos(ang * PI / 180));<br />
<br />
}<br />
<br />
glEnd();<br />
glFlush();<br />
<br />
}<br />
<br />
}<br />
else if(graphicdata -> Name.Find("CIRCLE", 0) != -1)<br />
{<br />
<br />
rad = dia / 2; <br />
<br />
glBegin(GL_TRIANGLE_FAN);<br />
<br />
for(long ang = 0 ; ang <= 360 ; ang += 10)<br />
{<br />
<br />
glVertex2d(XCen + rad * sin(ang * PI / 180), YCen + rad * cos(ang * PI / 180));<br />
<br />
}<br />
<br />
glEnd();<br />
glFlush(); <br />
<br />
} <br />
else if(graphicdata -> Name.Find("OCTAGON", 0) != -1)<br />
{<br />
<br />
glBegin(GL_TRIANGLE_FAN); <br />
<br />
for(i = 0; i <= 360; i += (360 / 8))<br />
{<br />
<br />
GLfloat ang = (GLfloat) (i * M_PI);<br />
glVertex2f((float) (XCen + cos(ang) * rad), (float) (YCen + sin(ang) * rad));<br />
<br />
}<br />
<br />
glEnd();<br />
<br />
glBegin(GL_LINE_LOOP);<br />
<br />
for(i = 0; i <= 360; i += (360 / 8))<br />
{<br />
<br />
GLfloat ang = (GLfloat) (i * M_PI);<br />
glVertex2f((float) (XCen + cos(ang) * rad), (float) (YCen + sin(ang) * rad));<br />
<br />
}<br />
<br />
glEnd();<br />
<br />
glFlush();<br />
<br />
}<br />
<br />
} <br />
else if(graphicdata -> number == 256)<br />
{<br />
<br />
X1 = graphicdata -> Data1;<br />
<br />
if(Mirrored)<br />
X1 = -(graphicdata -> Data1);<br />
<br />
Y1 = graphicdata -> Data2;<br />
X2 = graphicdata -> Data3;<br />
<br />
if(Mirrored)<br />
X2 = -(graphicdata -> Data3);<br />
<br />
Y2 = graphicdata -> Data4;<br />
XCen = graphicdata -> Data5;<br />
<br />
if(Mirrored)<br />
XCen = -(graphicdata -> Data5);<br />
<br />
YCen = graphicdata -> Data6;<br />
rad = graphicdata -> Data7;<br />
wid = graphicdata -> Data8;<br />
<br />
if(INCH == true)<br />
{<br />
<br />
X1 = (GLfloat) (X1 / 1000.00);<br />
Y1 = (GLfloat) (Y1 / 1000.00);<br />
X2 = (GLfloat) (X2 / 1000.00);<br />
Y2 = (GLfloat) (Y2 / 1000.00); <br />
XCen = (GLfloat) (XCen / 1000.00);<br />
YCen = (GLfloat) (YCen / 1000.00);<br />
rad = (GLfloat) (rad / 1000.00);<br />
wid = (GLfloat) (wid / 1000.00);<br />
<br />
}<br />
else if(MILLIMETER == TRUE)<br />
{<br />
<br />
X1 = (GLfloat) (X1 / 1000.00);<br />
Y1 = (GLfloat) (Y1 / 1000.00);<br />
X2 = (GLfloat) (X2 / 1000.00);<br />
Y2 = (GLfloat) (Y2 / 1000.00); <br />
XCen = (GLfloat) (XCen / 1000.00);<br />
YCen = (GLfloat) (YCen / 1000.00);<br />
rad = (GLfloat) (rad / 1000.00);<br />
wid = (GLfloat) (wid / 1000.00);<br />
<br />
X1 = (GLfloat) (X1 * 25.4);<br />
Y1 = (GLfloat) (Y1 * 25.4);<br />
X2 = (GLfloat) (X2 * 25.4);<br />
Y2 = (GLfloat) (Y2 * 25.4); <br />
XCen = (GLfloat) (XCen * 25.4);<br />
YCen = (GLfloat) (YCen * 25.4);<br />
rad = (GLfloat) (rad * 25.4);<br />
wid = (GLfloat) (wid * 25.4);<br />
<br />
} <br />
<br />
if( (graphicdata -> Data10 == "SHAPE" || graphicdata -> Data10 == "POLYGON") && pinnos == 0 )<br />
{<br />
<br />
pinnos = 1;<br />
<br />
XStart = X1;<br />
YStart = Y1;<br />
<br />
glBegin(GL_POLYGON);<br />
DrawArc(X1, Y1, X2, Y2, XCen, YCen, rad, wid, graphicdata -> Data9);<br />
<br />
} <br />
else if(pinnos == 1)<br />
{<br />
<br />
DrawArc(X1, Y1, X2, Y2, XCen, YCen, rad, wid, graphicdata -> Data9);<br />
<br />
if(X2 == XStart && Y2 == YStart)<br />
{<br />
<br />
glEnd();<br />
glFlush();<br />
<br />
pinnos = 0;<br />
<br />
} <br />
<br />
}<br />
<br />
temppinno = pin -> PinNumber; <br />
<br />
}<br />
else if(graphicdata -> number == 257)<br />
{<br />
<br />
X1 = graphicdata -> Data1;<br />
<br />
if(Mirrored)<br />
X1 = -(graphicdata -> Data1);<br />
<br />
Y1 = graphicdata -> Data2;<br />
X2 = graphicdata -> Data3;<br />
<br />
if(Mirrored)<br />
X2 = -(graphicdata -> Data3);<br />
<br />
Y2 = graphicdata -> Data4;<br />
<br />
if(INCH == true)<br />
{<br />
<br />
X1 = (GLfloat) (X1 / 1000.00);<br />
Y1 = (GLfloat) (Y1 / 1000.00);<br />
X2 = (GLfloat) (X2 / 1000.00);<br />
Y2 = (GLfloat) (Y2 / 1000.00); <br />
<br />
}<br />
else if(MILLIMETER == TRUE)<br />
{<br />
<br />
X1 = (GLfloat) (X1 / 1000.00);<br />
Y1 = (GLfloat) (Y1 / 1000.00);<br />
X2 = (GLfloat) (X2 / 1000.00);<br />
Y2 = (GLfloat) (Y2 / 1000.00);<br />
<br />
X1 = (GLfloat) (X1 * 25.4);<br />
Y1 = (GLfloat) (Y1 * 25.4);<br />
X2 = (GLfloat) (X2 * 25.4);<br />
<br />
Y2 = (GLfloat) (Y2 * 25.4); <br />
<br />
} <br />
<br />
if( (graphicdata -> Data10 == "SHAPE" || graphicdata -> Data10 == "POLYGON") && pinnos == 0 )<br />
{<br />
<br />
pinnos = 1;<br />
<br />
XStart = X1;<br />
YStart = Y1;<br />
<br />
glBegin(GL_POLYGON); <br />
<br />
glVertex2d(X1, Y1);<br />
glVertex2d(X2, Y2); <br />
<br />
} <br />
else if(pinnos == 1)<br />
{ <br />
<br />
glVertex2d(X1, Y1);<br />
glVertex2d(X2, Y2);<br />
<br />
<br />
if(X2 == XStart && Y2 == YStart)<br />
{<br />
<br />
glEnd();<br />
glFlush();<br />
<br />
pinnos = 0;<br />
<br />
} <br />
<br />
}<br />
<br />
temppinno = pin -> PinNumber;<br />
<br />
}<br />
else if(graphicdata -> number == 259)<br />
{<br />
<br />
X1 = graphicdata -> Data1;<br />
<br />
if(Mirrored)<br />
X1 = -(graphicdata -> Data1);<br />
<br />
Y1 = graphicdata -> Data2;<br />
X2 = graphicdata -> Data3;<br />
<br />
if(Mirrored)<br />
X2 = -(graphicdata -> Data3);<br />
<br />
Y2 = graphicdata -> Data4;<br />
<br />
if(INCH == true)<br />
{<br />
<br />
X1 = (float) (X1 / 1000.00);<br />
Y1 = (float) (Y1 / 1000.00);<br />
X2 = (float) (X2 / 1000.00);<br />
Y2 = (float) (Y2 / 1000.00);<br />
<br />
}<br />
else if(MILLIMETER == TRUE)<br />
{<br />
<br />
X1 = (float) (X1 / 1000.00);<br />
Y1 = (float) (Y1 / 1000.00);<br />
X2 = (float) (X2 / 1000.00);<br />
Y2 = (float) (Y2 / 1000.00);<br />
<br />
X1 = (float) (X1 * 25.4);<br />
Y1 = (float) (Y1 * 25.4);<br />
X2 = (float) (X2 * 25.4);<br />
Y2 = (float) (Y2 * 25.4);<br />
<br />
}<br />
<br />
wid = (float) (X2 - X1);<br />
<br />
if(wid < 0)<br />
wid = -(wid);<br />
<br />
hei = (float) (Y2 - Y1);<br />
<br />
if(hei < 0)<br />
hei = -(hei); <br />
<br />
XCen = X1 + (wid / 2.0f);<br />
YCen = Y1 + (hei / 2.0f);<br />
<br />
if(graphicdata -> Data5 == 1)<br />
{ <br />
<br />
glColor3ub(Red,Green,Blue);<br />
glRectf(X1, Y1, X2, Y2);<br />
glFlush();<br />
<br />
}<br />
else if(graphicdata -> Data5 == 0)<br />
{<br />
<br />
glColor3ub(Red,Green,Blue);<br />
<br />
glBegin(GL_LINE_LOOP);<br />
<br />
glVertex2d(X1, Y1);<br />
glVertex2d(X1, Y2);<br />
glVertex2d(X2, Y2);<br />
glVertex2d(X2, Y1);<br />
<br />
glFlush();<br />
<br />
}<br />
<br />
}<br />
<br />
}<br />
<br />
}<br />
<br />
} <br />
<br />
}<br />
<br />
}<br />
<br />
} <br />
<br />
}<br />
With Regards,
Sangeetha.
|