// Module PI : Peida Interactive PIPixmap // Classe de base pour affichage de pixmap Reza 96 // LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA #include #include #include "pipixmapgen.h" // --------- Methodes de la classe PIPixMap ---------- //++ // Class PIPixmap // Lib PI // include pipixmapgen.h // // Classe pour la gestion optimisée des pixmap. // Un pixmap est un tableau d'index dans une table de couleurs. // Cette classe gére actuellement des pixmaps avec des index // codés sur 8 bits (256 couleurs). // Pour des raisons d'optimisation, cette classe a une // implémentation spécifique pour chaque plateforme. // La classe "PIPixmapGen" définit l'interface, et ne doit pas // être instanciée directement. Les objets instanciés sont de la // classes "PIPixmap" et le fichier entête correspondant est "PIPIXMAP_H" // défini dans "pisysdep.h". //-- //++ // Links Parents // PIBaseWdg //-- //++ // Links Voir aussi // PIColorMap //-- //++ // Titre Constructeur, Pixmap //-- //++ // PIPixmapGen(PIContainerGen *par, char *nom, int sx=10, int sy=10, int px=0, int py=0) // Constructeur - Création d'un "PIPIxmap". // long kind() // Retourne le type ("=PIPixmap::ClassId") // void SetPixmap(unsigned char *pix, int sx, int sy, bool refr=true, int ox=0, int oy=0) // Associe un tableau d'index "pix" de taille "sx * sy". // (ox,oy)" définissent l'offset d'affichage. // Si "refr=true", la méthode "Refresh()" est appelée. //-- //++ // Titre Gestion de la table de couleur //-- //++ // void SetColMap(PIColorMap* cmp, bool refr=true) // Change la table de couleur associée. // Si "refr=true", la méthode "Refresh()" est appelée. // void SetColMapId(CMapId cmapid, bool refr=true) // Change la table de couleur associée, à l'aide d'un identificateur // de table de couleur standard. ("CMapId cmapid"). // Si "refr=true", la méthode "Refresh()" est appelée. // PIColorMap* GetColMap() // Retourne la table de couleur associée. // CMapId GetColMapId() // Retourne l'identificateur de la table de couleur associée. // int NbCol() // Retourne le nombre de couleurs de la table de couleur associée. //-- //++ // Titre Actions //-- //++ // void But1Press(int x, int y) // L'action sur le bouton 1 déclenche l'envoi d'un message // avec le modifier PIMsg_Click. La position du bouton-press // est stocké. // int XPPos() // Position X du click // int YPPos() // Position Y du click //-- /* --Methode-- */ PIPixmapGen::PIPixmapGen(PIContainerGen *par, char *nom, int sx, int sy, int px, int py) : PIBaseWdg(par, nom, sx, sy, px, py) { pixmap = NULL; nx = ny = 0; ofx = ofy = 0; mPpos[0] = mPpos[0] = 0; cmap = new PIColorMap(CMAP_GREY32); ActivateButton(1); } /* --Methode-- */ PIPixmapGen::~PIPixmapGen() { delete cmap; } /* --Methode-- */ void PIPixmapGen::SetPixmap(unsigned char *pix, int sx, int sy, bool refr, int ox, int oy) { pixmap = pix; if (pixmap) { if (sx < 0) sx = 0; if (sy < 0) sy = 0; if (ox < 0) ox = 0; if (oy < 0) oy = 0; nx = sx; ny = sy; ofx = ox; ofy = oy; } else { ofx = ofy = nx = ny = 0; } if (refr) Refresh(); } /* --Methode-- */ void PIPixmapGen::SetColMap(PIColorMap* cmp, bool refr) { if (!cmp) return; if ( (cmp->Type() == cmap->Type()) && (cmp->Type() != CMAP_OTHER) ) return; if (cmap) delete cmap; cmap = new PIColorMap(*cmp); if (refr) Refresh(); } /* --Methode-- */ void PIPixmapGen::SetColMapId(CMapId cmapid, bool refr) { if (!cmap || (cmap->Type() != cmapid) || (cmapid == CMAP_OTHER) ) { if (cmap) delete cmap; cmap = new PIColorMap(cmapid); } if (refr) Refresh(); } /* --Methode-- */ void PIPixmapGen::But1Press(int x, int y) { mPpos[0] = x; mPpos[1] = y; if (Msg()) Send(Msg(), PIMsg_Click, mPpos); return; } // Fin des methodes de la classe