Changeset 106 in Sophya for trunk/SophyaPI
- Timestamp:
- May 12, 1998, 7:13:34 PM (27 years ago)
- Location:
- trunk/SophyaPI/PI
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PI/lut.cc
r73 r106 14 14 /* --Methode-- */ 15 15 16 LUT::LUT(float min, float max, int ncol, int typ)16 LUT::LUT(float min, float max, unsigned short ncol, int typ, int ntable) 17 17 { 18 18 int nlev; … … 20 20 bornes=NULL; 21 21 nlev = ncol-2; 22 if (nlev < 0) nlev = 0;22 if (nlev < 1) nlev = 1; 23 23 bornes = new float[nlev+1]; 24 24 … … 26 26 type = typ; nLevel = nlev; 27 27 SetLut(min, max, typ); 28 table = NULL; 29 ComputeTable(ntable); 28 30 return; 29 31 } … … 34 36 if (type<0) return; 35 37 delete[] bornes; 38 delete[] table; 36 39 } 37 40 … … 84 87 85 88 /* --Methode-- */ 86 int LUT::Apply(float x)89 unsigned short LUT::Apply(float x) 87 90 { 88 91 int i; … … 91 94 return(nLevel+1); 92 95 } 96 97 /* --Methode-- */ 98 void LUT::ComputeTable(int nt) 99 { 100 if (nt < 0) nt = 16*(nLevel+2); 101 else if (nt < (nLevel+2)) nt = (nLevel+2); 102 table = new unsigned short [nt-2]; 103 tablebinwidth = (Max()-Min())/(nt-2); 104 float x = Min()+0.5*tablebinwidth; 105 for(int i=0; i<nt-2; i++) { table[i] = Apply(x); x += tablebinwidth; } 106 } -
trunk/SophyaPI/PI/lut.h
r73 r106 18 18 { 19 19 public: 20 21 int type;22 int nLevel;23 float * bornes;24 20 25 LUT(float min, float max, int ncol=16, int typ=kLutType_Lin);21 LUT(float min, float max, unsigned short ncol=16, int typ=kLutType_Lin, int ntable=-1); 26 22 ~LUT(); 27 23 void SetLut(float min, float max, int typ=0); 28 24 void Print(); 29 int Apply(float x); 25 unsigned short Apply(float x); 26 inline unsigned short ApplyFast(float x) 27 { 28 if (x < Min()) return(0); 29 if (x >= Max() ) return(nLevel+1); 30 int k = (x-Min())/tablebinwidth; 31 return(table[k]); 32 } 30 33 31 34 inline float Min() { return(bornes[0]); }; … … 33 36 inline int Type() { return(type); }; 34 37 inline int NCol() { return(nLevel+2); }; 38 39 protected: 40 void ComputeTable(int nt); 41 42 int type; 43 int nLevel; 44 float * bornes; 45 unsigned short * table; 46 float tablebinwidth; 47 35 48 }; 36 49 -
trunk/SophyaPI/PI/parradapter.cc
r105 r106 273 273 for(j=ofy; j<ofy+npy; j++) 274 274 for(i=ofx; i<ofx+npx; i++) 275 { *pp = (unsigned char) lut->Apply (275 { *pp = (unsigned char) lut->ApplyFast( 276 276 this->Value(j*sgnX+offX, i*sgnY+offY)); 277 277 pp++; } … … 285 285 for(k=0; k<zmm; k++) 286 286 vpx += this->Value( (j+l)*sgnX+offX, (i+k)*sgnY+offY); 287 *pp = (unsigned char) lut->Apply (vpx/fv);287 *pp = (unsigned char) lut->ApplyFast(vpx/fv); 288 288 pp++; 289 289 } … … 292 292 for(j=ofy; j<ofy+npy; j++) 293 293 for(i=ofx; i<ofx+npx; i++) { 294 ucp = (unsigned char) lut->Apply (this->Value(j*sgnX+offX, i*sgnY+offY));294 ucp = (unsigned char) lut->ApplyFast(this->Value(j*sgnX+offX, i*sgnY+offY)); 295 295 for(l=0; l<zm; l++) { 296 296 pp = pix+((j-ofy)*zm+l)*nppx+((i-ofx)*zm); … … 304 304 for(j=ofy; j<ofy+npy; j++) 305 305 for(i=ofx; i<ofx+npx; i++) 306 { *pp = (unsigned char) lut->Apply (306 { *pp = (unsigned char) lut->ApplyFast( 307 307 this->Value(i*sgnX+offX, j*sgnY+offY)); 308 308 pp++; } … … 316 316 for(k=0; k<zmm; k++) 317 317 vpx += this->Value( (i+k)*sgnX+offX, (j+l)*sgnY+offY); 318 *pp = (unsigned char) lut->Apply (vpx/fv);318 *pp = (unsigned char) lut->ApplyFast(vpx/fv); 319 319 pp++; 320 320 } … … 323 323 for(j=ofy; j<ofy+npy; j++) 324 324 for(i=ofx; i<ofx+npx; i++) { 325 ucp = (unsigned char) lut->Apply (this->Value(i*sgnX+offX, j*sgnY+offY));325 ucp = (unsigned char) lut->ApplyFast(this->Value(i*sgnX+offX, j*sgnY+offY)); 326 326 for(l=0; l<zm; l++) { 327 327 pp = pix+((j-ofy)*zm+l)*nppx+((i-ofx)*zm); -
trunk/SophyaPI/PI/piapplgen.cc
r92 r106 75 75 } 76 76 77 //++ 78 // void SetReady() 79 // Modifie l'état global de l'application - Pssage à l'état normal, 80 // prêt à traiter les actions utilisateur. 81 // void SetBusy() 82 // Passage en mode de calcul - La souris prend la forme de la montre 83 // pour la fenêtre principale 84 // void SetBlocked() 85 // Passge en mode bloqué. La barre de menu devient insensible 86 // int GetState() 87 // Renvoie l'état global de l'application "(kReadyState, kBusyState, kBlockedState)". 88 //-- 77 89 void PIApplicationGen::SetReady() 78 90 { -
trunk/SophyaPI/PI/piapplx.cc
r92 r106 115 115 Display * mdsp; 116 116 mState = kReadyState; 117 Menubar()->SetSensitive(); 117 118 mdsp = XtDisplay (topwdg->XtWdg()); 118 119 XDefineCursor(mdsp, XtWindow(topwdg->XtWdg()), a_curs[0]); … … 128 129 Display * mdsp; 129 130 mState = kBusyState; 131 Menubar()->SetSensitive(); 130 132 mdsp = XtDisplay (topwdg->XtWdg()); 131 133 // if ( XtIsRealized(topwdg->XtWdg()) ) … … 143 145 Display * mdsp; 144 146 mState = kBlockedState; 147 Menubar()->SetUnSensitive(); 145 148 mdsp = XtDisplay (topwdg->XtWdg()); 146 149 XDefineCursor(mdsp, XtWindow(topwdg->XtWdg()), a_curs[1]); -
trunk/SophyaPI/PI/picons.cc
r104 r106 877 877 // Le traitement du scroll-bar 878 878 else if ((ModMsg(msg) == PIMsg_DataChanged) && (UserMsg(msg) == msgScb) ) { 879 off = (int)data;879 off = * ((int *)data); 880 880 // printf(" PIConsole::Process() From ScrollBar : Off=%d \n ", off); 881 881 SetDispOffset(off); -
trunk/SophyaPI/PI/piimage.cc
r104 r106 618 618 if (zmx < 1) zmx = 1; 619 619 zmgv = zmx; 620 if (zmx > 1) zmx = -zmx; 620 if (zmx > 1) zmx = -zmx; 621 621 gpixm = img->ComputePixmap(lut, 0, 0, zmx, xwsz, ywsz, gpixm, &xsgpxm, &ysgpxm); 622 printf("DEBUG-ComputeGloVPixmap() %d-%d , (%d,%d) , %d-%d \n", xwsz, ywsz, zmx, zmy, xsgpxm, ysgpxm); 622 623 return; 623 624 } -
trunk/SophyaPI/PI/pimenubargen.h
r2 r106 15 15 16 16 virtual void AppendMenu(PIPDMenu *pdm)=0; 17 virtual void RemoveMenu(PIPDMenu *pdm)=0; 18 virtual void SetSensitivity(PIPDMenu *pdm, bool sens=true)=0; 19 virtual bool IsSensitive(PIPDMenu *pdm)=0; 17 20 18 21 virtual long kind() {return ClassId; } -
trunk/SophyaPI/PI/pimenubarx.cc
r56 r106 66 66 } 67 67 68 /* --Methode-- */ 69 void PIMenubarX::RemoveMenu(PIPDMenu *pdm) 70 { 71 int i,j; 72 for(i=0; i<mNItem; i++) 73 if ( mMbb[i].pdm == pdm ) { 74 XtDestroyWidget(mMbb[i].itb); 75 for(j=i; j<mNItem-1; j++) mMbb[j] = mMbb[j+1]; 76 mNItem--; break; 77 } 78 return; 79 } 80 81 /* --Methode-- */ 82 void PIMenubarX::SetSensitivity(PIPDMenu *pdm, bool sens) 83 { 84 int i; 85 for(i=0; i<mNItem; i++) 86 if ( mMbb[i].pdm == pdm ) { 87 if (sens) XtSetSensitive(mMbb[i].itb, TRUE); 88 else XtSetSensitive(mMbb[i].itb, FALSE); 89 break; 90 } 91 return; 92 } 93 94 /* --Methode-- */ 95 bool PIMenubarX::IsSensitive(PIPDMenu *pdm) 96 { 97 int i; 98 for(i=0; i<mNItem; i++) 99 if ( mMbb[i].pdm == pdm ) { 100 if (XtIsSensitive(mMbb[i].itb) == TRUE) return(true); 101 else return(false); 102 break; 103 } 104 return(false); 105 } -
trunk/SophyaPI/PI/pimenubarx.h
r2 r106 12 12 class PIMenubarX : public PIMenubarGen { 13 13 public: 14 PIMenubarX(PIApplicationGen* par, char* nom); 15 ~PIMenubarX(); 16 virtual void AppendMenu(PIPDMenu *pdm); 14 PIMenubarX(PIApplicationGen* par, char* nom); 15 ~PIMenubarX(); 16 17 virtual void AppendMenu(PIPDMenu *pdm); 18 virtual void RemoveMenu(PIPDMenu *pdm); 19 virtual void SetSensitivity(PIPDMenu *pdm, bool sens=true); 20 virtual bool IsSensitive(PIPDMenu *pdm); 17 21 18 22 protected: -
trunk/SophyaPI/PI/pimenugen.h
r37 r106 6 6 7 7 enum PIMenuType { k_PopupMenu = 1, k_PulldownMenu = 2 }; 8 8 9 9 10 class PIMenuGen : public PIWdg { … … 15 16 16 17 virtual void AppendItem(char* nom, PIMessage msg, char* sc=NULL)=0; 18 virtual void AppendCheckItem(char* nom, PIMessage msg, char* sc=NULL)=0; 19 virtual void AppendPDMenu(PIMenuGen *pdm, char* sc=NULL)=0; 17 20 18 21 virtual void DeleteItem(char *nom)=0; … … 20 23 virtual void DeleteItemNum(int n)=0; 21 24 22 virtual void CheckItem(char *nom, bool st=false)=0; 23 virtual void CheckItemMsg(PIMessage msg, bool st=false)=0; 24 virtual void CheckItemNum(int n, bool st=false)=0; 25 virtual void SetSensitivity(char *nom, bool sens=true)=0; 26 virtual void SetSensitivityMsg(PIMessage msg, bool sens=true)=0; 27 virtual void SetSensitivityNum(int n, bool sens=true)=0; 28 29 virtual bool IsSensitive(char *nom)=0; 30 virtual bool IsSensitiveMsg(PIMessage msg)=0; 31 virtual bool IsSensitiveNum(int n)=0; 32 33 virtual void SetState(char *nom, bool st=false)=0; 34 virtual void SetStateMsg(PIMessage msg, bool st=false)=0; 35 virtual void SetStateNum(int n, bool st=false)=0; 36 37 virtual bool GetState(char *nom)=0; 38 virtual bool GetStateMsg(PIMessage msg)=0; 39 virtual bool GetStateNum(int n)=0; 25 40 26 41 virtual void Show()=0; … … 29 44 30 45 virtual long kind() {return ClassId; } 46 virtual PIMenuType MType() { return mMTyp; } 31 47 32 48 protected: -
trunk/SophyaPI/PI/pimenux.cc
r80 r106 1 1 #include<stdio.h> 2 #include<iostream.h> 2 3 3 4 #include "pimenux.h" … … 15 16 // La fonction suivante permet de bypasser ce probleme- Le createur d'application 16 17 // X doit donc appeler la fonction ci-dessous pour initialiser menuXTopWdg 17 // Reza /411/9718 // Reza 4/11/97 18 19 static SysDWdg menuXTopWdg = NULL; 19 20 void SetTopWdgForMenuX(SysDWdg mtw) { … … 26 27 27 28 // Fonction prive (CallBack) 28 static void menub_action(Widget w, XtPointer *usd, XtPointer *calld); 29 static void menu_action(Widget w, XtPointer usd, XtPointer calld); 30 static void menu_toggle_action(Widget w, XtPointer usd, XmToggleButtonCallbackStruct* calld); 29 31 30 32 /* Nouvelle-Fonction */ 31 void menu b_action(Widget /*w*/, XtPointer *usd, XtPointer*/*calld*/)33 void menu_action(Widget /*w*/, XtPointer usd, XtPointer /*calld*/) 32 34 { 33 35 PIMenuX *pim; … … 36 38 cusd = ( _pimxit_ *)usd ; 37 39 pim = (PIMenuX *) (cusd->pmen); 38 39 40 // pim->Hide(); 40 pim->Send(cusd->msg, PIMsg_Click , (void *)pim->ItemNameWdg(cusd->itb));41 pim->Send(cusd->msg, PIMsg_Click ); 41 42 #ifdef DEBUG_PIMenuX 42 printf("%%%Debug_menu b_action: Msg= %d %lx\n", (int)cusd->msg, (long)pim);43 printf("%%%Debug_menu_action: Msg= %d %lx\n", (int)cusd->msg, (long)pim); 43 44 #endif 44 45 return; 45 46 } 47 48 // Variable globale pour Toggle Item's Send(..., ..., data); 49 static bool toggmenbut = false; 50 51 /* Nouvelle-Fonction */ 52 void menu_toggle_action(Widget /*w*/, XtPointer usd, XmToggleButtonCallbackStruct* calld) 53 { 54 PIMenuX *pim; 55 _pimxit_ *cusd; 56 57 cusd = ( _pimxit_ *)usd ; 58 pim = (PIMenuX *) (cusd->pmen); 59 if (calld->set == True) cusd->togstate = toggmenbut = true; 60 else cusd->togstate = toggmenbut = false; 61 pim->Send(cusd->msg, PIMsg_DataChanged, (void *)(&toggmenbut)); 62 return; 63 } 64 65 46 66 47 67 #define NBITEMB 10 … … 78 98 void PIMenuX::AppendItem(char* nom, PIMessage msg, char* sc) 79 99 { 80 AddItem(nom, msg, false, sc); 100 AddItem(nom, msg, 0, sc, NULL); 101 } 102 103 /* --Methode-- */ 104 void PIMenuX::AppendCheckItem(char* nom, PIMessage msg, char* sc) 105 { 106 AddItem(nom, msg, 1, sc, NULL); 107 } 108 109 /* --Methode-- */ 110 void PIMenuX::AppendPDMenu(PIMenuGen *pdm, char* sc) 111 { 112 if (pdm->MType() != k_PulldownMenu) { 113 cerr << "PIMenuX::AppendPDMenu()/Erreur: PullDownMenu PIPDMenu seulement ... " << endl; 114 return; 115 } 116 AddItem(NULL, pdm->Msg(), 2, sc, (PIMenuX*)pdm); 81 117 } 82 118 … … 84 120 void PIMenuX::DeleteItem(char *nom) 85 121 { 86 87 for(int i=0; i<mNItem; i++) 88 if (strcmp(ItemName(i), nom) == 0) 89 { DeleteItemNum(i); break; } 90 91 return; 122 DeleteItemNum(GetNumItem(nom)); 92 123 } 93 124 … … 95 126 void PIMenuX::DeleteItemMsg(PIMessage msg) 96 127 { 97 for(int i=0; i<mNItem; i++) 98 if (mBut[i].msg == msg) 99 { DeleteItemNum(i); break; } 100 101 return; 102 } 103 128 DeleteItemNum(GetNumItemMsg(msg)); 129 } 130 131 /* --Methode-- */ 132 void PIMenuX::SetSensitivity(char *nom, bool sens) 133 { 134 SetSensitivityNum(GetNumItem(nom), sens); 135 } 136 137 /* --Methode-- */ 138 void PIMenuX::SetSensitivityMsg(PIMessage msg, bool sens) 139 { 140 SetSensitivityNum(GetNumItemMsg(msg), sens); 141 } 142 143 /* --Methode-- */ 144 bool PIMenuX::IsSensitive(char *nom) 145 { 146 return(IsSensitiveNum(GetNumItem(nom)) ); 147 } 148 149 /* --Methode-- */ 150 bool PIMenuX::IsSensitiveMsg(PIMessage msg) 151 { 152 return(IsSensitiveNum(GetNumItemMsg(msg)) ); 153 } 154 155 /* --Methode-- */ 156 bool PIMenuX::IsSensitiveNum(int n) 157 { 158 if ((n < 0) || (n >= mNItem)) return(false); 159 if (XtIsSensitive(mBut[n].itb) == TRUE) return(true); 160 else return(false); 161 } 162 163 /* --Methode-- */ 164 void PIMenuX::SetSensitivityNum(int n, bool sens) 165 { 166 if ((n < 0) || (n >= mNItem)) return; 167 if (sens) XtSetSensitive(mBut[n].itb, TRUE); 168 else XtSetSensitive(mBut[n].itb, FALSE); 169 } 104 170 105 171 /* --Methode-- */ … … 108 174 if ((n < 0) || (n >= mNItem)) return; 109 175 XtDestroyWidget(mBut[n].itb); 110 for(int i=n; i<mNItem-1; i++) 111 { 176 for(int i=n; i<mNItem-1; i++) 177 { 112 178 String cbckn; 113 if (mBut[i+1].togg) cbckn = XmNvalueChangedCallback; 114 else cbckn = XmNactivateCallback; 115 XtRemoveCallback(mBut[i+1].itb, cbckn, 116 (XtCallbackProc)menub_action, (XtPointer)(mBut+i+1)); 117 mBut[i] = mBut[i+1]; 118 XtAddCallback(mBut[i].itb, cbckn, 119 (XtCallbackProc)menub_action, (XtPointer)(mBut+i)); 179 XtCallbackProc cbproc; 180 if (mBut[i+1].toggpdm < 2) { 181 if (mBut[i+1].toggpdm == 1) // ToggleItem 182 { cbckn = XmNvalueChangedCallback; cbproc = (XtCallbackProc)menu_toggle_action; } 183 else { cbckn = XmNactivateCallback; cbproc = menu_action; } 184 185 XtRemoveCallback(mBut[i+1].itb, cbckn, cbproc, (XtPointer)(mBut+i+1)); 186 mBut[i] = mBut[i+1]; 187 XtAddCallback(mBut[i].itb, cbckn, cbproc, (XtPointer)(mBut+i)); 188 } 189 else mBut[i] = mBut[i+1]; 120 190 } 121 191 mNItem--; … … 124 194 125 195 /* --Methode-- */ 126 void PIMenuX::CheckItem(char *nom, bool st) 127 { 128 129 for(int i=0; i<mNItem; i++) 130 if (strcmp(ItemName(i), nom) == 0) 131 { CheckItemNum(i, st); break; } 132 196 void PIMenuX::SetState(char *nom, bool st) 197 { 198 SetStateNum(GetNumItem(nom), st); 199 } 200 201 /* --Methode-- */ 202 void PIMenuX::SetStateMsg(PIMessage msg, bool st) 203 { 204 SetStateNum(GetNumItemMsg(msg), st); 205 } 206 207 /* --Methode-- */ 208 void PIMenuX::SetStateNum(int n, bool st) 209 { 210 if ((n < 0) || (n >= mNItem)) return; 211 if (mBut[n].toggpdm != 1 ) return; // Pas un toggle-item 212 Arg warg[2]; 213 if (st) XtSetArg(warg[0],XmNset, True); 214 else XtSetArg(warg[0],XmNset, False); 215 XtSetValues(mBut[n].itb, warg, 1); 216 mBut[n].togstate = st; 133 217 return; 134 218 } 135 219 136 220 /* --Methode-- */ 137 void PIMenuX::CheckItemMsg(PIMessage msg, bool st) 138 { 139 for(int i=0; i<mNItem; i++) 140 if (mBut[i].msg == msg) 141 { CheckItemNum(i, st); break; } 142 143 return; 144 } 145 146 /* --Methode-- */ 147 void PIMenuX::CheckItemNum(int n, bool /*st*/) 148 { 149 printf("PIMenuX::CheckItemNum(%d,bool) Error/ Not yet implemented \n", n); 150 return; 151 } 221 bool PIMenuX::GetState(char *nom) 222 { 223 return( GetStateNum(GetNumItem(nom)) ); 224 } 225 226 /* --Methode-- */ 227 bool PIMenuX::GetStateMsg(PIMessage msg) 228 { 229 return( GetStateNum(GetNumItemMsg(msg)) ); 230 } 231 232 /* --Methode-- */ 233 bool PIMenuX::GetStateNum(int n) 234 { 235 if ((n < 0) || (n >= mNItem)) return(false); 236 if (mBut[n].toggpdm != 1 ) return(false); 237 return(mBut[n].togstate); 238 } 239 152 240 153 241 /* --Methode-- */ … … 234 322 235 323 /* --Methode-- */ 236 void PIMenuX::AddItem(c har* nom, PIMessage msg, bool tog, char* sc)324 void PIMenuX::AddItem(const char* nom, PIMessage msg, int tog, char* sc, PIMenuX *pdm) 237 325 { 238 326 _pimxit_ *buto; 239 327 SysDWdgClass wdgcl; 240 328 String cbckn; 241 242 243 if (mNItem >= mNItemMax) 244 { 329 XtCallbackProc cbproc; 330 Arg warg[2]; 331 int n=0; 332 333 334 if (mNItem >= mNItemMax) { 245 335 buto = mBut; 246 336 mNItemMax += NBITEMB; 247 337 mBut = new _pimxit_[mNItemMax]; 248 for(int i=0; i<mNItem; i++) 249 { 250 if (buto[i].togg) cbckn = XmNvalueChangedCallback; 251 else cbckn = XmNactivateCallback; 252 XtRemoveCallback(buto[i].itb, cbckn, 253 (XtCallbackProc)menub_action, (XtPointer)(buto+i)); 254 mBut[i] = buto[i]; 255 XtAddCallback(mBut[i].itb, cbckn, 256 (XtCallbackProc) menub_action, (XtPointer)(mBut+i)); 338 for(int i=0; i<mNItem; i++) { 339 if (buto[i].toggpdm < 2) { // Pas de Cascade Menu 340 if (buto[i].toggpdm == 1) // ToggleItem 341 { cbckn = XmNvalueChangedCallback; cbproc = (XtCallbackProc)menu_toggle_action; } 342 else { cbckn = XmNactivateCallback; cbproc = menu_action; } 343 XtRemoveCallback(buto[i].itb, cbckn, cbproc, (XtPointer)(buto+i)); 344 mBut[i] = buto[i]; 345 XtAddCallback(mBut[i].itb, cbckn, cbproc, (XtPointer)(mBut+i)); 346 } 347 else mBut[i] = buto[i]; 257 348 } 258 259 349 delete[] buto; 260 350 } 261 351 262 if (tog) 263 { 264 cbckn = XmNvalueChangedCallback; 265 wdgcl = xmToggleButtonWidgetClass; 266 } 267 else 268 { 269 cbckn = XmNactivateCallback; 270 wdgcl = xmPushButtonWidgetClass; 271 } 272 273 mBut[mNItem].itb = XtCreateManagedWidget(nom, wdgcl, this->XtWdg(), NULL, 0) ; 274 XtAddCallback(mBut[mNItem].itb, cbckn, 275 (XtCallbackProc)menub_action, (XtPointer)(mBut+mNItem)); 352 if (tog < 2) { // Pas de Cascade Menu 353 if (tog == 1) { // Toggle-Item 354 cbckn = XmNvalueChangedCallback; cbproc = (XtCallbackProc)menu_toggle_action; 355 wdgcl = xmToggleButtonWidgetClass; 356 XtSetArg(warg[0],XmNset, False); n = 1; } 357 else { 358 cbckn = XmNactivateCallback; cbproc = menu_action; 359 wdgcl = xmPushButtonWidgetClass; n = 0; } 360 361 mBut[mNItem].itb = XtCreateManagedWidget(nom, wdgcl, this->XtWdg(), warg, n) ; 362 XtAddCallback(mBut[mNItem].itb, cbckn, cbproc, (XtPointer)(mBut+mNItem)); 363 } 364 else { // Creation Cascade-Menu 365 XtSetArg(warg[0], XmNsubMenuId, pdm->XtWdg()); 366 mBut[mNItem].itb = XtCreateManagedWidget(pdm->Nom().c_str(), xmCascadeButtonWidgetClass, 367 XtWdg(), warg, 1) ; 368 pdm->SetMsgParent(this); 369 } 370 276 371 if (sc) // Raccourci clavier 277 372 { 278 373 char acc[16]; 279 int n=0;280 Arg warg[2];281 374 XmString xmstr; 282 375 … … 295 388 mBut[mNItem].pmen = this; 296 389 mBut[mNItem].msg = msg; 297 mBut[mNItem].togg = tog; 390 mBut[mNItem].toggpdm = tog; 391 mBut[mNItem].togstate = false; 298 392 mNItem++; 299 393 return; … … 302 396 303 397 304 /* --Methode-- */398 /* --Methode-- 305 399 void PIMenuX::Check() 306 400 { 307 401 printf("#Debug_CHECK: %d %d %d %d \n",XSize(), YSize(), XPos(), YPos() ); 308 402 for(int i=0; i<mNItem; i++) 309 printf("##Debug_CHECK: %d %d %ld %lx %lx %lx \n", i, (int)mBut[i].togg ,403 printf("##Debug_CHECK: %d %d %ld %lx %lx %lx \n", i, (int)mBut[i].toggpdm, 310 404 (long) mBut[i].msg, (long) mBut[i].itb, 311 405 (long) mBut[i].pmen, long (mBut+i)); 312 406 return; 313 407 } 314 315 /* --Methode-- A virer316 void PIMenuX::AppendCheckItem(char* nom, PIMessage msg)317 {318 AddItem(nom, msg, true);319 }320 408 */ 321 409 322 /* --Methode-- A virer323 void PIMenuX::SetItem(int n, bool st)324 {325 if ((n < 0) || (n >= mNItem)) return;326 if (mBut[n].togg) // C'est un toggle Bouton !327 {328 Arg wargs[2];329 int n=0;330 if (st) XtSetArg(wargs[n],XmNset,TRUE);331 else XtSetArg(wargs[n],XmNset,FALSE);332 n++;333 XtSetValues(mBut[n].itb, wargs, n);334 }335 return;336 }337 */338 410 339 411 -
trunk/SophyaPI/PI/pimenux.h
r37 r106 12 12 PIMenuX *pmen; 13 13 PIMessage msg; 14 bool togg; 14 int toggpdm; // 0= Normal Item, 1, Toggle Item, 2= PDMenu 15 bool togstate; // true , false pour toggle items 15 16 }; 16 17 … … 23 24 24 25 virtual void AppendItem(char* nom, PIMessage msg, char* sc=NULL); 26 virtual void AppendCheckItem(char* nom, PIMessage msg, char* sc=NULL); 27 virtual void AppendPDMenu(PIMenuGen *pdm, char* sc=NULL); 25 28 26 29 virtual void DeleteItem(char *nom); … … 28 31 virtual void DeleteItemNum(int n); 29 32 30 virtual void CheckItem(char *nom, bool st=false); 31 virtual void CheckItemMsg(PIMessage msg, bool st=false); 32 virtual void CheckItemNum(int n, bool st=false); 33 virtual void SetSensitivity(char *nom, bool sens=true); 34 virtual void SetSensitivityMsg(PIMessage msg, bool sens=true); 35 virtual void SetSensitivityNum(int n, bool sens=true); 36 37 virtual bool IsSensitive(char *nom); 38 virtual bool IsSensitiveMsg(PIMessage msg); 39 virtual bool IsSensitiveNum(int n); 40 41 virtual void SetState(char *nom, bool st=false); 42 virtual void SetStateMsg(PIMessage msg, bool st=false); 43 virtual void SetStateNum(int n, bool st=false); 44 45 virtual bool GetState(char *nom); 46 virtual bool GetStateMsg(PIMessage msg); 47 virtual bool GetStateNum(int n); 33 48 34 49 virtual void Show(); … … 45 60 46 61 protected: 47 void AddItem(char* nom, PIMessage msg, bool tog, char* sc=NULL); 48 void Check(); 62 void AddItem(const char* nom, PIMessage msg, int tog, char* sc, PIMenuX *pdm); 49 63 50 64 int mNItem, mNItemMax; -
trunk/SophyaPI/PI/pistdwdggen.cc
r30 r106 1 1 #include "pistdwdggen.h" 2 2 3 /************* PILabelGen ************/ 3 4 4 /************* PILabelGen ************/ 5 //++ 6 // Class PILabel 7 // Lib PI 8 // include pistdwdggen.h 9 // 10 // Composant graphique simple permettant d'afficher une étiquette (texte). 11 // "PILabelGen" définit l'interface (classe virtuelle pure). Les objets 12 // instanciés doivent être de la classe "PILabel" déclaré dans le fichier 13 // entête "PISTDWDG_H". 14 //-- 15 //++ 16 // Links Parents 17 // PIWdg 18 //-- 19 20 //++ 21 // Titre Constructeur, méthodes 22 //-- 23 //++ 24 // PILabel(PIContainerGen* par, char* nom, int sx=10, int sy=10, int px=0, int py=0) 25 // Création d'un objet PILabel ayant un contenu (étiquette) identique à "nom". 26 // SetLabel(string const& lab) 27 // Modifie l'étiquette affichée par l'objet 28 //-- 29 30 31 5 32 6 33 PILabelGen::PILabelGen(PIContainerGen *par, char *nom, … … 13 40 14 41 /************* PIButtonGen ************/ 42 //++ 43 // Class PIButton 44 // Lib PI 45 // include pistdwdggen.h 46 // 47 // Composant graphique de type bouton . 48 // "PIButtonGen" définit l'interface (classe virtuelle pure). Les objets 49 // instanciés doivent être de la classe "PIButton" déclaré dans le fichier 50 // entête "PISTDWDG_H". Lors de l'activation, le message de l'objet complété 51 // par le modifier "PIMsg_Click" est envoyé ("Send()"). Le champ "data" 52 // contient le pointeur "NULL". 53 //-- 54 //++ 55 // Links Parents 56 // PIWdg 57 //-- 58 59 //++ 60 // Titre Constructeur, méthodes 61 //-- 62 //++ 63 // PIButton(PIContainerGen* par, char* nom, PIMessage msg = PIMsg_Click, int sx=10, int sy=10, int px=0, int py=0) 64 // Création d'un objet PIButton avec une étiquette identique à "nom". 65 // SetLabel(string const& lab) 66 // Modifie l'étiquette affichée par l'objet bouton. 67 //-- 68 69 15 70 16 71 PIButtonGen::PIButtonGen(PIContainerGen *par, char *nom, PIMessage msg, -
trunk/SophyaPI/PI/pistdwdgx.cc
r104 r106 251 251 static void toggb_action(Widget w, XtPointer *usd, XmToggleButtonCallbackStruct* calld); 252 252 253 // Variable globale d'etat de checkbox pour Send(...) 254 static bool toggb_state = false; 255 253 256 /* Nouvelle-Fonction */ 254 257 void toggb_action(Widget , XtPointer *usd, XmToggleButtonCallbackStruct* calld) … … 258 261 if (calld->set == True) picb->mSt = true; 259 262 else picb->mSt = false; 260 picb->Send(picb->Msg(), PIMsg_DataChanged, (void *)(picb->mSt)); 263 toggb_state = picb->mSt; 264 picb->Send(picb->Msg(), PIMsg_DataChanged, (void *)(&toggb_state)); 261 265 return; 262 266 } … … 291 295 Arg warg[2]; 292 296 mSt = st; 293 XtSetArg(warg[0],XmNset, mSt); 297 if (st) XtSetArg(warg[0],XmNset, True); 298 else XtSetArg(warg[0],XmNset, False); 294 299 XtSetValues(XtWdg(), warg, 1); 295 300 return; … … 309 314 static void scale_action(Widget w, XtPointer *usd, 310 315 XmScaleCallbackStruct *calld); 311 316 // Variable globale pour contenir valeur de Scale a l'appel de Send; 317 static int scale_value=0; 318 312 319 void scale_action(Widget, XtPointer *usd, 313 320 XmScaleCallbackStruct *calld) … … 317 324 pis = (PIScale *) usd ; 318 325 pis->CBSetVal(calld->value); 319 pis->Send(pis->Msg(), PIMsg_DataChanged, (void *)calld->value); 326 scale_value = calld->value; 327 pis->Send(pis->Msg(), PIMsg_DataChanged, (void *)(&scale_value)); 320 328 return; 321 329 } … … 417 425 static void scrollbar_drag(Widget w, XtPointer *usd, 418 426 XmScrollBarCallbackStruct *calld); 427 // Variable globale pour contenir valeur de Scale a l'appel de Send; 428 static int scroll_value=0; 419 429 420 430 void scrollbar_action(Widget, XtPointer *usd, … … 425 435 pis = (PIScrollBar *) usd ; 426 436 pis->CBSetVal(calld->value); 427 pis->Send(pis->Msg(), PIMsg_DataChanged, (void *)calld->value); 437 scroll_value = calld->value; 438 pis->Send(pis->Msg(), PIMsg_DataChanged, (void *)(&scroll_value)); 428 439 return; 429 440 } … … 436 447 pis = (PIScrollBar *) usd ; 437 448 pis->CBSetVal(calld->value); 438 pis->Send(pis->Msg(), PIMsg_Drag, (void *)calld->value); 449 scroll_value = calld->value; 450 pis->Send(pis->Msg(), PIMsg_Drag, (void *)(&scroll_value)); 439 451 return; 440 452 } -
trunk/SophyaPI/PI/pitestapp.cc
r105 r106 2 2 #include <stdio.h> 3 3 4 /* Ceci est un programme test des differents composants de PI : PEIDA Interactif */ 5 /* Reza , 96-98 */ 6 7 4 8 #include "pisysdep.h" 5 9 … … 8 12 #include PIMENU_H 9 13 #include PIOPTMENU_H 10 // #include PIMENUBAR_H11 14 #include PISTDWDG_H 12 15 #include PIBWDG_H 13 14 16 #include PIPIXMAP_H 15 16 17 #include PIFILECHO_H 18 #include PILIST_H 17 19 18 20 #include "ex_dessin.h" 19 21 #include "sc_sample.h" 20 22 #include "piimage.h" 21 22 #include PILIST_H 23 #include "pimgadapter.h" 24 23 25 24 26 #include "fitsimage.h" 25 27 26 #include <X11/Xlib.h>27 28 28 29 int SysBeep(int n) … … 31 32 return(0); 32 33 } 33 /*34 class PITestWindow : public PIWindow {35 public:36 PITestWindow(PIMsgHandler *par);37 ~PITestWindow() {}38 39 PIText text;40 PIButton bouton;41 PIButton bouton2, bouton3;42 PILabel label;43 PIScale scl;44 PIPUMenu * menu;45 46 };47 */48 34 49 35 class PITestApp : public PIApplication { … … 55 41 56 42 // PIMenubar * menb; 57 PIPDMenu *m[3]; 43 PIPDMenu *m[5]; 44 PIPDMenu *mc[2]; 58 45 PICheckBox * ckb; 59 46 PIText * text; 60 47 PIButton * bouton; 61 48 PIButton * bouton2, * bouton3, * bouton4, *bouton5; 49 PIButton * bouton11, * bouton12, * bouton13,* bouton14 ,* bouton15 ; 62 50 PILabel * label; 63 51 PIScale * scl; … … 68 56 PILabel * labimg; 69 57 ScSample * scs; 58 bool stnewmen[2]; 70 59 71 60 }; … … 97 86 98 87 PITestApp::PITestApp(int sx, int sy) 99 : PIApplication( sx, sy)88 : PIApplication(550, 450) 100 89 { 101 90 char ans[128]; … … 111 100 m[1]->AppendItem("Coller", 10202); 112 101 m[1]->AppendItem("Couper", 10203); 102 m[1]->AppendCheckItem("Check It", 10205); 103 mc[0] = new PIPDMenu(m[1], "Cascade"); 104 mc[0]->AppendItem("EdeCas-1", 10221); 105 mc[0]->AppendItem("EdeCas-2", 10222); 106 mc[0]->AppendItem("EdeCas-3", 10223); 107 m[1]->AppendPDMenu(mc[0]); 108 113 109 m[2] = new PIPDMenu((PIMsgHandler *)Menubar(),"Operation"); 114 110 m[2]->AppendItem("AddItem", 10301); 115 111 m[2]->AppendItem("DelItemName", 10302); 116 112 m[2]->AppendItem("DelItemMsg", 10303); 113 114 m[3] = new PIPDMenu((PIMsgHandler *)Menubar(),"Special"); 115 m[3]->AppendItem("Spec-Opt1", 10401); 116 m[3]->AppendItem("Spec-Opt2", 10402); 117 m[3]->AppendItem("Spec-Cascade", 10403); 118 mc[1] = new PIPDMenu(m[3], "Spec-Cascade"); 119 mc[1]->AppendItem("Spec-Cas-1", 10441); 120 mc[1]->AppendItem("Spec-Cas-2", 10442); 121 mc[1]->AppendItem("Spec-Cas-3", 10443); 122 m[3]->AppendPDMenu(mc[1]); 123 m[3]->AppendCheckItem("Checkable", 10414); 124 125 m[4] = new PIPDMenu((PIMsgHandler *)Menubar(),"AddMenu2"); 126 m[4]->AppendItem("option-A", 10501); 127 m[4]->AppendItem("option-B", 10502); 128 m[4]->AppendItem("option-C", 10503); 117 129 118 130 AppendMenu(m[0]); … … 135 147 labimg = new PILabel(this->MainWin(), "PixelValue", 250, 20, 10, 320); 136 148 149 int psx, psy; 150 PrefCompSz(psx, psy); 151 cout << " Creation bouton 11 -14 avec Sx,Sy= " << psx << " , " << psy << endl; 152 153 bouton11 = new PIButton(this->MainWin(), "AddMen-1", 1133, psx*1.5, psy, 20, 360); 154 bouton11 = new PIButton(this->MainWin(), "AddMen-2", 1233, psx*1.5, psy, 40+psx*1.5, 360); 155 stnewmen[0] = stnewmen[1] = false; 156 bouton13 = new PIButton(this->MainWin(), "Ready/Bloc", 1333, psx*1.5, psy, 60+psx*3, 360); 157 bouton14 = new PIButton(this->MainWin(), "TS-ExBWdg", 1433, psx*1.5, psy, 80+psx*4.5, 360); 158 bouton15 = new PIButton(this->MainWin(), "TS-MenuIt", 1533, psx*1.5, psy, 100+psx*6, 360); 159 137 160 // XSync(PIXDisplay(), FALSE); 138 161 // printf("Creation PIPUMenu DoIt-1... \n"); gets(ans); … … 169 192 170 193 opt = new PIOptMenu(this->MainWin(), pum[0], 90, 25, 110, 150); 171 opt->SetValueStr("Sqrt"); 194 string ops = "Sqrt"; 195 opt->SetValueStr(ops); 172 196 opt2 = new PIOptMenu(this->MainWin(), pum[1], 90, 25, 150, 200); 173 197 174 198 opt3 = new PIOptMenu(this->MainWin(), pum[0], 80, 25, 110, 250); 175 opt3->SetValueStr("Linear"); 199 ops = "Linear"; 200 opt3->SetValueStr(ops); 176 201 177 202 } … … 187 212 delete bouton4; 188 213 delete bouton5; 214 delete bouton11; 215 delete bouton12; 216 delete bouton13; 217 delete bouton14; 218 delete bouton15; 189 219 delete scl; 190 220 delete menu; 191 delete m[0]; delete m[1]; delete m[2]; 221 delete m[0]; delete m[1]; delete m[2]; delete m[3]; delete m[4]; 222 delete mc[0]; delete mc[1]; 192 223 delete opt; 193 224 delete opt2; … … 228 259 sprintf(truc,"< %ld - %d (%d)>",msg,x++, (int)((PIWdgGen *)sender)->kind()); 229 260 this->label->SetLabel(truc); 230 sprintf(truc,"[%d] Msg= %ld (%d-%d) Kind=(%d) Data= (% d - %lx)",x, msg, (int)UserMsg(msg),231 (int)ModMsg(msg), (int)((PIWdgGen *)sender)->kind(), ( int)data, (long)data);261 sprintf(truc,"[%d] Msg= %ld (%d-%d) Kind=(%d) Data= (%ld - %lx)",x, msg, (int)UserMsg(msg), 262 (int)ModMsg(msg), (int)((PIWdgGen *)sender)->kind(), (long)data, (long)data); 232 263 puts(truc); 233 264 234 265 if (ModMsg(msg) == PIMsg_Active) 235 266 { printf("Process: Setting active ImageWindow (%lx) \n", (long)sender); 236 cur = (PIImage *) data; return;}267 cur = (PIImage *)sender; return;} 237 268 238 269 if (ModMsg(msg) == PIMsg_Close) … … 276 307 } 277 308 309 if ( (msg == 1133) || (msg == 1233) ) { // On ajoute ou on enleve un menu du menu-bar 310 int idxmen = (msg-1133)/100; 311 cout << " Add/Remove Menu idxmen= " << idxmen << " Bool= " 312 << Menubar()->IsSensitive(m[idxmen+3]) << " ( " << stnewmen[idxmen] << ")" << endl; 313 if ( Menubar()->IsSensitive(m[idxmen+3]) ) 314 { Menubar()->RemoveMenu(m[idxmen+3]); stnewmen[idxmen] = false; } 315 else { Menubar()->AppendMenu(m[idxmen+3]); stnewmen[idxmen] = true; } 316 } 317 318 if (msg == 1333) { // Changement de sensibilite de Menu-Bar (par SetBusy()) 319 cout << " SetSens() Menubar, State= " << GetState() << endl; 320 if (GetState() != kReadyState) SetReady(); 321 else SetBlocked(); 322 } 323 324 if (msg == 1533) { // Changement de sensibilite de Cascade 325 cout << " ChangeSensitivity() Cascade Bool= " << m[1]->IsSensitive("Cascade") << endl; 326 if (m[1]->IsSensitive("Cascade") ) m[1]->SetSensitivity("Cascade", false); 327 else m[1]->SetSensitivity("Cascade", true); 328 } 329 330 if (msg == 1433) { // Changement de sensibilite de 331 332 } 278 333 // if (msg == 555) (this->menu)->Show(); 279 334 280 if (msg == 10105) scb->SetS ize(atoi(((char *)text->GetText().c_str())));335 if (msg == 10105) scb->SetSlSize(atoi(((char *)text->GetText().c_str()))); 281 336 if (msg == 10104) Stop(); 282 337 if (msg == 10101) { pfc->AcceptNewFile(false); pfc->Show(); } 283 338 if (msg == 10103) { pfc->AcceptNewFile(true); pfc->Show(); } 339 340 if ((msg == 10205) || (msg == 166)) { // CheckItem Menu or checkbox 341 cout << "PITestApp::Process CheckItem/Box Menu (" << msg 342 << ") State=" << *((bool *)data) << endl; 343 } 284 344 285 345 if (msg == 10301) … … 303 363 304 364 305 if ( (msg > 9000) && data) printf("PITestApp::MenubarReturn: %s \n", (char *)data);365 if (msg > 9000) printf("PITestApp::MenubarReturn: %d --> %lx \n", msg, (long)data); 306 366 if (msg == 5000) 307 367 { … … 318 378 pimg[nimg]->SetZoomWin(zoom); 319 379 pimg[nimg]->SetTextWin(labimg); 320 pimg[nimg]->SetImage( img[nimg]);380 pimg[nimg]->SetImage(new RzImageAdapter(img[nimg], true) ); 321 381 pimg[nimg]->Apply(); 322 382 imgw[nimg]->Show(); … … 327 387 328 388 if ((msg / 100) == 56) 329 printf("PITestApp::Process(%d) : %s \n", (int)msg, (char *)data); 389 printf("PITestApp::Process(%d) : %lx \n", (int)msg, (long)data); 390 391 if (msg == 8811) printf("PITestApp::Process(8811) ScrollBar( %d ) \n", *( (int*)data) ); 330 392 331 393 } … … 339 401 340 402 wp2 = new PIWindow(app, "Window-2", PIWK_normal, 400, 200, 250, 250); 341 ExBWdg bw(wp2, "BWdg", 150, 150, 10, 40);342 bw.SetBinding(PIBK_fixed,PIBK_elastic,PIBK_elastic,PIBK_fixed);343 ExBWdg bw2(wp2, "BWdg2", 180, 180, 200, 10);344 bw.SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic);403 exb1 = new ExBWdg(wp2, "BWdg", 150, 150, 10, 40); 404 exb1->SetBinding(PIBK_fixed,PIBK_elastic,PIBK_elastic,PIBK_fixed); 405 exb2 = new ExBWdg(wp2, "BWdg2", 180, 180, 200, 10); 406 exb2->SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic,PIBK_elastic); 345 407 346 408 wp4 = new PIWindow(app, "Window-4", PIWK_dialog, 200, 200, 350, 350); -
trunk/SophyaPI/PI/piwdggen.cc
r76 r106 77 77 // méthodes "Manage(), UnManage()". L'objet ne se trouve effectivement dans l'état 78 78 // actif que si son conteneur parent est lui même actif. 79 //-- 80 //++ 81 // void Manage() UnManage() 79 // L'objet peut aussi être affichés, mais insensible aux actions utilisateur 80 // (clavier, souris, ...). Cette sensibilité est controlée par les 81 // méthodes "SetSensitive(), SetUnSensitive()". 82 //-- 83 //++ 84 // void Manage() UnManage() 82 85 // Change l'état de l'objet (actif, inactif) 83 // bool IfManaged() IfVisible()86 // bool IfManaged() IfVisible() 84 87 // indique si l'objet est actif , visible 88 // void SetSensitive() SetUnSensitive() 89 // Rend l'objet sensible/ insensible aux actions utilisateurs (clavier, souris, ...) 90 // L'état visuel de l'objet peut être modifié en conséquence. 91 // bool IfSensitive() 92 // indique si l'objet est répond aux sollicitations utilisateur. 85 93 //-- 86 94 … … 90 98 91 99 //++ 92 //93 100 // void SetMsg(PIMessage msg = 0) 94 101 // Modifie la valeur du message associé à l'objet. … … 118 125 // une application destinatire. 119 126 //-- 127 120 128 //++ 121 129 // bool ClaimSelection(int typ=PICP_string) -
trunk/SophyaPI/PI/piwdggen.h
r88 r106 64 64 virtual void GetScreenPos(int & spx, int & spy); 65 65 66 // Pour activer, desactiver un composant graphique (PIWdg) 66 67 virtual void Manage()=0; 67 68 virtual void UnManage()=0; 68 69 virtual bool IfManaged()=0; 69 70 virtual bool IsVisible()=0; 71 72 // Pour rendre un composant graphique (PIWdg) sensible/insensible 73 // aux actions utilisateur (souris, clavier, ...) 74 virtual void SetSensitive()=0; 75 virtual void SetUnSensitive()=0; 76 virtual bool IfSensitive()=0; 70 77 71 78 virtual void PSPrint(PSFile *psf, int ofx=0, int ofy=0); -
trunk/SophyaPI/PI/piwdgx.cc
r90 r106 227 227 } 228 228 229 /* --Methode-- */ 230 void PIWdgX::SetSensitive() 231 { 232 XtSetSensitive(XtWdg(), TRUE); 233 } 234 235 /* --Methode-- */ 236 void PIWdgX::SetUnSensitive() 237 { 238 XtSetSensitive(XtWdg(), FALSE); 239 } 240 241 /* --Methode-- */ 242 bool PIWdgX::IfSensitive() 243 { 244 if (XtIsSensitive(XtWdg()) == TRUE) return(true); 245 else return(false); 246 } 229 247 230 248 /* --Methode-- */ -
trunk/SophyaPI/PI/piwdgx.h
r90 r106 55 55 virtual bool IsVisible(); 56 56 57 virtual void SetSensitive(); 58 virtual void SetUnSensitive(); 59 virtual bool IfSensitive(); 60 57 61 // Gestion de copier-coller 58 62 virtual bool ClaimSelection(unsigned int typ=PICP_string);
Note:
See TracChangeset
for help on using the changeset viewer.