source: Sophya/trunk/Poubelle/DPC:FitsIOServer/PI/pipixmapgen.cc@ 658

Last change on this file since 658 was 658, checked in by ansari, 26 years ago

no message

File size: 3.7 KB
Line 
1// Module PI : Peida Interactive PIPixmap
2// Classe de base pour affichage de pixmap Reza 96
3// LAL (Orsay) / IN2P3-CNRS DAPNIA/SPP (Saclay) / CEA
4
5#include <stdlib.h>
6#include <stdio.h>
7
8#include "pipixmapgen.h"
9
10// --------- Methodes de la classe PIPixMap ----------
11//++
12// Class PIPixmap
13// Lib PI
14// include pipixmapgen.h
15//
16// Classe pour la gestion optimisée des pixmap.
17// Un pixmap est un tableau d'index dans une table de couleurs.
18// Cette classe gére actuellement des pixmaps avec des index
19// codés sur 8 bits (256 couleurs).
20// Pour des raisons d'optimisation, cette classe a une
21// implémentation spécifique pour chaque plateforme.
22// La classe "PIPixmapGen" définit l'interface, et ne doit pas
23// être instanciée directement. Les objets instanciés sont de la
24// classes "PIPixmap" et le fichier entête correspondant est "PIPIXMAP_H"
25// défini dans "pisysdep.h".
26//--
27//++
28// Links Parents
29// PIBaseWdg
30//--
31//++
32// Links Voir aussi
33// PIColorMap
34//--
35
36//++
37// Titre Constructeur, Pixmap
38//--
39//++
40// PIPixmapGen(PIContainerGen *par, char *nom, int sx=10, int sy=10, int px=0, int py=0)
41// Constructeur - Création d'un "PIPIxmap".
42// long kind()
43// Retourne le type ("=PIPixmap::ClassId")
44// void SetPixmap(unsigned char *pix, int sx, int sy, bool refr=true, int ox=0, int oy=0)
45// Associe un tableau d'index "pix" de taille "sx * sy".
46// (ox,oy)" définissent l'offset d'affichage.
47// Si "refr=true", la méthode "Refresh()" est appelée.
48//--
49//++
50// Titre Gestion de la table de couleur
51//--
52//++
53// void SetColMap(PIColorMap* cmp, bool refr=true)
54// Change la table de couleur associée.
55// Si "refr=true", la méthode "Refresh()" est appelée.
56// void SetColMapId(CMapId cmapid, bool refr=true)
57// Change la table de couleur associée, à l'aide d'un identificateur
58// de table de couleur standard. ("CMapId cmapid").
59// Si "refr=true", la méthode "Refresh()" est appelée.
60// PIColorMap* GetColMap()
61// Retourne la table de couleur associée.
62// CMapId GetColMapId()
63// Retourne l'identificateur de la table de couleur associée.
64// int NbCol()
65// Retourne le nombre de couleurs de la table de couleur associée.
66//--
67
68//++
69// Titre Actions
70//--
71//++
72// void But1Press(int x, int y)
73// L'action sur le bouton 1 déclenche l'envoi d'un message
74// avec le modifier PIMsg_Click. La position du bouton-press
75// est stocké.
76// int XPPos()
77// Position X du click
78// int YPPos()
79// Position Y du click
80//--
81
82/* --Methode-- */
83PIPixmapGen::PIPixmapGen(PIContainerGen *par, char *nom,
84 int sx, int sy, int px, int py) :
85PIBaseWdg(par, nom, sx, sy, px, py)
86{
87pixmap = NULL;
88nx = ny = 0;
89ofx = ofy = 0;
90mPpos[0] = mPpos[0] = 0;
91cmap = new PIColorMap(CMAP_GREY32);
92ActivateButton(1);
93}
94
95
96/* --Methode-- */
97PIPixmapGen::~PIPixmapGen()
98{
99delete cmap;
100}
101
102/* --Methode-- */
103void PIPixmapGen::SetPixmap(unsigned char *pix, int sx, int sy, bool refr, int ox, int oy)
104{
105pixmap = pix;
106if (pixmap)
107 {
108 if (sx < 0) sx = 0;
109 if (sy < 0) sy = 0;
110 if (ox < 0) ox = 0;
111 if (oy < 0) oy = 0;
112 nx = sx; ny = sy;
113 ofx = ox; ofy = oy;
114 }
115else { ofx = ofy = nx = ny = 0; }
116if (refr) Refresh();
117}
118
119/* --Methode-- */
120void PIPixmapGen::SetColMap(PIColorMap* cmp, bool refr)
121{
122if (!cmp) return;
123if ( (cmp->Type() == cmap->Type()) && (cmp->Type() != CMAP_OTHER) ) return;
124if (cmap) delete cmap;
125cmap = new PIColorMap(*cmp);
126if (refr) Refresh();
127}
128
129/* --Methode-- */
130void PIPixmapGen::SetColMapId(CMapId cmapid, bool refr)
131{
132if (!cmap || (cmap->Type() != cmapid) || (cmapid == CMAP_OTHER) ) {
133 if (cmap) delete cmap;
134 cmap = new PIColorMap(cmapid);
135 }
136if (refr) Refresh();
137}
138
139
140/* --Methode-- */
141void PIPixmapGen::But1Press(int x, int y)
142{
143mPpos[0] = x; mPpos[1] = y;
144if (Msg()) Send(Msg(), PIMsg_Click, mPpos);
145return;
146}
147
148
149
150// Fin des methodes de la classe
151
152
Note: See TracBrowser for help on using the repository browser.