00001 #include "../../../include/StrutturaGrafici/ListaFx/TLista.h"
00002 #include <wx/msgdlg.h>
00003 TLista::~TLista()
00004 {
00005
00006 while (nelements>0)
00007 RemoveNode(1);
00008
00009 }
00010 TLista::TLista()
00011 {
00012
00013 first=0;
00014 last=0;
00015
00016 nelements=0;
00017 }
00018
00019
00020
00021 void TLista::NewNode(wxColour color,char* fx,rif* pointstructure,int drawflag,int width)
00022 {
00023
00024 if(first==0)
00025 {
00026 first=(pr*)malloc(sizeof(pr));
00027 last=first;
00028 } else
00029 {
00030 last->next=(pr*)malloc(sizeof(pr));
00031 last=last->next;
00032 }
00033
00034 last->next=0;
00035
00036
00037 last->pointstructure=pointstructure;
00038 strcpy(last->fx,fx);
00039
00040 last->drawflag=drawflag;
00041 last->width=width;
00042
00043 (last->colore).blue=color.Blue();
00044 (last->colore).green=color.Green();
00045 (last->colore).red=color.Red();
00046 nelements++;
00047 }
00048
00049
00050 void TLista::RemoveNode(int position)
00051 { pr* ptrposition;
00052 pr* ptrtemp;
00053 int i=1;
00054 ptrposition=first;
00055 TParserScomponi EliminaStruttura;
00056 if(position==1)
00057 {
00058 first=first->next;
00059 nelements--;
00060
00061
00062 EliminaStruttura.Libera_Memoria(ptrposition->pointstructure);
00063
00064
00065 free(ptrposition);
00066 }else
00067 {
00068 while((i<=position-2)&&(ptrposition->next!=0))
00069 {
00070 ptrposition=ptrposition->next;
00071 i++;
00072 }
00073
00074 if(ptrposition->next!=0)
00075 {
00076 ptrtemp=ptrposition->next;
00077
00078 ptrposition->next=ptrtemp->next;
00079
00080 EliminaStruttura.Libera_Memoria(ptrtemp->pointstructure);
00081 free (ptrtemp);
00082
00083 if(ptrposition->next==0)
00084 last=ptrposition;
00085
00086 nelements--;
00087 }
00088 }
00089 }
00090
00091
00092 color TLista::ExtractColor(int position)
00093 { int i;
00094 pr* ptrposition;
00095 ptrposition=first;
00096 for (i=0;i<position-1;i++)
00097 {
00098 ptrposition=ptrposition->next;
00099 }
00100 return(ptrposition->colore);
00101
00102
00103 }
00104
00105
00106 char* TLista::ExtractFunction(int position)
00107 { int i;
00108 pr* ptrposition;
00109 ptrposition=first;
00110 for (i=0;i<position-1;i++)
00111 {
00112 ptrposition=ptrposition->next;
00113 }
00114 return(ptrposition->fx);
00115
00116
00117 }
00118 rif* TLista::ExtractStructure(int position)
00119 { int i;
00120 pr* ptrposition;
00121 ptrposition=first;
00122 for (i=0;i<position-1;i++)
00123 {
00124 ptrposition=ptrposition->next;
00125 }
00126
00127 return(ptrposition->pointstructure);
00128 }
00129
00130 int TLista::ExtractDrawFlag(int position)
00131 {
00132 int i;
00133 pr* ptrposition;
00134 ptrposition=first;
00135 for (i=0;i<position-1;i++)
00136 {
00137 ptrposition=ptrposition->next;
00138 }
00139 return(ptrposition->drawflag);
00140
00141 }
00142 int TLista::ExtractWidth(int position)
00143 {
00144 int i;
00145 pr* ptrposition;
00146 ptrposition=first;
00147 for (i=0;i<position-1;i++)
00148 {
00149 ptrposition=ptrposition->next;
00150 }
00151 return(ptrposition->width);
00152
00153
00154 }
00155 void TLista::ModifyNode(int position,wxColour color,char* fx,rif* _pointstructure,int drawflag,int width)
00156 {
00157 int i;
00158 pr* ptrposition= first;
00159
00160
00161
00162 TParserScomponi EliminaStruttura;
00163
00164 for (i=0;i<position-1;i++)
00165 {
00166 ptrposition=ptrposition->next;
00167 }
00168
00169
00170
00171 (ptrposition->colore).blue=color.Blue();
00172 (ptrposition->colore).green=color.Green();
00173 (ptrposition->colore).red=color.Red();
00174
00175
00176
00177 if(strcmp(fx,ptrposition->fx)!=0)
00178 {
00179
00180 EliminaStruttura.Libera_Memoria(ptrposition->pointstructure);
00181 ptrposition->pointstructure=_pointstructure;
00182 }
00183 strcpy(ptrposition->fx,fx);
00184 ptrposition->drawflag=drawflag;
00185 ptrposition->width=width;
00186
00187 }