Rafael Arce Nazario 8 years ago
commit
f237d561db
100 changed files with 6669 additions and 0 deletions
  1. 74
    0
      Filter.cpp
  2. BIN
      ImagesPeskyTourist/G0010108.png
  3. BIN
      ImagesPeskyTourist/G0010109.png
  4. BIN
      ImagesPeskyTourist/G0010110.png
  5. BIN
      ImagesPeskyTourist/G0010111.png
  6. BIN
      ImagesPeskyTourist/G0010132.png
  7. BIN
      ImagesPeskyTourist/G0010159.png
  8. BIN
      ImagesPeskyTourist/G0010161.png
  9. BIN
      ImagesPeskyTourist/G0010163.png
  10. BIN
      ImagesPeskyTourist/Thumbs.db
  11. 24
    0
      PeskyTourist.pro
  12. 287
    0
      README.md
  13. 78
    0
      dialog.cpp
  14. 34
    0
      dialog.h
  15. 63
    0
      dialog.ui
  16. 103
    0
      doc/en/html/annotated.html
  17. BIN
      doc/en/html/arrowdown.png
  18. BIN
      doc/en/html/arrowright.png
  19. BIN
      doc/en/html/bc_s.png
  20. BIN
      doc/en/html/bdwn.png
  21. 107
    0
      doc/en/html/class_dialog-members.html
  22. 142
    0
      doc/en/html/class_dialog.html
  23. BIN
      doc/en/html/class_dialog.png
  24. 114
    0
      doc/en/html/class_main_window-members.html
  25. 310
    0
      doc/en/html/class_main_window.html
  26. BIN
      doc/en/html/class_main_window.png
  27. 107
    0
      doc/en/html/classes.html
  28. BIN
      doc/en/html/closed.png
  29. 130
    0
      doc/en/html/dialog_8h_source.html
  30. BIN
      doc/en/html/doc.png
  31. 1449
    0
      doc/en/html/doxygen.css
  32. BIN
      doc/en/html/doxygen.png
  33. 97
    0
      doc/en/html/dynsections.js
  34. 100
    0
      doc/en/html/files.html
  35. BIN
      doc/en/html/folderclosed.png
  36. BIN
      doc/en/html/folderopen.png
  37. 131
    0
      doc/en/html/functions.html
  38. 131
    0
      doc/en/html/functions_func.html
  39. 105
    0
      doc/en/html/hierarchy.html
  40. 89
    0
      doc/en/html/index.html
  41. 68
    0
      doc/en/html/jquery.js
  42. 154
    0
      doc/en/html/mainwindow_8h_source.html
  43. BIN
      doc/en/html/nav_f.png
  44. BIN
      doc/en/html/nav_g.png
  45. BIN
      doc/en/html/nav_h.png
  46. BIN
      doc/en/html/open.png
  47. 26
    0
      doc/en/html/search/all_0.html
  48. 4
    0
      doc/en/html/search/all_0.js
  49. 26
    0
      doc/en/html/search/all_1.html
  50. 4
    0
      doc/en/html/search/all_1.js
  51. 26
    0
      doc/en/html/search/all_2.html
  52. 4
    0
      doc/en/html/search/all_2.js
  53. 26
    0
      doc/en/html/search/all_3.html
  54. 9
    0
      doc/en/html/search/all_3.js
  55. 26
    0
      doc/en/html/search/all_4.html
  56. 4
    0
      doc/en/html/search/all_4.js
  57. 26
    0
      doc/en/html/search/all_5.html
  58. 4
    0
      doc/en/html/search/all_5.js
  59. 26
    0
      doc/en/html/search/classes_0.html
  60. 4
    0
      doc/en/html/search/classes_0.js
  61. 26
    0
      doc/en/html/search/classes_1.html
  62. 4
    0
      doc/en/html/search/classes_1.js
  63. BIN
      doc/en/html/search/close.png
  64. 26
    0
      doc/en/html/search/functions_0.html
  65. 4
    0
      doc/en/html/search/functions_0.js
  66. 26
    0
      doc/en/html/search/functions_1.html
  67. 4
    0
      doc/en/html/search/functions_1.js
  68. 26
    0
      doc/en/html/search/functions_2.html
  69. 9
    0
      doc/en/html/search/functions_2.js
  70. 26
    0
      doc/en/html/search/functions_3.html
  71. 4
    0
      doc/en/html/search/functions_3.js
  72. 26
    0
      doc/en/html/search/functions_4.html
  73. 4
    0
      doc/en/html/search/functions_4.js
  74. BIN
      doc/en/html/search/mag_sel.png
  75. 12
    0
      doc/en/html/search/nomatches.html
  76. 271
    0
      doc/en/html/search/search.css
  77. 791
    0
      doc/en/html/search/search.js
  78. BIN
      doc/en/html/search/search_l.png
  79. BIN
      doc/en/html/search/search_m.png
  80. BIN
      doc/en/html/search/search_r.png
  81. 21
    0
      doc/en/html/search/searchdata.js
  82. BIN
      doc/en/html/splitbar.png
  83. BIN
      doc/en/html/sync_off.png
  84. BIN
      doc/en/html/sync_on.png
  85. BIN
      doc/en/html/tab_a.png
  86. BIN
      doc/en/html/tab_b.png
  87. BIN
      doc/en/html/tab_h.png
  88. BIN
      doc/en/html/tab_s.png
  89. 60
    0
      doc/en/html/tabs.css
  90. 21
    0
      doc/en/latex/Makefile
  91. 5
    0
      doc/en/latex/annotated.tex
  92. 197
    0
      doc/en/latex/class_dialog.eps
  93. 126
    0
      doc/en/latex/class_dialog.pdf
  94. 41
    0
      doc/en/latex/class_dialog.tex
  95. 197
    0
      doc/en/latex/class_main_window.eps
  96. BIN
      doc/en/latex/class_main_window.pdf
  97. 141
    0
      doc/en/latex/class_main_window.tex
  98. 480
    0
      doc/en/latex/doxygen.sty
  99. 9
    0
      doc/en/latex/hierarchy.tex
  100. 0
    0
      doc/en/latex/refman.tex

+ 74
- 0
Filter.cpp View File

@@ -0,0 +1,74 @@
1
+#include "mainwindow.h"
2
+#include <iostream>
3
+#include <cassert>
4
+using namespace std;
5
+
6
+void messageBox(const QString &st) {
7
+    QMessageBox* msgBox     = new QMessageBox();
8
+    msgBox->setWindowTitle("Pesky Tourist");
9
+    msgBox->setText(st);
10
+    msgBox->setWindowFlags(Qt::WindowStaysOnTopHint);
11
+    msgBox->show();
12
+}
13
+
14
+// Given a vector of ints, sorts it in ascending order
15
+void Sort(vector<int> &V){
16
+    // Implement your selection sort algorithm here
17
+
18
+}
19
+
20
+// Given a (possibly unsorted) vector of ints, returns its median
21
+int Median(vector<int> &V){
22
+
23
+    // Implement your median function ...
24
+
25
+    return 0;
26
+}
27
+
28
+// Given a (possibly unsorted) vector of QRgbs, returns the median
29
+// composed of the medians of the color components.
30
+QRgb MedianPixel(const vector<QRgb> &V){
31
+
32
+    // Implement you pixel median function here....
33
+    return qRgb(0,0,0);
34
+}
35
+
36
+
37
+
38
+void test_Sort() {
39
+    
40
+    // Implement your unit test for sort here .....
41
+
42
+    // You may change this to a congratulatory message once you
43
+    // implement this unit test :-)
44
+    messageBox("Sort unit test not yet implemented!!");
45
+
46
+}
47
+
48
+void test_Median() {
49
+
50
+    // Implement your unit test for median here .....
51
+
52
+    messageBox("Median unit test not yet implemented!!");
53
+}
54
+
55
+void test_MedianPixel() {
56
+
57
+    // Implement your unit test for median pixel here .....
58
+
59
+    messageBox("MedianPixel unit test not yet implemented!!");
60
+}
61
+
62
+
63
+
64
+
65
+void MainWindow::RemoveNoise(const vector<QImage> & images, QImage & finalImage){
66
+
67
+    test_Sort();
68
+    test_Median();
69
+    test_MedianPixel();
70
+
71
+    // Implement the filter here! See the algorithm in the lab
72
+    messageBox("RemoveNoise function not yet implemented!!!");
73
+
74
+}

BIN
ImagesPeskyTourist/G0010108.png View File


BIN
ImagesPeskyTourist/G0010109.png View File


BIN
ImagesPeskyTourist/G0010110.png View File


BIN
ImagesPeskyTourist/G0010111.png View File


BIN
ImagesPeskyTourist/G0010132.png View File


BIN
ImagesPeskyTourist/G0010159.png View File


BIN
ImagesPeskyTourist/G0010161.png View File


BIN
ImagesPeskyTourist/G0010163.png View File


BIN
ImagesPeskyTourist/Thumbs.db View File


+ 24
- 0
PeskyTourist.pro View File

@@ -0,0 +1,24 @@
1
+#-------------------------------------------------
2
+#
3
+# Project created by QtCreator 2014-03-23T19:32:03
4
+#
5
+#-------------------------------------------------
6
+
7
+QT       += core gui
8
+
9
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
10
+
11
+TARGET = PeskyTourist
12
+TEMPLATE = app
13
+
14
+
15
+SOURCES += main.cpp\
16
+        mainwindow.cpp \
17
+    Filter.cpp
18
+
19
+HEADERS  += mainwindow.h
20
+
21
+FORMS    += mainwindow.ui
22
+
23
+RESOURCES += \
24
+    images.qrc

+ 287
- 0
README.md View File

@@ -0,0 +1,287 @@
1
+# Algoritmos de búsqueda - El turista impertinente
2
+
3
+![main1.png](images/main1.png)
4
+![main2.png](images/main2-small.png)
5
+![main3.png](images/main3-small.png)
6
+
7
+
8
+Dos tareas comunes cuando se trabaja con arreglos de datos son buscar datos y ordenarlos de forma  ascendente o descendente. Dos algoritmos de ordenamiento sencillos y bien conocidos son el ordenamiento de selección (Selection sort) y el ordenamiento por burbujas (Bubble sort). Los algoritmos de ordenamiento forman parte de muchos programados; por ejemplo, listas de contactos, hojas de cálculo y motores de búsqueda. En esta experiencia de laboratorio completarás una aplicación para procesar imágenes y practicarás el uso de algoritmos de ordenamiento. También aprenderás sobre la biblioteca `QImage` de `Qt` y sobre  el filtro de mediana utilizado en el procesamiento de imágenes para remover "ruido", en este caso un turista impertinente.
9
+
10
+
11
+
12
+## Objetivos:
13
+
14
+1. Practicar el ordenamiento de arreglos por selección y por método de "burbuja".
15
+
16
+2. Practicar el uso de estructuras de decisión y repetición.
17
+
18
+3. Utilizar métodos de la clase `vector` de C++.
19
+
20
+4. Utilizar los métodos de la clase  `QImage` de `Qt` para manipular los pixeles de una imagen.
21
+
22
+5. Aprender sobre el filtro de mediana para el procesamiento de imágenes.
23
+
24
+
25
+Esta experiencia de laboratorio es una adaptación del "nifty assignment" presentado por  John Nicholson en [1].
26
+
27
+## Pre-Lab:
28
+
29
+Antes de llegar al laboratorio debes:
30
+
31
+
32
+1. Repasar los algoritmos de ordenamiento por selección y de burbuja.
33
+
34
+2. Familiarizarte con los métodos `push_back()`, `at(i)`,  `size()`, `clear()` de la clase `vector` de C++.
35
+
36
+3. Familiarizarte con los métodos `width()`, `height()`, `pixel(i, j)`, `setPixel(i,j, pixel)`  de la clase `QImage` de `Qt`.
37
+
38
+4. Estudiar los conceptos e instrucciones para la sesión de laboratorio.
39
+
40
+5. Tomar el quiz Pre-Lab que se encuentra en Moodle.
41
+
42
+---
43
+
44
+---
45
+
46
+## Píxeles
47
+
48
+Al elemento más pequeño de una imagen se le llama un *píxel*. Esta unidad consiste de un solo color. Como cada color es una combinación de tonalidades de los colores primarios rojo, verde y azul,   se codifica como un entero sin signo cuyos bytes  representan los tonos de rojo, verde y azul del pixel (Figura 2). Un cuarto byte especifica lo que se conoce como la *composición alpha*,  la cual define la opacidad del pixel (0xff es totalmente opaco y 0x00 es totalmente transparente, i.e. invisible). A esta combinación se le llama el *ARGB* del color por las siglas de "Alpha-Red-Green-Blue". Por ejemplo un píxel de color rojo (puro) tiene una representación RGB `0xffff0000`, mientras que un píxel de color blanco tiene una representación RGB de `0xffffffff` (ya que el color blanco es la combinación de los tonos rojo, verde y azul en toda su intensidad). A través de este lab asumiremos que el alfa de los píxeles tiene opacidad total (0xff).
49
+
50
+---
51
+
52
+![figure2.png](images/figure2.png)
53
+
54
+**Figura 1.** Distribución de bits para la composición alpha y las tonalidades de rojo, verde y azul dentro de la representación ARGB.  Cada tonalidad puede tener valores entre 0x00 (los ocho bits en 0) y 0xFF (los 8 bits en 1).
55
+
56
+---
57
+
58
+En `Qt` se utiliza el tipo `QRgb` para representar valores **ARGB**.  Utilizando ciertas funciones que describimos abajo podemos obtener los componentes rojo, verde y azul del valor `QRgb` del píxel y así manipular imágenes. En este lab no vamos a manipular el canal alfa de los píxeles.
59
+
60
+La experiencia de laboratorio de hoy utilizará la clase `QImage`. Esta clase permite acceder a los datos de los píxeles de una imagen para poder manipularla. La documentación de la clase `QImage` se encuentra en http://doc.qt.io/qt-4.8/qimage.html.
61
+
62
+---
63
+
64
+---
65
+
66
+## Procesamiento de imágenes
67
+
68
+
69
+El procesamiento de imágenes es usado en una amplia variedad de aplicaciones que son relevantes socialmente.  En las redes sociales, prácticamente cada vez que subes una imagen hay un filtro de procesamiento de imágenes tomando efecto. Entre las muchas aplicaciones a la salud que tiene el procesamiento de imágenes se encuentran el contar organismos dentro de un espacio explorado para detectar anomalías en las exploraciones de tomografía computarizada ("CT scans") y el mejorar la calidad de las imágenes para poder obtener mejor información de ellas.
70
+
71
+El filtro de mediana es uno de los filtros más simples utilizados en el procesamiento de imágenes. Este filtro es muy útil para remover objetos no deseados de las imágenes. Digamos que encuentras el árbol más interesante del mundo y quieres fotografiarlo. Colocas tu equipo fotográfico, la luz es perfecta, los colores son hermosos. Para estar segura de obtener la foto perfecta tomas tres de ellas. Sin embargo, en el momento preciso en que se tomaron las fotos, un turista impertinente se metió en el medio de tu creación. El filtro de mediana te ayudará a remover el turista de la foto fusionando las tres fotos en una en la que no aparecerá el turista.
72
+
73
+Dadas 3 o más imágenes del mismo espacio, el filtro de mediana trabaja como sigue: para el píxel en cada posición $$(x,y)$$ encuentra el color correspondiente a la mediana de los colores de las tres imágenes, luego usa el color correspondiente a la mediana en la imagen  fusionada.
74
+
75
+---
76
+
77
+![main2.png](images/main2.png)
78
+
79
+
80
+**Figura 2.** Ilustración del algoritmo del filtro de mediana en un píxel dado. Se determinan los colores de los píxeles correspondientes en las tres imágenes, luego se calcula la mediana. La mediana del píxel se usa en la posición correspondiente en la imagen fusionada.
81
+
82
+---
83
+
84
+### Mediana
85
+
86
+La *mediana* de una lista  de números es el valor que separa la mitad de los números con valor mayor de la mitad de los números con valor menor. Para calcularla se ordena la lista (digamos) en orden ascendente. Si la cantidad de números en la lista es impar, se escoge el valor del medio. Si la cantidad de números en la lista es par, se toma el promedio de los dos valores en el medio.
87
+
88
+Por ejemplo, la mediana de {3,5,2,7,11} es 5 pues el arreglo ordenado es {2, 3, 5, 7, 11}.   La mediana de {3,9,3,2,10,11} es 6 pues el arreglo ordenado es {2, 3, 3, 9, 10, 11} y el promedio de 3 y 9 es 6.
89
+
90
+### Mediana de pixeles
91
+
92
+El método que usaremos en este lab para hallar la mediana de varios píxeles será el siguiente: hallaremos la mediana de sus componentes rojos, verdes, azules y luego compondremos un nuevo pixel usando esas medianas. El siguiente ejemplo ilustra el procedimiento.
93
+
94
+Ejemplo: Suponga que debemos hallar la mediana de los tres pixeles con valores `0xff223344`, `0xff112233`, `0xff001155`.
95
+* La mediana del componente rojo es 0x11 (dado que los componentes rojos son `0x22`, `0x11` y `0x00`.
96
+* La mediana del componente verde es 0x22 (dado que los componentes verdes son `0x33`, `0x22` y `0x11`.
97
+*  La mediana del componente azul es 0x44 (dado que los componentes azules son `0x44`, `0x33` y `0x55`.
98
+Por lo tanto, la mediana de los píxeles sera `0xff112244`, compuesto por las medianas de los componentes de colores rojo, verde y azul.
99
+
100
+Note que el resultado puede ser un píxel con un color que no existía entre los originales. Sin embargo, ese detalle no afecta mucho la aplicación que estamos realizando en este lab.
101
+
102
+
103
+
104
+
105
+---
106
+
107
+---
108
+
109
+
110
+
111
+
112
+## Bibliotecas
113
+
114
+Para esta experiencia de laboratorio necesitarás saber cómo utilizar los siguientes métodos de la clase `vector` de `C++`:
115
+
116
+
117
+* `push_back()` // insertar un elemento al final de un vector
118
+* `at(i)`       // obtener el elemento en la posición `i`
119
+* `size()`      // obtener el número de elementos en el vector
120
+* `clear()`     // vaciar el vector / remover los elementos.
121
+
122
+
123
+Las siguientes funciones son útiles para trabajar con datos de tipo `QRgb`:
124
+
125
+* `qRed(pixel)`   // devuelve el tono del color rojo del píxel
126
+* `qGreen(pixel)` // devuelve el tono del color verde del píxel
127
+* `qBlue(pixel)`  // devuelve el tono del color azul del píxel
128
+
129
+
130
+Los objetos de clase `QImage` tienen los siguiente métodos que serán útiles para manipular los píxeles de las imágenes:
131
+
132
+
133
+* `width()`      // devuelve el valor entero del ancho de la imagen
134
+* `height()`      // devuelve el valor entero de la altura de la imagen
135
+* `pixel(i, j)`       // devuelve el `QRgb` del píxel en la posición `(i,j)`
136
+* `setPixel(i,j, pixel)`   // modifica el valor del píxel en la posición `(i, j)` al valor píxel `QRgb`.
137
+
138
+* `qRgb(int red, int green, int blue)` // devuelve un píxel `QRgb` compuesto de los valores de rojo, verde y azul recibidos.
139
+
140
+
141
+### Ejemplos:
142
+
143
+1. `QRgb myRgb = qRgb(0xff, 0x00, 0xff);`: Asigna a `myRgb` el valor `0xff00ff` que representa el color ![figure3.png](images/figure3.png)
144
+
145
+    Nota que el valor `0xff00ff` representa los valores `0xff`, `0x0`, `0xff`, que corresponden a los componentes rojo, verde y azul de `myRgb`.
146
+
147
+2. Si la siguiente imagen `4 x 4` de píxeles representa el objeto `originalImage`,
148
+
149
+    ![main1.png](images/main1.png)
150
+
151
+  entonces `originalImage.pixel(2,1)` devuelve un valor `rgb` que representa el color azul (`0x0000ff`).
152
+
153
+3. La siguiente instrucción asigna el color rojo al píxel en posición `(2,3)` en la imagen editada:
154
+
155
+  `editedImage.setPixel(2,3,qRgb(0xff,0x00,0x00));`.
156
+
157
+
158
+4. La siguiente instrucción le asigna a `greenContent` el valor del tono de verde que contiene el pixel `(1,1)` de  `originalImage`:
159
+
160
+  `int greenContent = qGreen(originalImage.pixel(1,1));`.
161
+
162
+
163
+5. El siguiente código le asigna al componente rojo del píxel `(1,1)` de  `editedImage` el promedio de los valores del tono de rojo que contiene el píxel `(1,1)` de  `originalImage1` y  `originalImage2` y lo mismo hace con los componentes verde y de azul.
164
+
165
+---
166
+
167
+```cpp
168
+#include <QImage>
169
+
170
+using namespace std;
171
+int main() {
172
+    int redEdit;
173
+    int greenEdit;
174
+    int blueEdit;
175
+    QImage editedImage;
176
+
177
+   redEdit=(qRed(originalImage1.pixel(1,1)) + qRed(originalImage2.pixel(1,1)))/2;
178
+   greenEdit=(qGreen(originalImage1.pixel(1,1)) + qGreen(originalImage2.pixel(1,1)))/2;
179
+   blueEdit=(qBlue(originalImage1.pixel(1,1)) + qBlue(originalImage2.pixel(1,1)))/2;
180
+
181
+   editedImage.setPixel(1,1,qRgb(redEdit,greenEdit,blueEdit));
182
+
183
+   return 0;
184
+}
185
+```
186
+
187
+---
188
+
189
+---
190
+
191
+## Sesión de laboratorio:
192
+
193
+
194
+
195
+El proyecto `PeskyTourist` contiene el esqueleto de una aplicación para remover el "ruido" de una imagen. En la experiencia de laboratorio de hoy completarás la aplicación para procesar imágenes utilizando el filtro de mediana para remover el ruido de una imagen, en este caso un turista impertinente. Estarás trabajando en el archivo `Filter.cpp`.
196
+
197
+#### Algoritmo general para remover ruido de una imagen
198
+
199
+```
200
+
201
+Input: VI, un vector con N imágenes
202
+Output: una imagen sin ruido
203
+---------------------------------------
204
+1. Para cada posición x,y:
205
+
206
+2.     P es un vector de tamaño N
207
+
208
+3.     Asignar a los elementos de P los valores
209
+       de los pixeles en la posicion x,y de las N imágenes de VI
210
+
211
+4.     M = mediana de los pixeles de P
212
+
213
+5.     Asignar el valor de M al pixel x,y de la imagen sin ruido
214
+```
215
+
216
+### Ejercicio 1: Implementar una función para ordenar un vector de enteros
217
+
218
+Para hallar la mediana de los componentes de colores de los pixeles, debemos contar con una función de ordenamiento. En esta parte implementarás selecton sort.
219
+
220
+#### Instrucciones
221
+
222
+
223
+1. Carga a QtCreator el proyecto `PeskyTourist`  haciendo doble "click" en el archivo `PeskyTourist.pro` en el directorio `Documents/eip/Sort-PeskyTourist` de tu computadora. También puedes ir a `http://bitbucket.org/eip-uprrp/sort-peskytourist` para descargar la carpeta `Sort-PeskyTourist` a tu computadora.
224
+
225
+2.  El código que te proveemos crea la interfaz de la Figura 3.
226
+
227
+    ---
228
+
229
+    ![figure3.png](images/figure3.png)
230
+
231
+    **Figura 3.** Interfaz del editor de imágenes.
232
+
233
+3. Marca el botón  `Load Images` y busca el directorio `ImagesPeskyTourist` que contiene las imágenes con el turista impertinente.
234
+
235
+4. Tu primera tarea es completar la función `Sort` que recibe un vector de enteros. La función debe ordenar los enteros del vector en orden ascendente utilizando el método de burbuja o de selección.
236
+
237
+5. Crea una prueba unitaria para validar la función `Sort` e invócala desde la función `RemoveNoise`.
238
+
239
+
240
+### Ejercicio 2: Calcular la mediana de un vector de enteros
241
+
242
+#### Instrucciones
243
+
244
+Completa la función `Median` que recibe un vector de enteros. La función `Median` debe invocar la función `Sort` para ordenar los enteros y calcular la mediana. La función devuelve la mediana calculada.
245
+
246
+Crea una prueba unitaria para validar la función `Median` e invócala desde la función `RemoveNoise`.
247
+
248
+
249
+### Ejercicio 3: Calcular la mediana de cada píxel
250
+
251
+Completa la función `MedianPixel` que recibe un vector de píxeles (de tipo `QRgb`) y devuelve el píxel `QRgb` correspondiente a la mediana de los píxeles. La mediana de los píxeles se compone de las medianas de cada componente de color en los píxeles.
252
+
253
+En el código proveemos una función que puedes usar para validar la función `MedianPixel`.
254
+
255
+#### Algoritmo:
256
+
257
+Para computar la mediana del píxel, para cada uno de los componentes de color (rojo, verde y azul), extrae el componente en un vector e invoca la función `Median` para calcular la mediana sobre ese vector. Por ejemplo, si recibimos un vector con los píxeles 0xff112233, 0x113344, y 0x224455, una de las primeras tareas del algoritmo sería extraer los componentes rojos y crear un vector con ellos: 0x11, 0x11 y 0x22. Luego se enviaría ese vector a la función Median para obtener la mediana (y obtendremos 0x11 como resultado). Esto se realizaría también para los componentes verde y azul.
258
+
259
+
260
+### Ejercicio 4: Remover ruido
261
+
262
+Tu última tarea es completar la función `RemoveNoise` que recibe un vector de imágenes con ruido y la referencia a la imagen editada que tendrá el ruido removido
263
+
264
+#### Algoritmo:
265
+
266
+Para cada posición $$(x,y)$$, forma un vector de píxeles que contendrá los valores de los píxeles en la posición $$(x,y)$$ de cada una de las imágenes con ruido. Invoca la función `MedianPixel` y asigna el valor de la mediana los píxeles en la posición $$(x,y)$$ de la imagen editada.
267
+
268
+
269
+Cuando completes la función el botón `Remove Noise` ejecutará tus algoritmos y desplegará la imagen final.
270
+
271
+---
272
+
273
+---
274
+
275
+##Entrega
276
+
277
+Utiliza "Entrega" en Moodle para entregar el archivo `Filter.cpp` que contiene las funciones  que implementaste en esta experiencia de laboratorio. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
278
+
279
+---
280
+
281
+---
282
+
283
+
284
+
285
+##Referencias
286
+
287
+[1] John Nicholson, http://nifty.stanford.edu/2014/nicholson-the-pesky-tourist/

+ 78
- 0
dialog.cpp View File

@@ -0,0 +1,78 @@
1
+#include "dialog.h"
2
+#include "ui_dialog.h"
3
+
4
+#include <QMessageBox>
5
+#include <QFileDialog>
6
+
7
+Dialog::Dialog(QWidget *parent) :
8
+    QDialog(parent),
9
+    ui(new Ui::Dialog)
10
+{
11
+    ui->setupUi(this);
12
+
13
+
14
+
15
+
16
+    QDir myPath(QDir::homePath());
17
+    myPath.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
18
+    myList = myPath.entryList();
19
+    ui->listWidget->addItems(myList);
20
+    ui->total_amount->setText(QString("%1").arg(ui->listWidget->count()));
21
+}
22
+
23
+Dialog::~Dialog()
24
+{
25
+    delete ui;
26
+}
27
+
28
+// Filter for folders
29
+void Dialog::on_filter_textChanged(const QString &arg1)
30
+{
31
+    QRegExp regExp(arg1, Qt::CaseInsensitive, QRegExp::Wildcard);
32
+    ui->listWidget->clear();
33
+    ui->listWidget->addItems(myList.filter(regExp));
34
+    ui->total_amount->setText(QString("%1").arg(ui->listWidget->count()));
35
+}
36
+
37
+// Open folder
38
+void Dialog::on_pushButton_clicked()
39
+{
40
+   // QFileDialog::
41
+
42
+    QMessageBox mbox;
43
+    mbox.setWindowTitle("How to use the Simple Image Editor");
44
+    QString test = ui->listWidget->currentItem()->text();
45
+    if (ui->listWidget->currentItem() != NULL)
46
+        mbox.setText(ui->listWidget->currentItem()->text());
47
+    mbox.exec();
48
+}
49
+
50
+//this function is in charge of loading the
51
+//parts of a creature in the given directory
52
+void Dialog::loadItems(QString path, int N)
53
+{
54
+    QDir dir(path); //create a QDir with the given path
55
+
56
+    dir.setFilter(QDir::Files);  //Set a filter so only files are looked for
57
+    dir.setSorting(QDir::Name);  //Set sorting by name
58
+
59
+    QFileInfoList list = dir.entryInfoList(); //get the list of files in the directory
60
+
61
+    QFileInfo fileInfo;  //holds the info of the next file to be checked
62
+
63
+    QString filePath; //string to store the path of the current file being checked
64
+    QString fileName; //string to store the name of the current file being checked
65
+
66
+    for(int i = 0; i < list.size(); i++)
67
+    {
68
+        fileInfo = list.at(i);  //get the file info at possition i
69
+        filePath = fileInfo.filePath(); //get the file path
70
+        fileName = fileInfo.fileName(); //get the file name
71
+
72
+        //QImage image(filePath); //load the file as an image
73
+
74
+        //if the file cant be loaded continue
75
+        //if(image.isNull()) continue;
76
+
77
+    }
78
+}

+ 34
- 0
dialog.h View File

@@ -0,0 +1,34 @@
1
+#ifndef DIALOG_H
2
+#define DIALOG_H
3
+
4
+#include <QDialog>
5
+#include <QDir>
6
+#include <QDebug> // Para que?
7
+#include <QRegExp>
8
+
9
+namespace Ui {
10
+class Dialog;
11
+}
12
+
13
+class Dialog : public QDialog
14
+{
15
+    Q_OBJECT
16
+
17
+public:
18
+    explicit Dialog(QWidget *parent = 0);
19
+    ~Dialog();
20
+
21
+private slots:
22
+    void on_filter_textChanged(const QString &arg1);
23
+
24
+    void on_pushButton_clicked();
25
+
26
+    void loadItems(QString path, int N);
27
+
28
+private:
29
+    Ui::Dialog *ui;
30
+
31
+    QStringList myList;
32
+};
33
+
34
+#endif // DIALOG_H

+ 63
- 0
dialog.ui View File

@@ -0,0 +1,63 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<ui version="4.0">
3
+ <class>Dialog</class>
4
+ <widget class="QDialog" name="Dialog">
5
+  <property name="geometry">
6
+   <rect>
7
+    <x>0</x>
8
+    <y>0</y>
9
+    <width>375</width>
10
+    <height>470</height>
11
+   </rect>
12
+  </property>
13
+  <property name="windowTitle">
14
+   <string>Dialog</string>
15
+  </property>
16
+  <layout class="QVBoxLayout" name="verticalLayout">
17
+   <item>
18
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
19
+     <item>
20
+      <widget class="QLabel" name="filter_label">
21
+       <property name="text">
22
+        <string>Filter:</string>
23
+       </property>
24
+      </widget>
25
+     </item>
26
+     <item>
27
+      <widget class="QLineEdit" name="filter"/>
28
+     </item>
29
+    </layout>
30
+   </item>
31
+   <item>
32
+    <widget class="QListWidget" name="listWidget"/>
33
+   </item>
34
+   <item>
35
+    <widget class="QPushButton" name="pushButton">
36
+     <property name="text">
37
+      <string>Open Directory</string>
38
+     </property>
39
+    </widget>
40
+   </item>
41
+   <item>
42
+    <layout class="QHBoxLayout" name="horizontalLayout">
43
+     <item>
44
+      <widget class="QLabel" name="total_label">
45
+       <property name="text">
46
+        <string>Total:</string>
47
+       </property>
48
+      </widget>
49
+     </item>
50
+     <item>
51
+      <widget class="QLabel" name="total_amount">
52
+       <property name="text">
53
+        <string>0</string>
54
+       </property>
55
+      </widget>
56
+     </item>
57
+    </layout>
58
+   </item>
59
+  </layout>
60
+ </widget>
61
+ <resources/>
62
+ <connections/>
63
+</ui>

+ 103
- 0
doc/en/html/annotated.html View File

@@ -0,0 +1,103 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: Class List</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
64
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
65
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
66
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
67
+    </ul>
68
+  </div>
69
+</div><!-- top -->
70
+<!-- window showing the filter options -->
71
+<div id="MSearchSelectWindow"
72
+     onmouseover="return searchBox.OnSearchSelectShow()"
73
+     onmouseout="return searchBox.OnSearchSelectHide()"
74
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
75
+</div>
76
+
77
+<!-- iframe showing the search results (closed by default) -->
78
+<div id="MSearchResultsWindow">
79
+<iframe src="javascript:void(0)" frameborder="0" 
80
+        name="MSearchResults" id="MSearchResults">
81
+</iframe>
82
+</div>
83
+
84
+<div class="header">
85
+  <div class="headertitle">
86
+<div class="title">Class List</div>  </div>
87
+</div><!--header-->
88
+<div class="contents">
89
+<div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
90
+<table class="directory">
91
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_dialog.html" target="_self">Dialog</a></td><td class="desc"></td></tr>
92
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_main_window.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
93
+</table>
94
+</div><!-- directory -->
95
+</div><!-- contents -->
96
+<!-- start footer part -->
97
+<hr class="footer"/><address class="footer"><small>
98
+Generated on Mon Jun 15 2015 15:14:03 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
99
+<img class="footer" src="doxygen.png" alt="doxygen"/>
100
+</a> 1.8.9.1
101
+</small></address>
102
+</body>
103
+</html>

BIN
doc/en/html/arrowdown.png View File


BIN
doc/en/html/arrowright.png View File


BIN
doc/en/html/bc_s.png View File


BIN
doc/en/html/bdwn.png View File


+ 107
- 0
doc/en/html/class_dialog-members.html View File

@@ -0,0 +1,107 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: Member List</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
64
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
65
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
66
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
67
+    </ul>
68
+  </div>
69
+<!-- window showing the filter options -->
70
+<div id="MSearchSelectWindow"
71
+     onmouseover="return searchBox.OnSearchSelectShow()"
72
+     onmouseout="return searchBox.OnSearchSelectHide()"
73
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+</div>
75
+
76
+<!-- iframe showing the search results (closed by default) -->
77
+<div id="MSearchResultsWindow">
78
+<iframe src="javascript:void(0)" frameborder="0" 
79
+        name="MSearchResults" id="MSearchResults">
80
+</iframe>
81
+</div>
82
+
83
+</div><!-- top -->
84
+<div class="header">
85
+  <div class="headertitle">
86
+<div class="title">Dialog Member List</div>  </div>
87
+</div><!--header-->
88
+<div class="contents">
89
+
90
+<p>This is the complete list of members for <a class="el" href="class_dialog.html">Dialog</a>, including all inherited members.</p>
91
+<table class="directory">
92
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Dialog</b>(QWidget *parent=0) (defined in <a class="el" href="class_dialog.html">Dialog</a>)</td><td class="entry"><a class="el" href="class_dialog.html">Dialog</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
93
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>loadItems</b>(QString path, int N) (defined in <a class="el" href="class_dialog.html">Dialog</a>)</td><td class="entry"><a class="el" href="class_dialog.html">Dialog</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
94
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>myList</b> (defined in <a class="el" href="class_dialog.html">Dialog</a>)</td><td class="entry"><a class="el" href="class_dialog.html">Dialog</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
95
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_filter_textChanged</b>(const QString &amp;arg1) (defined in <a class="el" href="class_dialog.html">Dialog</a>)</td><td class="entry"><a class="el" href="class_dialog.html">Dialog</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
96
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>on_pushButton_clicked</b>() (defined in <a class="el" href="class_dialog.html">Dialog</a>)</td><td class="entry"><a class="el" href="class_dialog.html">Dialog</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
97
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>ui</b> (defined in <a class="el" href="class_dialog.html">Dialog</a>)</td><td class="entry"><a class="el" href="class_dialog.html">Dialog</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
98
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Dialog</b>() (defined in <a class="el" href="class_dialog.html">Dialog</a>)</td><td class="entry"><a class="el" href="class_dialog.html">Dialog</a></td><td class="entry"></td></tr>
99
+</table></div><!-- contents -->
100
+<!-- start footer part -->
101
+<hr class="footer"/><address class="footer"><small>
102
+Generated on Mon Jun 15 2015 15:14:02 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
103
+<img class="footer" src="doxygen.png" alt="doxygen"/>
104
+</a> 1.8.9.1
105
+</small></address>
106
+</body>
107
+</html>

+ 142
- 0
doc/en/html/class_dialog.html View File

@@ -0,0 +1,142 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: Dialog Class Reference</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
64
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
65
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
66
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
67
+    </ul>
68
+  </div>
69
+<!-- window showing the filter options -->
70
+<div id="MSearchSelectWindow"
71
+     onmouseover="return searchBox.OnSearchSelectShow()"
72
+     onmouseout="return searchBox.OnSearchSelectHide()"
73
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+</div>
75
+
76
+<!-- iframe showing the search results (closed by default) -->
77
+<div id="MSearchResultsWindow">
78
+<iframe src="javascript:void(0)" frameborder="0" 
79
+        name="MSearchResults" id="MSearchResults">
80
+</iframe>
81
+</div>
82
+
83
+</div><!-- top -->
84
+<div class="header">
85
+  <div class="summary">
86
+<a href="#pub-methods">Public Member Functions</a> &#124;
87
+<a href="#pri-slots">Private Slots</a> &#124;
88
+<a href="#pri-attribs">Private Attributes</a> &#124;
89
+<a href="class_dialog-members.html">List of all members</a>  </div>
90
+  <div class="headertitle">
91
+<div class="title">Dialog Class Reference</div>  </div>
92
+</div><!--header-->
93
+<div class="contents">
94
+<div class="dynheader">
95
+Inheritance diagram for Dialog:</div>
96
+<div class="dyncontent">
97
+ <div class="center">
98
+  <img src="class_dialog.png" usemap="#Dialog_map" alt=""/>
99
+  <map id="Dialog_map" name="Dialog_map">
100
+</map>
101
+ </div></div>
102
+<table class="memberdecls">
103
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
104
+Public Member Functions</h2></td></tr>
105
+<tr class="memitem:acfa2063f9f962d394c6a645b6e7e08d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfa2063f9f962d394c6a645b6e7e08d8"></a>
106
+&#160;</td><td class="memItemRight" valign="bottom"><b>Dialog</b> (QWidget *parent=0)</td></tr>
107
+<tr class="separator:acfa2063f9f962d394c6a645b6e7e08d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
108
+</table><table class="memberdecls">
109
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-slots"></a>
110
+Private Slots</h2></td></tr>
111
+<tr class="memitem:a2c224b09df763428bd778c660abf01ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c224b09df763428bd778c660abf01ee"></a>
112
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_filter_textChanged</b> (const QString &amp;arg1)</td></tr>
113
+<tr class="separator:a2c224b09df763428bd778c660abf01ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
114
+<tr class="memitem:af721e937c88c80e12dc0661568055972"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af721e937c88c80e12dc0661568055972"></a>
115
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_pushButton_clicked</b> ()</td></tr>
116
+<tr class="separator:af721e937c88c80e12dc0661568055972"><td class="memSeparator" colspan="2">&#160;</td></tr>
117
+<tr class="memitem:a4a321a12f13d83cfa29ca342ee50f1cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a321a12f13d83cfa29ca342ee50f1cc"></a>
118
+void&#160;</td><td class="memItemRight" valign="bottom"><b>loadItems</b> (QString path, int N)</td></tr>
119
+<tr class="separator:a4a321a12f13d83cfa29ca342ee50f1cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
120
+</table><table class="memberdecls">
121
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
122
+Private Attributes</h2></td></tr>
123
+<tr class="memitem:aaa4b5bfb9a0f64900d524f14bc32e6df"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaa4b5bfb9a0f64900d524f14bc32e6df"></a>
124
+Ui::Dialog *&#160;</td><td class="memItemRight" valign="bottom"><b>ui</b></td></tr>
125
+<tr class="separator:aaa4b5bfb9a0f64900d524f14bc32e6df"><td class="memSeparator" colspan="2">&#160;</td></tr>
126
+<tr class="memitem:ac6aaff7aaceae7f5a5a8b3c81cde3b7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6aaff7aaceae7f5a5a8b3c81cde3b7e"></a>
127
+QStringList&#160;</td><td class="memItemRight" valign="bottom"><b>myList</b></td></tr>
128
+<tr class="separator:ac6aaff7aaceae7f5a5a8b3c81cde3b7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
129
+</table>
130
+<hr/>The documentation for this class was generated from the following files:<ul>
131
+<li><a class="el" href="dialog_8h_source.html">dialog.h</a></li>
132
+<li>dialog.cpp</li>
133
+</ul>
134
+</div><!-- contents -->
135
+<!-- start footer part -->
136
+<hr class="footer"/><address class="footer"><small>
137
+Generated on Mon Jun 15 2015 15:14:02 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
138
+<img class="footer" src="doxygen.png" alt="doxygen"/>
139
+</a> 1.8.9.1
140
+</small></address>
141
+</body>
142
+</html>

BIN
doc/en/html/class_dialog.png View File


+ 114
- 0
doc/en/html/class_main_window-members.html View File

@@ -0,0 +1,114 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: Member List</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
64
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
65
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
66
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
67
+    </ul>
68
+  </div>
69
+<!-- window showing the filter options -->
70
+<div id="MSearchSelectWindow"
71
+     onmouseover="return searchBox.OnSearchSelectShow()"
72
+     onmouseout="return searchBox.OnSearchSelectHide()"
73
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+</div>
75
+
76
+<!-- iframe showing the search results (closed by default) -->
77
+<div id="MSearchResultsWindow">
78
+<iframe src="javascript:void(0)" frameborder="0" 
79
+        name="MSearchResults" id="MSearchResults">
80
+</iframe>
81
+</div>
82
+
83
+</div><!-- top -->
84
+<div class="header">
85
+  <div class="headertitle">
86
+<div class="title">MainWindow Member List</div>  </div>
87
+</div><!--header-->
88
+<div class="contents">
89
+
90
+<p>This is the complete list of members for <a class="el" href="class_main_window.html">MainWindow</a>, including all inherited members.</p>
91
+<table class="directory">
92
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>finalImage</b> (defined in <a class="el" href="class_main_window.html">MainWindow</a>)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
93
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>images</b> (defined in <a class="el" href="class_main_window.html">MainWindow</a>)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
94
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a0e9e12ec3c93d49b12559ccf1d8fbb52">loadImages</a>(vector&lt; QImage &gt; &amp;, QString)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
95
+  <tr><td class="entry"><a class="el" href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow</a>(QWidget *parent=0)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
96
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#ab37ac3fb919fcbb12543a5c25813e5a6">on_actLoad_Images_triggered</a>()</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
97
+  <tr><td class="entry"><a class="el" href="class_main_window.html#ab6f80eeb70e84d0ae1295bd79a546468">on_actRemoveNoise_triggered</a>()</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
98
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a5939455a2e03188852db2182a0247f18">on_actSaveImage_triggered</a>()</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
99
+  <tr><td class="entry"><a class="el" href="class_main_window.html#a50277f5201555db09f53f5c721aedeea">on_btnLoadImages_clicked</a>()</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
100
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#aae2244407f60009048a97972eaa9d2a8">on_btnRemoveNoise_clicked</a>()</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
101
+  <tr><td class="entry"><a class="el" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">on_btnSaveImage_clicked</a>()</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
102
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a1ef271ff94a2ae4a2e2d4ddc5f78f7e6">PixelSort</a>(vector&lt; QRgb &gt; &amp;pixels)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"></td></tr>
103
+  <tr><td class="entry"><a class="el" href="class_main_window.html#acb4d4a3692e9edf987f35b21edf1427d">RemoveNoise</a>(QImage &amp;finalImage, const vector&lt; QImage &gt; &amp;images)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"></td></tr>
104
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ui</b> (defined in <a class="el" href="class_main_window.html">MainWindow</a>)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
105
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~MainWindow</b>() (defined in <a class="el" href="class_main_window.html">MainWindow</a>)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"></td></tr>
106
+</table></div><!-- contents -->
107
+<!-- start footer part -->
108
+<hr class="footer"/><address class="footer"><small>
109
+Generated on Mon Jun 15 2015 15:14:03 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
110
+<img class="footer" src="doxygen.png" alt="doxygen"/>
111
+</a> 1.8.9.1
112
+</small></address>
113
+</body>
114
+</html>

+ 310
- 0
doc/en/html/class_main_window.html View File

@@ -0,0 +1,310 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: MainWindow Class Reference</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
64
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
65
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
66
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
67
+    </ul>
68
+  </div>
69
+<!-- window showing the filter options -->
70
+<div id="MSearchSelectWindow"
71
+     onmouseover="return searchBox.OnSearchSelectShow()"
72
+     onmouseout="return searchBox.OnSearchSelectHide()"
73
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
74
+</div>
75
+
76
+<!-- iframe showing the search results (closed by default) -->
77
+<div id="MSearchResultsWindow">
78
+<iframe src="javascript:void(0)" frameborder="0" 
79
+        name="MSearchResults" id="MSearchResults">
80
+</iframe>
81
+</div>
82
+
83
+</div><!-- top -->
84
+<div class="header">
85
+  <div class="summary">
86
+<a href="#pub-methods">Public Member Functions</a> &#124;
87
+<a href="#pri-slots">Private Slots</a> &#124;
88
+<a href="#pri-methods">Private Member Functions</a> &#124;
89
+<a href="#pri-attribs">Private Attributes</a> &#124;
90
+<a href="class_main_window-members.html">List of all members</a>  </div>
91
+  <div class="headertitle">
92
+<div class="title">MainWindow Class Reference</div>  </div>
93
+</div><!--header-->
94
+<div class="contents">
95
+<div class="dynheader">
96
+Inheritance diagram for MainWindow:</div>
97
+<div class="dyncontent">
98
+ <div class="center">
99
+  <img src="class_main_window.png" usemap="#MainWindow_map" alt=""/>
100
+  <map id="MainWindow_map" name="MainWindow_map">
101
+</map>
102
+ </div></div>
103
+<table class="memberdecls">
104
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
105
+Public Member Functions</h2></td></tr>
106
+<tr class="memitem:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow</a> (QWidget *parent=0)</td></tr>
107
+<tr class="memdesc:a8b244be8b7b7db1b08de2a2acb9409db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a8b244be8b7b7db1b08de2a2acb9409db">More...</a><br /></td></tr>
108
+<tr class="separator:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memSeparator" colspan="2">&#160;</td></tr>
109
+<tr class="memitem:a1ef271ff94a2ae4a2e2d4ddc5f78f7e6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a1ef271ff94a2ae4a2e2d4ddc5f78f7e6">PixelSort</a> (vector&lt; QRgb &gt; &amp;pixels)</td></tr>
110
+<tr class="memdesc:a1ef271ff94a2ae4a2e2d4ddc5f78f7e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that sorts pixels using Selection Sort.  <a href="#a1ef271ff94a2ae4a2e2d4ddc5f78f7e6">More...</a><br /></td></tr>
111
+<tr class="separator:a1ef271ff94a2ae4a2e2d4ddc5f78f7e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
112
+<tr class="memitem:acb4d4a3692e9edf987f35b21edf1427d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#acb4d4a3692e9edf987f35b21edf1427d">RemoveNoise</a> (QImage &amp;finalImage, const vector&lt; QImage &gt; &amp;images)</td></tr>
113
+<tr class="memdesc:acb4d4a3692e9edf987f35b21edf1427d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that removes the noise from a set of images. For each position (i,j) of the pixels, insert the pixel in that position of each of the images in a pixels vector, sort the pixel vector, and finally set the median pixel to the new image in position (i,j)  <a href="#acb4d4a3692e9edf987f35b21edf1427d">More...</a><br /></td></tr>
114
+<tr class="separator:acb4d4a3692e9edf987f35b21edf1427d"><td class="memSeparator" colspan="2">&#160;</td></tr>
115
+</table><table class="memberdecls">
116
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-slots"></a>
117
+Private Slots</h2></td></tr>
118
+<tr class="memitem:a50277f5201555db09f53f5c721aedeea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50277f5201555db09f53f5c721aedeea"></a>
119
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a50277f5201555db09f53f5c721aedeea">on_btnLoadImages_clicked</a> ()</td></tr>
120
+<tr class="memdesc:a50277f5201555db09f53f5c721aedeea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that sets an image to a given label. <br /></td></tr>
121
+<tr class="separator:a50277f5201555db09f53f5c721aedeea"><td class="memSeparator" colspan="2">&#160;</td></tr>
122
+<tr class="memitem:aae2244407f60009048a97972eaa9d2a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae2244407f60009048a97972eaa9d2a8"></a>
123
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#aae2244407f60009048a97972eaa9d2a8">on_btnRemoveNoise_clicked</a> ()</td></tr>
124
+<tr class="memdesc:aae2244407f60009048a97972eaa9d2a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that invokes the function that removes the noise from the images and set the returned image in the GUI. <br /></td></tr>
125
+<tr class="separator:aae2244407f60009048a97972eaa9d2a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
126
+<tr class="memitem:ad495b5030e61fb55b8ab95c5a3a559d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad495b5030e61fb55b8ab95c5a3a559d6"></a>
127
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">on_btnSaveImage_clicked</a> ()</td></tr>
128
+<tr class="memdesc:ad495b5030e61fb55b8ab95c5a3a559d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that saves the image without noise in the computer. <br /></td></tr>
129
+<tr class="separator:ad495b5030e61fb55b8ab95c5a3a559d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
130
+<tr class="memitem:ab37ac3fb919fcbb12543a5c25813e5a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab37ac3fb919fcbb12543a5c25813e5a6"></a>
131
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#ab37ac3fb919fcbb12543a5c25813e5a6">on_actLoad_Images_triggered</a> ()</td></tr>
132
+<tr class="memdesc:ab37ac3fb919fcbb12543a5c25813e5a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call <a class="el" href="class_main_window.html#a50277f5201555db09f53f5c721aedeea" title="Function that sets an image to a given label. ">on_btnLoadImages_clicked()</a> from the buttons. <br /></td></tr>
133
+<tr class="separator:ab37ac3fb919fcbb12543a5c25813e5a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
134
+<tr class="memitem:ab6f80eeb70e84d0ae1295bd79a546468"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab6f80eeb70e84d0ae1295bd79a546468"></a>
135
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#ab6f80eeb70e84d0ae1295bd79a546468">on_actRemoveNoise_triggered</a> ()</td></tr>
136
+<tr class="memdesc:ab6f80eeb70e84d0ae1295bd79a546468"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call <a class="el" href="class_main_window.html#aae2244407f60009048a97972eaa9d2a8" title="Function that invokes the function that removes the noise from the images and set the returned image ...">on_btnRemoveNoise_clicked()</a> from the buttons. <br /></td></tr>
137
+<tr class="separator:ab6f80eeb70e84d0ae1295bd79a546468"><td class="memSeparator" colspan="2">&#160;</td></tr>
138
+<tr class="memitem:a5939455a2e03188852db2182a0247f18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5939455a2e03188852db2182a0247f18"></a>
139
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a5939455a2e03188852db2182a0247f18">on_actSaveImage_triggered</a> ()</td></tr>
140
+<tr class="memdesc:a5939455a2e03188852db2182a0247f18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Call <a class="el" href="class_main_window.html#a5939455a2e03188852db2182a0247f18" title="Call on_actSaveImage_triggered() from the buttons. ">on_actSaveImage_triggered()</a> from the buttons. <br /></td></tr>
141
+<tr class="separator:a5939455a2e03188852db2182a0247f18"><td class="memSeparator" colspan="2">&#160;</td></tr>
142
+</table><table class="memberdecls">
143
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
144
+Private Member Functions</h2></td></tr>
145
+<tr class="memitem:a0e9e12ec3c93d49b12559ccf1d8fbb52"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a0e9e12ec3c93d49b12559ccf1d8fbb52">loadImages</a> (vector&lt; QImage &gt; &amp;, QString)</td></tr>
146
+<tr class="memdesc:a0e9e12ec3c93d49b12559ccf1d8fbb52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that loads multiple images from a directory path.  <a href="#a0e9e12ec3c93d49b12559ccf1d8fbb52">More...</a><br /></td></tr>
147
+<tr class="separator:a0e9e12ec3c93d49b12559ccf1d8fbb52"><td class="memSeparator" colspan="2">&#160;</td></tr>
148
+</table><table class="memberdecls">
149
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
150
+Private Attributes</h2></td></tr>
151
+<tr class="memitem:a35466a70ed47252a0191168126a352a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35466a70ed47252a0191168126a352a5"></a>
152
+Ui::MainWindow *&#160;</td><td class="memItemRight" valign="bottom"><b>ui</b></td></tr>
153
+<tr class="separator:a35466a70ed47252a0191168126a352a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
154
+<tr class="memitem:acf4a478c904743c5739eaea26c329271"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf4a478c904743c5739eaea26c329271"></a>
155
+QImage&#160;</td><td class="memItemRight" valign="bottom"><b>finalImage</b></td></tr>
156
+<tr class="separator:acf4a478c904743c5739eaea26c329271"><td class="memSeparator" colspan="2">&#160;</td></tr>
157
+<tr class="memitem:a9e8eec97dd2fc09af9141de7e262d343"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9e8eec97dd2fc09af9141de7e262d343"></a>
158
+vector&lt; QImage &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>images</b></td></tr>
159
+<tr class="separator:a9e8eec97dd2fc09af9141de7e262d343"><td class="memSeparator" colspan="2">&#160;</td></tr>
160
+</table>
161
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
162
+<a class="anchor" id="a8b244be8b7b7db1b08de2a2acb9409db"></a>
163
+<div class="memitem">
164
+<div class="memproto">
165
+<table class="mlabels">
166
+  <tr>
167
+  <td class="mlabels-left">
168
+      <table class="memname">
169
+        <tr>
170
+          <td class="memname">MainWindow::MainWindow </td>
171
+          <td>(</td>
172
+          <td class="paramtype">QWidget *&#160;</td>
173
+          <td class="paramname"><em>parent</em> = <code>0</code></td><td>)</td>
174
+          <td></td>
175
+        </tr>
176
+      </table>
177
+  </td>
178
+  <td class="mlabels-right">
179
+<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
180
+  </tr>
181
+</table>
182
+</div><div class="memdoc">
183
+
184
+<p>Constructor. </p>
185
+<p>Destructor. </p>
186
+<p>Keyboard shortcuts Atajos del teclado</p>
187
+<p>Closes window with cmd + w Cierra la ventana con cmd + w</p>
188
+<p>Loads a image with cmd + o Carga una imagen con cmd + o</p>
189
+<p>Removes noise from a image with cmd + r Remueve el ruido de una imagen con cmd + r</p>
190
+<p>Saves an image without noise with cmd + s Guarda una imagen sin ruido con cmd + s </p>
191
+
192
+</div>
193
+</div>
194
+<h2 class="groupheader">Member Function Documentation</h2>
195
+<a class="anchor" id="a0e9e12ec3c93d49b12559ccf1d8fbb52"></a>
196
+<div class="memitem">
197
+<div class="memproto">
198
+<table class="mlabels">
199
+  <tr>
200
+  <td class="mlabels-left">
201
+      <table class="memname">
202
+        <tr>
203
+          <td class="memname">void MainWindow::loadImages </td>
204
+          <td>(</td>
205
+          <td class="paramtype">vector&lt; QImage &gt; &amp;&#160;</td>
206
+          <td class="paramname"><em>images</em>, </td>
207
+        </tr>
208
+        <tr>
209
+          <td class="paramkey"></td>
210
+          <td></td>
211
+          <td class="paramtype">QString&#160;</td>
212
+          <td class="paramname"><em>path</em>&#160;</td>
213
+        </tr>
214
+        <tr>
215
+          <td></td>
216
+          <td>)</td>
217
+          <td></td><td></td>
218
+        </tr>
219
+      </table>
220
+  </td>
221
+  <td class="mlabels-right">
222
+<span class="mlabels"><span class="mlabel">private</span></span>  </td>
223
+  </tr>
224
+</table>
225
+</div><div class="memdoc">
226
+
227
+<p>Function that loads multiple images from a directory path. </p>
228
+<dl class="params"><dt>Parameters</dt><dd>
229
+  <table class="params">
230
+    <tr><td class="paramname">images</td><td>image vector for images with noise. </td></tr>
231
+    <tr><td class="paramname">path</td><td>path of the directory with the images to load. </td></tr>
232
+  </table>
233
+  </dd>
234
+</dl>
235
+
236
+</div>
237
+</div>
238
+<a class="anchor" id="a1ef271ff94a2ae4a2e2d4ddc5f78f7e6"></a>
239
+<div class="memitem">
240
+<div class="memproto">
241
+      <table class="memname">
242
+        <tr>
243
+          <td class="memname">void MainWindow::PixelSort </td>
244
+          <td>(</td>
245
+          <td class="paramtype">vector&lt; QRgb &gt; &amp;&#160;</td>
246
+          <td class="paramname"><em>pixels</em></td><td>)</td>
247
+          <td></td>
248
+        </tr>
249
+      </table>
250
+</div><div class="memdoc">
251
+
252
+<p>Function that sorts pixels using Selection Sort. </p>
253
+<dl class="params"><dt>Parameters</dt><dd>
254
+  <table class="params">
255
+    <tr><td class="paramname">pixels</td><td>pixels vector </td></tr>
256
+  </table>
257
+  </dd>
258
+</dl>
259
+
260
+</div>
261
+</div>
262
+<a class="anchor" id="acb4d4a3692e9edf987f35b21edf1427d"></a>
263
+<div class="memitem">
264
+<div class="memproto">
265
+      <table class="memname">
266
+        <tr>
267
+          <td class="memname">void MainWindow::RemoveNoise </td>
268
+          <td>(</td>
269
+          <td class="paramtype">QImage &amp;&#160;</td>
270
+          <td class="paramname"><em>finalImage</em>, </td>
271
+        </tr>
272
+        <tr>
273
+          <td class="paramkey"></td>
274
+          <td></td>
275
+          <td class="paramtype">const vector&lt; QImage &gt; &amp;&#160;</td>
276
+          <td class="paramname"><em>images</em>&#160;</td>
277
+        </tr>
278
+        <tr>
279
+          <td></td>
280
+          <td>)</td>
281
+          <td></td><td></td>
282
+        </tr>
283
+      </table>
284
+</div><div class="memdoc">
285
+
286
+<p>Function that removes the noise from a set of images. For each position (i,j) of the pixels, insert the pixel in that position of each of the images in a pixels vector, sort the pixel vector, and finally set the median pixel to the new image in position (i,j) </p>
287
+<dl class="params"><dt>Parameters</dt><dd>
288
+  <table class="params">
289
+    <tr><td class="paramname">finalImage</td><td>Image with the noise removed </td></tr>
290
+    <tr><td class="paramname">images</td><td>Vector of images to remove the noise </td></tr>
291
+  </table>
292
+  </dd>
293
+</dl>
294
+
295
+</div>
296
+</div>
297
+<hr/>The documentation for this class was generated from the following files:<ul>
298
+<li><a class="el" href="mainwindow_8h_source.html">mainwindow.h</a></li>
299
+<li>Filter.cpp</li>
300
+<li>mainwindow.cpp</li>
301
+</ul>
302
+</div><!-- contents -->
303
+<!-- start footer part -->
304
+<hr class="footer"/><address class="footer"><small>
305
+Generated on Mon Jun 15 2015 15:14:03 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
306
+<img class="footer" src="doxygen.png" alt="doxygen"/>
307
+</a> 1.8.9.1
308
+</small></address>
309
+</body>
310
+</html>

BIN
doc/en/html/class_main_window.png View File


+ 107
- 0
doc/en/html/classes.html View File

@@ -0,0 +1,107 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: Class Index</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
64
+      <li class="current"><a href="classes.html"><span>Class&#160;Index</span></a></li>
65
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
66
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
67
+    </ul>
68
+  </div>
69
+</div><!-- top -->
70
+<!-- window showing the filter options -->
71
+<div id="MSearchSelectWindow"
72
+     onmouseover="return searchBox.OnSearchSelectShow()"
73
+     onmouseout="return searchBox.OnSearchSelectHide()"
74
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
75
+</div>
76
+
77
+<!-- iframe showing the search results (closed by default) -->
78
+<div id="MSearchResultsWindow">
79
+<iframe src="javascript:void(0)" frameborder="0" 
80
+        name="MSearchResults" id="MSearchResults">
81
+</iframe>
82
+</div>
83
+
84
+<div class="header">
85
+  <div class="headertitle">
86
+<div class="title">Class Index</div>  </div>
87
+</div><!--header-->
88
+<div class="contents">
89
+<div class="qindex"><a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a></div>
90
+<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
91
+<tr><td rowspan="2" valign="bottom"><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;D&#160;&#160;</div></td></tr></table>
92
+</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
93
+</td><td></td></tr>
94
+<tr><td></td></tr>
95
+<tr><td valign="top"><a class="el" href="class_dialog.html">Dialog</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="class_main_window.html">MainWindow</a>&#160;&#160;&#160;</td><td></td></tr>
96
+<tr><td></td><td></td><td></td></tr>
97
+</table>
98
+<div class="qindex"><a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a></div>
99
+</div><!-- contents -->
100
+<!-- start footer part -->
101
+<hr class="footer"/><address class="footer"><small>
102
+Generated on Mon Jun 15 2015 15:14:03 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
103
+<img class="footer" src="doxygen.png" alt="doxygen"/>
104
+</a> 1.8.9.1
105
+</small></address>
106
+</body>
107
+</html>

BIN
doc/en/html/closed.png View File


+ 130
- 0
doc/en/html/dialog_8h_source.html View File

@@ -0,0 +1,130 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: dialog.h Source File</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
64
+    </ul>
65
+  </div>
66
+</div><!-- top -->
67
+<!-- window showing the filter options -->
68
+<div id="MSearchSelectWindow"
69
+     onmouseover="return searchBox.OnSearchSelectShow()"
70
+     onmouseout="return searchBox.OnSearchSelectHide()"
71
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
72
+</div>
73
+
74
+<!-- iframe showing the search results (closed by default) -->
75
+<div id="MSearchResultsWindow">
76
+<iframe src="javascript:void(0)" frameborder="0" 
77
+        name="MSearchResults" id="MSearchResults">
78
+</iframe>
79
+</div>
80
+
81
+<div class="header">
82
+  <div class="headertitle">
83
+<div class="title">dialog.h</div>  </div>
84
+</div><!--header-->
85
+<div class="contents">
86
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef DIALOG_H</span></div>
87
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define DIALOG_H</span></div>
88
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;</div>
89
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;QDialog&gt;</span></div>
90
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;QDir&gt;</span></div>
91
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;QDebug&gt;</span> <span class="comment">// Para que?</span></div>
92
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;QRegExp&gt;</span></div>
93
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;</div>
94
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_ui.html">Ui</a> {</div>
95
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="keyword">class </span><a class="code" href="class_dialog.html">Dialog</a>;</div>
96
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;}</div>
97
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div>
98
+<div class="line"><a name="l00013"></a><span class="lineno"><a class="line" href="class_dialog.html">   13</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_dialog.html">Dialog</a> : <span class="keyword">public</span> QDialog</div>
99
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;{</div>
100
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;    Q_OBJECT</div>
101
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div>
102
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="keyword">public</span>:</div>
103
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_dialog.html">Dialog</a>(QWidget *parent = 0);</div>
104
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;    ~<a class="code" href="class_dialog.html">Dialog</a>();</div>
105
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div>
106
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="keyword">private</span> slots:</div>
107
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;    <span class="keywordtype">void</span> on_filter_textChanged(<span class="keyword">const</span> QString &amp;arg1);</div>
108
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div>
109
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    <span class="keywordtype">void</span> on_pushButton_clicked();</div>
110
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div>
111
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;    <span class="keywordtype">void</span> loadItems(QString path, <span class="keywordtype">int</span> N);</div>
112
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div>
113
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">private</span>:</div>
114
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;    Ui::Dialog *ui;</div>
115
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
116
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    QStringList myList;</div>
117
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;};</div>
118
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div>
119
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#endif // DIALOG_H</span></div>
120
+<div class="ttc" id="namespace_ui_html"><div class="ttname"><a href="namespace_ui.html">Ui</a></div><div class="ttdef"><b>Definition:</b> dialog.h:9</div></div>
121
+<div class="ttc" id="class_dialog_html"><div class="ttname"><a href="class_dialog.html">Dialog</a></div><div class="ttdef"><b>Definition:</b> dialog.h:13</div></div>
122
+</div><!-- fragment --></div><!-- contents -->
123
+<!-- start footer part -->
124
+<hr class="footer"/><address class="footer"><small>
125
+Generated on Mon Jun 15 2015 15:14:02 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
126
+<img class="footer" src="doxygen.png" alt="doxygen"/>
127
+</a> 1.8.9.1
128
+</small></address>
129
+</body>
130
+</html>

BIN
doc/en/html/doc.png View File


+ 1449
- 0
doc/en/html/doxygen.css
File diff suppressed because it is too large
View File


BIN
doc/en/html/doxygen.png View File


+ 97
- 0
doc/en/html/dynsections.js View File

@@ -0,0 +1,97 @@
1
+function toggleVisibility(linkObj)
2
+{
3
+ var base = $(linkObj).attr('id');
4
+ var summary = $('#'+base+'-summary');
5
+ var content = $('#'+base+'-content');
6
+ var trigger = $('#'+base+'-trigger');
7
+ var src=$(trigger).attr('src');
8
+ if (content.is(':visible')===true) {
9
+   content.hide();
10
+   summary.show();
11
+   $(linkObj).addClass('closed').removeClass('opened');
12
+   $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
13
+ } else {
14
+   content.show();
15
+   summary.hide();
16
+   $(linkObj).removeClass('closed').addClass('opened');
17
+   $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
18
+ } 
19
+ return false;
20
+}
21
+
22
+function updateStripes()
23
+{
24
+  $('table.directory tr').
25
+       removeClass('even').filter(':visible:even').addClass('even');
26
+}
27
+
28
+function toggleLevel(level)
29
+{
30
+  $('table.directory tr').each(function() {
31
+    var l = this.id.split('_').length-1;
32
+    var i = $('#img'+this.id.substring(3));
33
+    var a = $('#arr'+this.id.substring(3));
34
+    if (l<level+1) {
35
+      i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
36
+      a.html('&#9660;');
37
+      $(this).show();
38
+    } else if (l==level+1) {
39
+      i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
40
+      a.html('&#9658;');
41
+      $(this).show();
42
+    } else {
43
+      $(this).hide();
44
+    }
45
+  });
46
+  updateStripes();
47
+}
48
+
49
+function toggleFolder(id)
50
+{
51
+  // the clicked row
52
+  var currentRow = $('#row_'+id);
53
+
54
+  // all rows after the clicked row
55
+  var rows = currentRow.nextAll("tr");
56
+
57
+  var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
58
+
59
+  // only match elements AFTER this one (can't hide elements before)
60
+  var childRows = rows.filter(function() { return this.id.match(re); });
61
+
62
+  // first row is visible we are HIDING
63
+  if (childRows.filter(':first').is(':visible')===true) {
64
+    // replace down arrow by right arrow for current row
65
+    var currentRowSpans = currentRow.find("span");
66
+    currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
67
+    currentRowSpans.filter(".arrow").html('&#9658;');
68
+    rows.filter("[id^=row_"+id+"]").hide(); // hide all children
69
+  } else { // we are SHOWING
70
+    // replace right arrow by down arrow for current row
71
+    var currentRowSpans = currentRow.find("span");
72
+    currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
73
+    currentRowSpans.filter(".arrow").html('&#9660;');
74
+    // replace down arrows by right arrows for child rows
75
+    var childRowsSpans = childRows.find("span");
76
+    childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
77
+    childRowsSpans.filter(".arrow").html('&#9658;');
78
+    childRows.show(); //show all children
79
+  }
80
+  updateStripes();
81
+}
82
+
83
+
84
+function toggleInherit(id)
85
+{
86
+  var rows = $('tr.inherit.'+id);
87
+  var img = $('tr.inherit_header.'+id+' img');
88
+  var src = $(img).attr('src');
89
+  if (rows.filter(':first').is(':visible')===true) {
90
+    rows.css('display','none');
91
+    $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
92
+  } else {
93
+    rows.css('display','table-row'); // using show() causes jump in firefox
94
+    $(img).attr('src',src.substring(0,src.length-10)+'open.png');
95
+  }
96
+}
97
+

+ 100
- 0
doc/en/html/files.html View File

@@ -0,0 +1,100 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: File List</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
64
+    </ul>
65
+  </div>
66
+</div><!-- top -->
67
+<!-- window showing the filter options -->
68
+<div id="MSearchSelectWindow"
69
+     onmouseover="return searchBox.OnSearchSelectShow()"
70
+     onmouseout="return searchBox.OnSearchSelectHide()"
71
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
72
+</div>
73
+
74
+<!-- iframe showing the search results (closed by default) -->
75
+<div id="MSearchResultsWindow">
76
+<iframe src="javascript:void(0)" frameborder="0" 
77
+        name="MSearchResults" id="MSearchResults">
78
+</iframe>
79
+</div>
80
+
81
+<div class="header">
82
+  <div class="headertitle">
83
+<div class="title">File List</div>  </div>
84
+</div><!--header-->
85
+<div class="contents">
86
+<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
87
+<table class="directory">
88
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="dialog_8h_source.html"><span class="icondoc"></span></a><b>dialog.h</b></td><td class="desc"></td></tr>
89
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="mainwindow_8h_source.html"><span class="icondoc"></span></a><b>mainwindow.h</b></td><td class="desc"></td></tr>
90
+</table>
91
+</div><!-- directory -->
92
+</div><!-- contents -->
93
+<!-- start footer part -->
94
+<hr class="footer"/><address class="footer"><small>
95
+Generated on Mon Jun 15 2015 15:14:03 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
96
+<img class="footer" src="doxygen.png" alt="doxygen"/>
97
+</a> 1.8.9.1
98
+</small></address>
99
+</body>
100
+</html>

BIN
doc/en/html/folderclosed.png View File


BIN
doc/en/html/folderopen.png View File


+ 131
- 0
doc/en/html/functions.html View File

@@ -0,0 +1,131 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: Class Members</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
64
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
65
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
66
+      <li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
67
+    </ul>
68
+  </div>
69
+  <div id="navrow3" class="tabs2">
70
+    <ul class="tablist">
71
+      <li class="current"><a href="functions.html"><span>All</span></a></li>
72
+      <li><a href="functions_func.html"><span>Functions</span></a></li>
73
+    </ul>
74
+  </div>
75
+</div><!-- top -->
76
+<!-- window showing the filter options -->
77
+<div id="MSearchSelectWindow"
78
+     onmouseover="return searchBox.OnSearchSelectShow()"
79
+     onmouseout="return searchBox.OnSearchSelectHide()"
80
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
81
+</div>
82
+
83
+<!-- iframe showing the search results (closed by default) -->
84
+<div id="MSearchResultsWindow">
85
+<iframe src="javascript:void(0)" frameborder="0" 
86
+        name="MSearchResults" id="MSearchResults">
87
+</iframe>
88
+</div>
89
+
90
+<div class="contents">
91
+<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div><ul>
92
+<li>loadImages()
93
+: <a class="el" href="class_main_window.html#a0e9e12ec3c93d49b12559ccf1d8fbb52">MainWindow</a>
94
+</li>
95
+<li>MainWindow()
96
+: <a class="el" href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow</a>
97
+</li>
98
+<li>on_actLoad_Images_triggered()
99
+: <a class="el" href="class_main_window.html#ab37ac3fb919fcbb12543a5c25813e5a6">MainWindow</a>
100
+</li>
101
+<li>on_actRemoveNoise_triggered()
102
+: <a class="el" href="class_main_window.html#ab6f80eeb70e84d0ae1295bd79a546468">MainWindow</a>
103
+</li>
104
+<li>on_actSaveImage_triggered()
105
+: <a class="el" href="class_main_window.html#a5939455a2e03188852db2182a0247f18">MainWindow</a>
106
+</li>
107
+<li>on_btnLoadImages_clicked()
108
+: <a class="el" href="class_main_window.html#a50277f5201555db09f53f5c721aedeea">MainWindow</a>
109
+</li>
110
+<li>on_btnRemoveNoise_clicked()
111
+: <a class="el" href="class_main_window.html#aae2244407f60009048a97972eaa9d2a8">MainWindow</a>
112
+</li>
113
+<li>on_btnSaveImage_clicked()
114
+: <a class="el" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">MainWindow</a>
115
+</li>
116
+<li>PixelSort()
117
+: <a class="el" href="class_main_window.html#a1ef271ff94a2ae4a2e2d4ddc5f78f7e6">MainWindow</a>
118
+</li>
119
+<li>RemoveNoise()
120
+: <a class="el" href="class_main_window.html#acb4d4a3692e9edf987f35b21edf1427d">MainWindow</a>
121
+</li>
122
+</ul>
123
+</div><!-- contents -->
124
+<!-- start footer part -->
125
+<hr class="footer"/><address class="footer"><small>
126
+Generated on Mon Jun 15 2015 15:14:03 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
127
+<img class="footer" src="doxygen.png" alt="doxygen"/>
128
+</a> 1.8.9.1
129
+</small></address>
130
+</body>
131
+</html>

+ 131
- 0
doc/en/html/functions_func.html View File

@@ -0,0 +1,131 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: Class Members - Functions</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
64
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
65
+      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
66
+      <li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
67
+    </ul>
68
+  </div>
69
+  <div id="navrow3" class="tabs2">
70
+    <ul class="tablist">
71
+      <li><a href="functions.html"><span>All</span></a></li>
72
+      <li class="current"><a href="functions_func.html"><span>Functions</span></a></li>
73
+    </ul>
74
+  </div>
75
+</div><!-- top -->
76
+<!-- window showing the filter options -->
77
+<div id="MSearchSelectWindow"
78
+     onmouseover="return searchBox.OnSearchSelectShow()"
79
+     onmouseout="return searchBox.OnSearchSelectHide()"
80
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
81
+</div>
82
+
83
+<!-- iframe showing the search results (closed by default) -->
84
+<div id="MSearchResultsWindow">
85
+<iframe src="javascript:void(0)" frameborder="0" 
86
+        name="MSearchResults" id="MSearchResults">
87
+</iframe>
88
+</div>
89
+
90
+<div class="contents">
91
+&#160;<ul>
92
+<li>loadImages()
93
+: <a class="el" href="class_main_window.html#a0e9e12ec3c93d49b12559ccf1d8fbb52">MainWindow</a>
94
+</li>
95
+<li>MainWindow()
96
+: <a class="el" href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow</a>
97
+</li>
98
+<li>on_actLoad_Images_triggered()
99
+: <a class="el" href="class_main_window.html#ab37ac3fb919fcbb12543a5c25813e5a6">MainWindow</a>
100
+</li>
101
+<li>on_actRemoveNoise_triggered()
102
+: <a class="el" href="class_main_window.html#ab6f80eeb70e84d0ae1295bd79a546468">MainWindow</a>
103
+</li>
104
+<li>on_actSaveImage_triggered()
105
+: <a class="el" href="class_main_window.html#a5939455a2e03188852db2182a0247f18">MainWindow</a>
106
+</li>
107
+<li>on_btnLoadImages_clicked()
108
+: <a class="el" href="class_main_window.html#a50277f5201555db09f53f5c721aedeea">MainWindow</a>
109
+</li>
110
+<li>on_btnRemoveNoise_clicked()
111
+: <a class="el" href="class_main_window.html#aae2244407f60009048a97972eaa9d2a8">MainWindow</a>
112
+</li>
113
+<li>on_btnSaveImage_clicked()
114
+: <a class="el" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">MainWindow</a>
115
+</li>
116
+<li>PixelSort()
117
+: <a class="el" href="class_main_window.html#a1ef271ff94a2ae4a2e2d4ddc5f78f7e6">MainWindow</a>
118
+</li>
119
+<li>RemoveNoise()
120
+: <a class="el" href="class_main_window.html#acb4d4a3692e9edf987f35b21edf1427d">MainWindow</a>
121
+</li>
122
+</ul>
123
+</div><!-- contents -->
124
+<!-- start footer part -->
125
+<hr class="footer"/><address class="footer"><small>
126
+Generated on Mon Jun 15 2015 15:14:03 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
127
+<img class="footer" src="doxygen.png" alt="doxygen"/>
128
+</a> 1.8.9.1
129
+</small></address>
130
+</body>
131
+</html>

+ 105
- 0
doc/en/html/hierarchy.html View File

@@ -0,0 +1,105 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: Class Hierarchy</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
64
+      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
65
+      <li class="current"><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
66
+      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
67
+    </ul>
68
+  </div>
69
+</div><!-- top -->
70
+<!-- window showing the filter options -->
71
+<div id="MSearchSelectWindow"
72
+     onmouseover="return searchBox.OnSearchSelectShow()"
73
+     onmouseout="return searchBox.OnSearchSelectHide()"
74
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
75
+</div>
76
+
77
+<!-- iframe showing the search results (closed by default) -->
78
+<div id="MSearchResultsWindow">
79
+<iframe src="javascript:void(0)" frameborder="0" 
80
+        name="MSearchResults" id="MSearchResults">
81
+</iframe>
82
+</div>
83
+
84
+<div class="header">
85
+  <div class="headertitle">
86
+<div class="title">Class Hierarchy</div>  </div>
87
+</div><!--header-->
88
+<div class="contents">
89
+<div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
90
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
91
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>QDialog</b></td><td class="desc"></td></tr>
92
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_dialog.html" target="_self">Dialog</a></td><td class="desc"></td></tr>
93
+<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>QMainWindow</b></td><td class="desc"></td></tr>
94
+<tr id="row_1_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="class_main_window.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
95
+</table>
96
+</div><!-- directory -->
97
+</div><!-- contents -->
98
+<!-- start footer part -->
99
+<hr class="footer"/><address class="footer"><small>
100
+Generated on Mon Jun 15 2015 15:14:03 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
101
+<img class="footer" src="doxygen.png" alt="doxygen"/>
102
+</a> 1.8.9.1
103
+</small></address>
104
+</body>
105
+</html>

+ 89
- 0
doc/en/html/index.html View File

@@ -0,0 +1,89 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: Main Page</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+</div><!-- top -->
62
+<!-- window showing the filter options -->
63
+<div id="MSearchSelectWindow"
64
+     onmouseover="return searchBox.OnSearchSelectShow()"
65
+     onmouseout="return searchBox.OnSearchSelectHide()"
66
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
67
+</div>
68
+
69
+<!-- iframe showing the search results (closed by default) -->
70
+<div id="MSearchResultsWindow">
71
+<iframe src="javascript:void(0)" frameborder="0" 
72
+        name="MSearchResults" id="MSearchResults">
73
+</iframe>
74
+</div>
75
+
76
+<div class="header">
77
+  <div class="headertitle">
78
+<div class="title">My Project Documentation</div>  </div>
79
+</div><!--header-->
80
+<div class="contents">
81
+</div><!-- contents -->
82
+<!-- start footer part -->
83
+<hr class="footer"/><address class="footer"><small>
84
+Generated on Mon Jun 15 2015 15:14:03 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
85
+<img class="footer" src="doxygen.png" alt="doxygen"/>
86
+</a> 1.8.9.1
87
+</small></address>
88
+</body>
89
+</html>

+ 68
- 0
doc/en/html/jquery.js
File diff suppressed because it is too large
View File


+ 154
- 0
doc/en/html/mainwindow_8h_source.html View File

@@ -0,0 +1,154 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: mainwindow.h Source File</title>
8
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
9
+<script type="text/javascript" src="jquery.js"></script>
10
+<script type="text/javascript" src="dynsections.js"></script>
11
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
12
+<script type="text/javascript" src="search/searchdata.js"></script>
13
+<script type="text/javascript" src="search/search.js"></script>
14
+<script type="text/javascript">
15
+  $(document).ready(function() { init_search(); });
16
+</script>
17
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
18
+</head>
19
+<body>
20
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
+<div id="titlearea">
22
+<table cellspacing="0" cellpadding="0">
23
+ <tbody>
24
+ <tr style="height: 56px;">
25
+  <td style="padding-left: 0.5em;">
26
+   <div id="projectname">My Project
27
+   </div>
28
+  </td>
29
+ </tr>
30
+ </tbody>
31
+</table>
32
+</div>
33
+<!-- end header part -->
34
+<!-- Generated by Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
41
+      <li><a href="annotated.html"><span>Classes</span></a></li>
42
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
43
+      <li>
44
+        <div id="MSearchBox" class="MSearchBoxInactive">
45
+        <span class="left">
46
+          <img id="MSearchSelect" src="search/mag_sel.png"
47
+               onmouseover="return searchBox.OnSearchSelectShow()"
48
+               onmouseout="return searchBox.OnSearchSelectHide()"
49
+               alt=""/>
50
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
51
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
52
+               onblur="searchBox.OnSearchFieldFocus(false)" 
53
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
54
+          </span><span class="right">
55
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
56
+          </span>
57
+        </div>
58
+      </li>
59
+    </ul>
60
+  </div>
61
+  <div id="navrow2" class="tabs2">
62
+    <ul class="tablist">
63
+      <li><a href="files.html"><span>File&#160;List</span></a></li>
64
+    </ul>
65
+  </div>
66
+</div><!-- top -->
67
+<!-- window showing the filter options -->
68
+<div id="MSearchSelectWindow"
69
+     onmouseover="return searchBox.OnSearchSelectShow()"
70
+     onmouseout="return searchBox.OnSearchSelectHide()"
71
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
72
+</div>
73
+
74
+<!-- iframe showing the search results (closed by default) -->
75
+<div id="MSearchResultsWindow">
76
+<iframe src="javascript:void(0)" frameborder="0" 
77
+        name="MSearchResults" id="MSearchResults">
78
+</iframe>
79
+</div>
80
+
81
+<div class="header">
82
+  <div class="headertitle">
83
+<div class="title">mainwindow.h</div>  </div>
84
+</div><!--header-->
85
+<div class="contents">
86
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef MAINWINDOW_H</span></div>
87
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define MAINWINDOW_H</span></div>
88
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;</div>
89
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;QMainWindow&gt;</span></div>
90
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;QFileDialog&gt;</span></div>
91
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;QDir&gt;</span></div>
92
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;QMessageBox&gt;</span></div>
93
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;QImage&gt;</span></div>
94
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;</div>
95
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div>
96
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;</div>
97
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div>
98
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">//void RemoveNoise(QImage &amp;, const vector&lt;QImage&gt; &amp;) ;</span></div>
99
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;</div>
100
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_ui.html">Ui</a> {</div>
101
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;    <span class="keyword">class </span><a class="code" href="class_main_window.html">MainWindow</a>;</div>
102
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;}</div>
103
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div>
104
+<div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="class_main_window.html">   19</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_main_window.html">MainWindow</a> : <span class="keyword">public</span> QMainWindow{</div>
105
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;    Q_OBJECT</div>
106
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div>
107
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;    <span class="keyword">public</span>:</div>
108
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div>
109
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;        <span class="keyword">explicit</span> <a class="code" href="class_main_window.html">MainWindow</a>(QWidget *parent = 0);</div>
110
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div>
111
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;        <span class="keywordtype">void</span> PixelSort(vector&lt;QRgb&gt; &amp;pixels);</div>
112
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div>
113
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        <span class="keywordtype">void</span> RemoveNoise(QImage &amp; finalImage, <span class="keyword">const</span> vector&lt;QImage&gt; &amp; images);</div>
114
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div>
115
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        ~<a class="code" href="class_main_window.html">MainWindow</a>();</div>
116
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div>
117
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;    <span class="keyword">private</span> slots:</div>
118
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div>
119
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        <span class="keywordtype">void</span> on_btnLoadImages_clicked();</div>
120
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;</div>
121
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        <span class="keywordtype">void</span> on_btnRemoveNoise_clicked();</div>
122
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div>
123
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        <span class="keywordtype">void</span> on_btnSaveImage_clicked();</div>
124
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;</div>
125
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="keywordtype">void</span> on_actLoad_Images_triggered();</div>
126
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div>
127
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <span class="keywordtype">void</span> on_actRemoveNoise_triggered();</div>
128
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div>
129
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        <span class="keywordtype">void</span> on_actSaveImage_triggered();</div>
130
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div>
131
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="keyword">private</span>:</div>
132
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        Ui::MainWindow *ui;</div>
133
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div>
134
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;        QImage finalImage;</div>
135
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div>
136
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <span class="comment">// Vectors that contain the image and its values</span></div>
137
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        vector&lt;QImage&gt; images;</div>
138
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div>
139
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;        <span class="keywordtype">void</span> loadImages(vector&lt;QImage&gt; &amp; , QString);</div>
140
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;};</div>
141
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div>
142
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="preprocessor">#endif // MAINWINDOW_H</span></div>
143
+<div class="ttc" id="namespace_ui_html"><div class="ttname"><a href="namespace_ui.html">Ui</a></div><div class="ttdef"><b>Definition:</b> dialog.h:9</div></div>
144
+<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
145
+<div class="ttc" id="class_main_window_html"><div class="ttname"><a href="class_main_window.html">MainWindow</a></div><div class="ttdef"><b>Definition:</b> mainwindow.h:19</div></div>
146
+</div><!-- fragment --></div><!-- contents -->
147
+<!-- start footer part -->
148
+<hr class="footer"/><address class="footer"><small>
149
+Generated on Mon Jun 15 2015 15:14:02 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
150
+<img class="footer" src="doxygen.png" alt="doxygen"/>
151
+</a> 1.8.9.1
152
+</small></address>
153
+</body>
154
+</html>

BIN
doc/en/html/nav_f.png View File


BIN
doc/en/html/nav_g.png View File


BIN
doc/en/html/nav_h.png View File


BIN
doc/en/html/open.png View File


+ 26
- 0
doc/en/html/search/all_0.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="all_0.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/all_0.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['dialog',['Dialog',['../class_dialog.html',1,'']]]
4
+];

+ 26
- 0
doc/en/html/search/all_1.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="all_1.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/all_1.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['loadimages',['loadImages',['../class_main_window.html#a0e9e12ec3c93d49b12559ccf1d8fbb52',1,'MainWindow']]]
4
+];

+ 26
- 0
doc/en/html/search/all_2.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="all_2.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/all_2.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['mainwindow',['MainWindow',['../class_main_window.html',1,'MainWindow'],['../class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db',1,'MainWindow::MainWindow()']]]
4
+];

+ 26
- 0
doc/en/html/search/all_3.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="all_3.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 9
- 0
doc/en/html/search/all_3.js View File

@@ -0,0 +1,9 @@
1
+var searchData=
2
+[
3
+  ['on_5factload_5fimages_5ftriggered',['on_actLoad_Images_triggered',['../class_main_window.html#ab37ac3fb919fcbb12543a5c25813e5a6',1,'MainWindow']]],
4
+  ['on_5factremovenoise_5ftriggered',['on_actRemoveNoise_triggered',['../class_main_window.html#ab6f80eeb70e84d0ae1295bd79a546468',1,'MainWindow']]],
5
+  ['on_5factsaveimage_5ftriggered',['on_actSaveImage_triggered',['../class_main_window.html#a5939455a2e03188852db2182a0247f18',1,'MainWindow']]],
6
+  ['on_5fbtnloadimages_5fclicked',['on_btnLoadImages_clicked',['../class_main_window.html#a50277f5201555db09f53f5c721aedeea',1,'MainWindow']]],
7
+  ['on_5fbtnremovenoise_5fclicked',['on_btnRemoveNoise_clicked',['../class_main_window.html#aae2244407f60009048a97972eaa9d2a8',1,'MainWindow']]],
8
+  ['on_5fbtnsaveimage_5fclicked',['on_btnSaveImage_clicked',['../class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6',1,'MainWindow']]]
9
+];

+ 26
- 0
doc/en/html/search/all_4.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="all_4.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/all_4.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['pixelsort',['PixelSort',['../class_main_window.html#a1ef271ff94a2ae4a2e2d4ddc5f78f7e6',1,'MainWindow']]]
4
+];

+ 26
- 0
doc/en/html/search/all_5.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="all_5.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/all_5.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['removenoise',['RemoveNoise',['../class_main_window.html#acb4d4a3692e9edf987f35b21edf1427d',1,'MainWindow']]]
4
+];

+ 26
- 0
doc/en/html/search/classes_0.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="classes_0.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/classes_0.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['dialog',['Dialog',['../class_dialog.html',1,'']]]
4
+];

+ 26
- 0
doc/en/html/search/classes_1.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="classes_1.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/classes_1.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['mainwindow',['MainWindow',['../class_main_window.html',1,'']]]
4
+];

BIN
doc/en/html/search/close.png View File


+ 26
- 0
doc/en/html/search/functions_0.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="functions_0.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/functions_0.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['loadimages',['loadImages',['../class_main_window.html#a0e9e12ec3c93d49b12559ccf1d8fbb52',1,'MainWindow']]]
4
+];

+ 26
- 0
doc/en/html/search/functions_1.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="functions_1.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/functions_1.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['mainwindow',['MainWindow',['../class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db',1,'MainWindow']]]
4
+];

+ 26
- 0
doc/en/html/search/functions_2.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="functions_2.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 9
- 0
doc/en/html/search/functions_2.js View File

@@ -0,0 +1,9 @@
1
+var searchData=
2
+[
3
+  ['on_5factload_5fimages_5ftriggered',['on_actLoad_Images_triggered',['../class_main_window.html#ab37ac3fb919fcbb12543a5c25813e5a6',1,'MainWindow']]],
4
+  ['on_5factremovenoise_5ftriggered',['on_actRemoveNoise_triggered',['../class_main_window.html#ab6f80eeb70e84d0ae1295bd79a546468',1,'MainWindow']]],
5
+  ['on_5factsaveimage_5ftriggered',['on_actSaveImage_triggered',['../class_main_window.html#a5939455a2e03188852db2182a0247f18',1,'MainWindow']]],
6
+  ['on_5fbtnloadimages_5fclicked',['on_btnLoadImages_clicked',['../class_main_window.html#a50277f5201555db09f53f5c721aedeea',1,'MainWindow']]],
7
+  ['on_5fbtnremovenoise_5fclicked',['on_btnRemoveNoise_clicked',['../class_main_window.html#aae2244407f60009048a97972eaa9d2a8',1,'MainWindow']]],
8
+  ['on_5fbtnsaveimage_5fclicked',['on_btnSaveImage_clicked',['../class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6',1,'MainWindow']]]
9
+];

+ 26
- 0
doc/en/html/search/functions_3.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="functions_3.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/functions_3.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['pixelsort',['PixelSort',['../class_main_window.html#a1ef271ff94a2ae4a2e2d4ddc5f78f7e6',1,'MainWindow']]]
4
+];

+ 26
- 0
doc/en/html/search/functions_4.html View File

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="functions_4.js"></script>
7
+<script type="text/javascript" src="search.js"></script>
8
+</head>
9
+<body class="SRPage">
10
+<div id="SRIndex">
11
+<div class="SRStatus" id="Loading">Loading...</div>
12
+<div id="SRResults"></div>
13
+<script type="text/javascript"><!--
14
+createResults();
15
+--></script>
16
+<div class="SRStatus" id="Searching">Searching...</div>
17
+<div class="SRStatus" id="NoMatches">No Matches</div>
18
+<script type="text/javascript"><!--
19
+document.getElementById("Loading").style.display="none";
20
+document.getElementById("NoMatches").style.display="none";
21
+var searchResults = new SearchResults("searchResults");
22
+searchResults.Search();
23
+--></script>
24
+</div>
25
+</body>
26
+</html>

+ 4
- 0
doc/en/html/search/functions_4.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['removenoise',['RemoveNoise',['../class_main_window.html#acb4d4a3692e9edf987f35b21edf1427d',1,'MainWindow']]]
4
+];

BIN
doc/en/html/search/mag_sel.png View File


+ 12
- 0
doc/en/html/search/nomatches.html View File

@@ -0,0 +1,12 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<link rel="stylesheet" type="text/css" href="search.css"/>
5
+<script type="text/javascript" src="search.js"></script>
6
+</head>
7
+<body class="SRPage">
8
+<div id="SRIndex">
9
+<div class="SRStatus" id="NoMatches">No Matches</div>
10
+</div>
11
+</body>
12
+</html>

+ 271
- 0
doc/en/html/search/search.css View File

@@ -0,0 +1,271 @@
1
+/*---------------- Search Box */
2
+
3
+#FSearchBox {
4
+    float: left;
5
+}
6
+
7
+#MSearchBox {
8
+    white-space : nowrap;
9
+    position: absolute;
10
+    float: none;
11
+    display: inline;
12
+    margin-top: 8px;
13
+    right: 0px;
14
+    width: 170px;
15
+    z-index: 102;
16
+    background-color: white;
17
+}
18
+
19
+#MSearchBox .left
20
+{
21
+    display:block;
22
+    position:absolute;
23
+    left:10px;
24
+    width:20px;
25
+    height:19px;
26
+    background:url('search_l.png') no-repeat;
27
+    background-position:right;
28
+}
29
+
30
+#MSearchSelect {
31
+    display:block;
32
+    position:absolute;
33
+    width:20px;
34
+    height:19px;
35
+}
36
+
37
+.left #MSearchSelect {
38
+    left:4px;
39
+}
40
+
41
+.right #MSearchSelect {
42
+    right:5px;
43
+}
44
+
45
+#MSearchField {
46
+    display:block;
47
+    position:absolute;
48
+    height:19px;
49
+    background:url('search_m.png') repeat-x;
50
+    border:none;
51
+    width:111px;
52
+    margin-left:20px;
53
+    padding-left:4px;
54
+    color: #909090;
55
+    outline: none;
56
+    font: 9pt Arial, Verdana, sans-serif;
57
+}
58
+
59
+#FSearchBox #MSearchField {
60
+    margin-left:15px;
61
+}
62
+
63
+#MSearchBox .right {
64
+    display:block;
65
+    position:absolute;
66
+    right:10px;
67
+    top:0px;
68
+    width:20px;
69
+    height:19px;
70
+    background:url('search_r.png') no-repeat;
71
+    background-position:left;
72
+}
73
+
74
+#MSearchClose {
75
+    display: none;
76
+    position: absolute;
77
+    top: 4px;
78
+    background : none;
79
+    border: none;
80
+    margin: 0px 4px 0px 0px;
81
+    padding: 0px 0px;
82
+    outline: none;
83
+}
84
+
85
+.left #MSearchClose {
86
+    left: 6px;
87
+}
88
+
89
+.right #MSearchClose {
90
+    right: 2px;
91
+}
92
+
93
+.MSearchBoxActive #MSearchField {
94
+    color: #000000;
95
+}
96
+
97
+/*---------------- Search filter selection */
98
+
99
+#MSearchSelectWindow {
100
+    display: none;
101
+    position: absolute;
102
+    left: 0; top: 0;
103
+    border: 1px solid #90A5CE;
104
+    background-color: #F9FAFC;
105
+    z-index: 1;
106
+    padding-top: 4px;
107
+    padding-bottom: 4px;
108
+    -moz-border-radius: 4px;
109
+    -webkit-border-top-left-radius: 4px;
110
+    -webkit-border-top-right-radius: 4px;
111
+    -webkit-border-bottom-left-radius: 4px;
112
+    -webkit-border-bottom-right-radius: 4px;
113
+    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
114
+}
115
+
116
+.SelectItem {
117
+    font: 8pt Arial, Verdana, sans-serif;
118
+    padding-left:  2px;
119
+    padding-right: 12px;
120
+    border: 0px;
121
+}
122
+
123
+span.SelectionMark {
124
+    margin-right: 4px;
125
+    font-family: monospace;
126
+    outline-style: none;
127
+    text-decoration: none;
128
+}
129
+
130
+a.SelectItem {
131
+    display: block;
132
+    outline-style: none;
133
+    color: #000000; 
134
+    text-decoration: none;
135
+    padding-left:   6px;
136
+    padding-right: 12px;
137
+}
138
+
139
+a.SelectItem:focus,
140
+a.SelectItem:active {
141
+    color: #000000; 
142
+    outline-style: none;
143
+    text-decoration: none;
144
+}
145
+
146
+a.SelectItem:hover {
147
+    color: #FFFFFF;
148
+    background-color: #3D578C;
149
+    outline-style: none;
150
+    text-decoration: none;
151
+    cursor: pointer;
152
+    display: block;
153
+}
154
+
155
+/*---------------- Search results window */
156
+
157
+iframe#MSearchResults {
158
+    width: 60ex;
159
+    height: 15em;
160
+}
161
+
162
+#MSearchResultsWindow {
163
+    display: none;
164
+    position: absolute;
165
+    left: 0; top: 0;
166
+    border: 1px solid #000;
167
+    background-color: #EEF1F7;
168
+}
169
+
170
+/* ----------------------------------- */
171
+
172
+
173
+#SRIndex {
174
+    clear:both; 
175
+    padding-bottom: 15px;
176
+}
177
+
178
+.SREntry {
179
+    font-size: 10pt;
180
+    padding-left: 1ex;
181
+}
182
+
183
+.SRPage .SREntry {
184
+    font-size: 8pt;
185
+    padding: 1px 5px;
186
+}
187
+
188
+body.SRPage {
189
+    margin: 5px 2px;
190
+}
191
+
192
+.SRChildren {
193
+    padding-left: 3ex; padding-bottom: .5em 
194
+}
195
+
196
+.SRPage .SRChildren {
197
+    display: none;
198
+}
199
+
200
+.SRSymbol {
201
+    font-weight: bold; 
202
+    color: #425E97;
203
+    font-family: Arial, Verdana, sans-serif;
204
+    text-decoration: none;
205
+    outline: none;
206
+}
207
+
208
+a.SRScope {
209
+    display: block;
210
+    color: #425E97; 
211
+    font-family: Arial, Verdana, sans-serif;
212
+    text-decoration: none;
213
+    outline: none;
214
+}
215
+
216
+a.SRSymbol:focus, a.SRSymbol:active,
217
+a.SRScope:focus, a.SRScope:active {
218
+    text-decoration: underline;
219
+}
220
+
221
+span.SRScope {
222
+    padding-left: 4px;
223
+}
224
+
225
+.SRPage .SRStatus {
226
+    padding: 2px 5px;
227
+    font-size: 8pt;
228
+    font-style: italic;
229
+}
230
+
231
+.SRResult {
232
+    display: none;
233
+}
234
+
235
+DIV.searchresults {
236
+    margin-left: 10px;
237
+    margin-right: 10px;
238
+}
239
+
240
+/*---------------- External search page results */
241
+
242
+.searchresult {
243
+    background-color: #F0F3F8;
244
+}
245
+
246
+.pages b {
247
+   color: white;
248
+   padding: 5px 5px 3px 5px;
249
+   background-image: url("../tab_a.png");
250
+   background-repeat: repeat-x;
251
+   text-shadow: 0 1px 1px #000000;
252
+}
253
+
254
+.pages {
255
+    line-height: 17px;
256
+    margin-left: 4px;
257
+    text-decoration: none;
258
+}
259
+
260
+.hl {
261
+    font-weight: bold;
262
+}
263
+
264
+#searchresults {
265
+    margin-bottom: 20px;
266
+}
267
+
268
+.searchpages {
269
+    margin-top: 10px;
270
+}
271
+

+ 791
- 0
doc/en/html/search/search.js View File

@@ -0,0 +1,791 @@
1
+function convertToId(search)
2
+{
3
+  var result = '';
4
+  for (i=0;i<search.length;i++)
5
+  {
6
+    var c = search.charAt(i);
7
+    var cn = c.charCodeAt(0);
8
+    if (c.match(/[a-z0-9\u0080-\uFFFF]/))
9
+    {
10
+      result+=c;
11
+    }
12
+    else if (cn<16)
13
+    {
14
+      result+="_0"+cn.toString(16);
15
+    }
16
+    else
17
+    {
18
+      result+="_"+cn.toString(16);
19
+    }
20
+  }
21
+  return result;
22
+}
23
+
24
+function getXPos(item)
25
+{
26
+  var x = 0;
27
+  if (item.offsetWidth)
28
+  {
29
+    while (item && item!=document.body)
30
+    {
31
+      x   += item.offsetLeft;
32
+      item = item.offsetParent;
33
+    }
34
+  }
35
+  return x;
36
+}
37
+
38
+function getYPos(item)
39
+{
40
+  var y = 0;
41
+  if (item.offsetWidth)
42
+  {
43
+     while (item && item!=document.body)
44
+     {
45
+       y   += item.offsetTop;
46
+       item = item.offsetParent;
47
+     }
48
+  }
49
+  return y;
50
+}
51
+
52
+/* A class handling everything associated with the search panel.
53
+
54
+   Parameters:
55
+   name - The name of the global variable that will be
56
+          storing this instance.  Is needed to be able to set timeouts.
57
+   resultPath - path to use for external files
58
+*/
59
+function SearchBox(name, resultsPath, inFrame, label)
60
+{
61
+  if (!name || !resultsPath) {  alert("Missing parameters to SearchBox."); }
62
+
63
+  // ---------- Instance variables
64
+  this.name                  = name;
65
+  this.resultsPath           = resultsPath;
66
+  this.keyTimeout            = 0;
67
+  this.keyTimeoutLength      = 500;
68
+  this.closeSelectionTimeout = 300;
69
+  this.lastSearchValue       = "";
70
+  this.lastResultsPage       = "";
71
+  this.hideTimeout           = 0;
72
+  this.searchIndex           = 0;
73
+  this.searchActive          = false;
74
+  this.insideFrame           = inFrame;
75
+  this.searchLabel           = label;
76
+
77
+  // ----------- DOM Elements
78
+
79
+  this.DOMSearchField = function()
80
+  {  return document.getElementById("MSearchField");  }
81
+
82
+  this.DOMSearchSelect = function()
83
+  {  return document.getElementById("MSearchSelect");  }
84
+
85
+  this.DOMSearchSelectWindow = function()
86
+  {  return document.getElementById("MSearchSelectWindow");  }
87
+
88
+  this.DOMPopupSearchResults = function()
89
+  {  return document.getElementById("MSearchResults");  }
90
+
91
+  this.DOMPopupSearchResultsWindow = function()
92
+  {  return document.getElementById("MSearchResultsWindow");  }
93
+
94
+  this.DOMSearchClose = function()
95
+  {  return document.getElementById("MSearchClose"); }
96
+
97
+  this.DOMSearchBox = function()
98
+  {  return document.getElementById("MSearchBox");  }
99
+
100
+  // ------------ Event Handlers
101
+
102
+  // Called when focus is added or removed from the search field.
103
+  this.OnSearchFieldFocus = function(isActive)
104
+  {
105
+    this.Activate(isActive);
106
+  }
107
+
108
+  this.OnSearchSelectShow = function()
109
+  {
110
+    var searchSelectWindow = this.DOMSearchSelectWindow();
111
+    var searchField        = this.DOMSearchSelect();
112
+
113
+    if (this.insideFrame)
114
+    {
115
+      var left = getXPos(searchField);
116
+      var top  = getYPos(searchField);
117
+      left += searchField.offsetWidth + 6;
118
+      top += searchField.offsetHeight;
119
+
120
+      // show search selection popup
121
+      searchSelectWindow.style.display='block';
122
+      left -= searchSelectWindow.offsetWidth;
123
+      searchSelectWindow.style.left =  left + 'px';
124
+      searchSelectWindow.style.top  =  top  + 'px';
125
+    }
126
+    else
127
+    {
128
+      var left = getXPos(searchField);
129
+      var top  = getYPos(searchField);
130
+      top += searchField.offsetHeight;
131
+
132
+      // show search selection popup
133
+      searchSelectWindow.style.display='block';
134
+      searchSelectWindow.style.left =  left + 'px';
135
+      searchSelectWindow.style.top  =  top  + 'px';
136
+    }
137
+
138
+    // stop selection hide timer
139
+    if (this.hideTimeout)
140
+    {
141
+      clearTimeout(this.hideTimeout);
142
+      this.hideTimeout=0;
143
+    }
144
+    return false; // to avoid "image drag" default event
145
+  }
146
+
147
+  this.OnSearchSelectHide = function()
148
+  {
149
+    this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
150
+                                  this.closeSelectionTimeout);
151
+  }
152
+
153
+  // Called when the content of the search field is changed.
154
+  this.OnSearchFieldChange = function(evt)
155
+  {
156
+    if (this.keyTimeout) // kill running timer
157
+    {
158
+      clearTimeout(this.keyTimeout);
159
+      this.keyTimeout = 0;
160
+    }
161
+
162
+    var e  = (evt) ? evt : window.event; // for IE
163
+    if (e.keyCode==40 || e.keyCode==13)
164
+    {
165
+      if (e.shiftKey==1)
166
+      {
167
+        this.OnSearchSelectShow();
168
+        var win=this.DOMSearchSelectWindow();
169
+        for (i=0;i<win.childNodes.length;i++)
170
+        {
171
+          var child = win.childNodes[i]; // get span within a
172
+          if (child.className=='SelectItem')
173
+          {
174
+            child.focus();
175
+            return;
176
+          }
177
+        }
178
+        return;
179
+      }
180
+      else if (window.frames.MSearchResults.searchResults)
181
+      {
182
+        var elem = window.frames.MSearchResults.searchResults.NavNext(0);
183
+        if (elem) elem.focus();
184
+      }
185
+    }
186
+    else if (e.keyCode==27) // Escape out of the search field
187
+    {
188
+      this.DOMSearchField().blur();
189
+      this.DOMPopupSearchResultsWindow().style.display = 'none';
190
+      this.DOMSearchClose().style.display = 'none';
191
+      this.lastSearchValue = '';
192
+      this.Activate(false);
193
+      return;
194
+    }
195
+
196
+    // strip whitespaces
197
+    var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
198
+
199
+    if (searchValue != this.lastSearchValue) // search value has changed
200
+    {
201
+      if (searchValue != "") // non-empty search
202
+      {
203
+        // set timer for search update
204
+        this.keyTimeout = setTimeout(this.name + '.Search()',
205
+                                     this.keyTimeoutLength);
206
+      }
207
+      else // empty search field
208
+      {
209
+        this.DOMPopupSearchResultsWindow().style.display = 'none';
210
+        this.DOMSearchClose().style.display = 'none';
211
+        this.lastSearchValue = '';
212
+      }
213
+    }
214
+  }
215
+
216
+  this.SelectItemCount = function(id)
217
+  {
218
+    var count=0;
219
+    var win=this.DOMSearchSelectWindow();
220
+    for (i=0;i<win.childNodes.length;i++)
221
+    {
222
+      var child = win.childNodes[i]; // get span within a
223
+      if (child.className=='SelectItem')
224
+      {
225
+        count++;
226
+      }
227
+    }
228
+    return count;
229
+  }
230
+
231
+  this.SelectItemSet = function(id)
232
+  {
233
+    var i,j=0;
234
+    var win=this.DOMSearchSelectWindow();
235
+    for (i=0;i<win.childNodes.length;i++)
236
+    {
237
+      var child = win.childNodes[i]; // get span within a
238
+      if (child.className=='SelectItem')
239
+      {
240
+        var node = child.firstChild;
241
+        if (j==id)
242
+        {
243
+          node.innerHTML='&#8226;';
244
+        }
245
+        else
246
+        {
247
+          node.innerHTML='&#160;';
248
+        }
249
+        j++;
250
+      }
251
+    }
252
+  }
253
+
254
+  // Called when an search filter selection is made.
255
+  // set item with index id as the active item
256
+  this.OnSelectItem = function(id)
257
+  {
258
+    this.searchIndex = id;
259
+    this.SelectItemSet(id);
260
+    var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
261
+    if (searchValue!="" && this.searchActive) // something was found -> do a search
262
+    {
263
+      this.Search();
264
+    }
265
+  }
266
+
267
+  this.OnSearchSelectKey = function(evt)
268
+  {
269
+    var e = (evt) ? evt : window.event; // for IE
270
+    if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
271
+    {
272
+      this.searchIndex++;
273
+      this.OnSelectItem(this.searchIndex);
274
+    }
275
+    else if (e.keyCode==38 && this.searchIndex>0) // Up
276
+    {
277
+      this.searchIndex--;
278
+      this.OnSelectItem(this.searchIndex);
279
+    }
280
+    else if (e.keyCode==13 || e.keyCode==27)
281
+    {
282
+      this.OnSelectItem(this.searchIndex);
283
+      this.CloseSelectionWindow();
284
+      this.DOMSearchField().focus();
285
+    }
286
+    return false;
287
+  }
288
+
289
+  // --------- Actions
290
+
291
+  // Closes the results window.
292
+  this.CloseResultsWindow = function()
293
+  {
294
+    this.DOMPopupSearchResultsWindow().style.display = 'none';
295
+    this.DOMSearchClose().style.display = 'none';
296
+    this.Activate(false);
297
+  }
298
+
299
+  this.CloseSelectionWindow = function()
300
+  {
301
+    this.DOMSearchSelectWindow().style.display = 'none';
302
+  }
303
+
304
+  // Performs a search.
305
+  this.Search = function()
306
+  {
307
+    this.keyTimeout = 0;
308
+
309
+    // strip leading whitespace
310
+    var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
311
+
312
+    var code = searchValue.toLowerCase().charCodeAt(0);
313
+    var idxChar = searchValue.substr(0, 1).toLowerCase();
314
+    if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
315
+    {
316
+      idxChar = searchValue.substr(0, 2);
317
+    }
318
+
319
+    var resultsPage;
320
+    var resultsPageWithSearch;
321
+    var hasResultsPage;
322
+
323
+    var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
324
+    if (idx!=-1)
325
+    {
326
+       var hexCode=idx.toString(16);
327
+       resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
328
+       resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
329
+       hasResultsPage = true;
330
+    }
331
+    else // nothing available for this search term
332
+    {
333
+       resultsPage = this.resultsPath + '/nomatches.html';
334
+       resultsPageWithSearch = resultsPage;
335
+       hasResultsPage = false;
336
+    }
337
+
338
+    window.frames.MSearchResults.location = resultsPageWithSearch;
339
+    var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
340
+
341
+    if (domPopupSearchResultsWindow.style.display!='block')
342
+    {
343
+       var domSearchBox = this.DOMSearchBox();
344
+       this.DOMSearchClose().style.display = 'inline';
345
+       if (this.insideFrame)
346
+       {
347
+         var domPopupSearchResults = this.DOMPopupSearchResults();
348
+         domPopupSearchResultsWindow.style.position = 'relative';
349
+         domPopupSearchResultsWindow.style.display  = 'block';
350
+         var width = document.body.clientWidth - 8; // the -8 is for IE :-(
351
+         domPopupSearchResultsWindow.style.width    = width + 'px';
352
+         domPopupSearchResults.style.width          = width + 'px';
353
+       }
354
+       else
355
+       {
356
+         var domPopupSearchResults = this.DOMPopupSearchResults();
357
+         var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
358
+         var top  = getYPos(domSearchBox) + 20;  // domSearchBox.offsetHeight + 1;
359
+         domPopupSearchResultsWindow.style.display = 'block';
360
+         left -= domPopupSearchResults.offsetWidth;
361
+         domPopupSearchResultsWindow.style.top     = top  + 'px';
362
+         domPopupSearchResultsWindow.style.left    = left + 'px';
363
+       }
364
+    }
365
+
366
+    this.lastSearchValue = searchValue;
367
+    this.lastResultsPage = resultsPage;
368
+  }
369
+
370
+  // -------- Activation Functions
371
+
372
+  // Activates or deactivates the search panel, resetting things to
373
+  // their default values if necessary.
374
+  this.Activate = function(isActive)
375
+  {
376
+    if (isActive || // open it
377
+        this.DOMPopupSearchResultsWindow().style.display == 'block'
378
+       )
379
+    {
380
+      this.DOMSearchBox().className = 'MSearchBoxActive';
381
+
382
+      var searchField = this.DOMSearchField();
383
+
384
+      if (searchField.value == this.searchLabel) // clear "Search" term upon entry
385
+      {
386
+        searchField.value = '';
387
+        this.searchActive = true;
388
+      }
389
+    }
390
+    else if (!isActive) // directly remove the panel
391
+    {
392
+      this.DOMSearchBox().className = 'MSearchBoxInactive';
393
+      this.DOMSearchField().value   = this.searchLabel;
394
+      this.searchActive             = false;
395
+      this.lastSearchValue          = ''
396
+      this.lastResultsPage          = '';
397
+    }
398
+  }
399
+}
400
+
401
+// -----------------------------------------------------------------------
402
+
403
+// The class that handles everything on the search results page.
404
+function SearchResults(name)
405
+{
406
+    // The number of matches from the last run of <Search()>.
407
+    this.lastMatchCount = 0;
408
+    this.lastKey = 0;
409
+    this.repeatOn = false;
410
+
411
+    // Toggles the visibility of the passed element ID.
412
+    this.FindChildElement = function(id)
413
+    {
414
+      var parentElement = document.getElementById(id);
415
+      var element = parentElement.firstChild;
416
+
417
+      while (element && element!=parentElement)
418
+      {
419
+        if (element.nodeName == 'DIV' && element.className == 'SRChildren')
420
+        {
421
+          return element;
422
+        }
423
+
424
+        if (element.nodeName == 'DIV' && element.hasChildNodes())
425
+        {
426
+           element = element.firstChild;
427
+        }
428
+        else if (element.nextSibling)
429
+        {
430
+           element = element.nextSibling;
431
+        }
432
+        else
433
+        {
434
+          do
435
+          {
436
+            element = element.parentNode;
437
+          }
438
+          while (element && element!=parentElement && !element.nextSibling);
439
+
440
+          if (element && element!=parentElement)
441
+          {
442
+            element = element.nextSibling;
443
+          }
444
+        }
445
+      }
446
+    }
447
+
448
+    this.Toggle = function(id)
449
+    {
450
+      var element = this.FindChildElement(id);
451
+      if (element)
452
+      {
453
+        if (element.style.display == 'block')
454
+        {
455
+          element.style.display = 'none';
456
+        }
457
+        else
458
+        {
459
+          element.style.display = 'block';
460
+        }
461
+      }
462
+    }
463
+
464
+    // Searches for the passed string.  If there is no parameter,
465
+    // it takes it from the URL query.
466
+    //
467
+    // Always returns true, since other documents may try to call it
468
+    // and that may or may not be possible.
469
+    this.Search = function(search)
470
+    {
471
+      if (!search) // get search word from URL
472
+      {
473
+        search = window.location.search;
474
+        search = search.substring(1);  // Remove the leading '?'
475
+        search = unescape(search);
476
+      }
477
+
478
+      search = search.replace(/^ +/, ""); // strip leading spaces
479
+      search = search.replace(/ +$/, ""); // strip trailing spaces
480
+      search = search.toLowerCase();
481
+      search = convertToId(search);
482
+
483
+      var resultRows = document.getElementsByTagName("div");
484
+      var matches = 0;
485
+
486
+      var i = 0;
487
+      while (i < resultRows.length)
488
+      {
489
+        var row = resultRows.item(i);
490
+        if (row.className == "SRResult")
491
+        {
492
+          var rowMatchName = row.id.toLowerCase();
493
+          rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
494
+
495
+          if (search.length<=rowMatchName.length &&
496
+             rowMatchName.substr(0, search.length)==search)
497
+          {
498
+            row.style.display = 'block';
499
+            matches++;
500
+          }
501
+          else
502
+          {
503
+            row.style.display = 'none';
504
+          }
505
+        }
506
+        i++;
507
+      }
508
+      document.getElementById("Searching").style.display='none';
509
+      if (matches == 0) // no results
510
+      {
511
+        document.getElementById("NoMatches").style.display='block';
512
+      }
513
+      else // at least one result
514
+      {
515
+        document.getElementById("NoMatches").style.display='none';
516
+      }
517
+      this.lastMatchCount = matches;
518
+      return true;
519
+    }
520
+
521
+    // return the first item with index index or higher that is visible
522
+    this.NavNext = function(index)
523
+    {
524
+      var focusItem;
525
+      while (1)
526
+      {
527
+        var focusName = 'Item'+index;
528
+        focusItem = document.getElementById(focusName);
529
+        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
530
+        {
531
+          break;
532
+        }
533
+        else if (!focusItem) // last element
534
+        {
535
+          break;
536
+        }
537
+        focusItem=null;
538
+        index++;
539
+      }
540
+      return focusItem;
541
+    }
542
+
543
+    this.NavPrev = function(index)
544
+    {
545
+      var focusItem;
546
+      while (1)
547
+      {
548
+        var focusName = 'Item'+index;
549
+        focusItem = document.getElementById(focusName);
550
+        if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
551
+        {
552
+          break;
553
+        }
554
+        else if (!focusItem) // last element
555
+        {
556
+          break;
557
+        }
558
+        focusItem=null;
559
+        index--;
560
+      }
561
+      return focusItem;
562
+    }
563
+
564
+    this.ProcessKeys = function(e)
565
+    {
566
+      if (e.type == "keydown")
567
+      {
568
+        this.repeatOn = false;
569
+        this.lastKey = e.keyCode;
570
+      }
571
+      else if (e.type == "keypress")
572
+      {
573
+        if (!this.repeatOn)
574
+        {
575
+          if (this.lastKey) this.repeatOn = true;
576
+          return false; // ignore first keypress after keydown
577
+        }
578
+      }
579
+      else if (e.type == "keyup")
580
+      {
581
+        this.lastKey = 0;
582
+        this.repeatOn = false;
583
+      }
584
+      return this.lastKey!=0;
585
+    }
586
+
587
+    this.Nav = function(evt,itemIndex)
588
+    {
589
+      var e  = (evt) ? evt : window.event; // for IE
590
+      if (e.keyCode==13) return true;
591
+      if (!this.ProcessKeys(e)) return false;
592
+
593
+      if (this.lastKey==38) // Up
594
+      {
595
+        var newIndex = itemIndex-1;
596
+        var focusItem = this.NavPrev(newIndex);
597
+        if (focusItem)
598
+        {
599
+          var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
600
+          if (child && child.style.display == 'block') // children visible
601
+          {
602
+            var n=0;
603
+            var tmpElem;
604
+            while (1) // search for last child
605
+            {
606
+              tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
607
+              if (tmpElem)
608
+              {
609
+                focusItem = tmpElem;
610
+              }
611
+              else // found it!
612
+              {
613
+                break;
614
+              }
615
+              n++;
616
+            }
617
+          }
618
+        }
619
+        if (focusItem)
620
+        {
621
+          focusItem.focus();
622
+        }
623
+        else // return focus to search field
624
+        {
625
+           parent.document.getElementById("MSearchField").focus();
626
+        }
627
+      }
628
+      else if (this.lastKey==40) // Down
629
+      {
630
+        var newIndex = itemIndex+1;
631
+        var focusItem;
632
+        var item = document.getElementById('Item'+itemIndex);
633
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
634
+        if (elem && elem.style.display == 'block') // children visible
635
+        {
636
+          focusItem = document.getElementById('Item'+itemIndex+'_c0');
637
+        }
638
+        if (!focusItem) focusItem = this.NavNext(newIndex);
639
+        if (focusItem)  focusItem.focus();
640
+      }
641
+      else if (this.lastKey==39) // Right
642
+      {
643
+        var item = document.getElementById('Item'+itemIndex);
644
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
645
+        if (elem) elem.style.display = 'block';
646
+      }
647
+      else if (this.lastKey==37) // Left
648
+      {
649
+        var item = document.getElementById('Item'+itemIndex);
650
+        var elem = this.FindChildElement(item.parentNode.parentNode.id);
651
+        if (elem) elem.style.display = 'none';
652
+      }
653
+      else if (this.lastKey==27) // Escape
654
+      {
655
+        parent.searchBox.CloseResultsWindow();
656
+        parent.document.getElementById("MSearchField").focus();
657
+      }
658
+      else if (this.lastKey==13) // Enter
659
+      {
660
+        return true;
661
+      }
662
+      return false;
663
+    }
664
+
665
+    this.NavChild = function(evt,itemIndex,childIndex)
666
+    {
667
+      var e  = (evt) ? evt : window.event; // for IE
668
+      if (e.keyCode==13) return true;
669
+      if (!this.ProcessKeys(e)) return false;
670
+
671
+      if (this.lastKey==38) // Up
672
+      {
673
+        if (childIndex>0)
674
+        {
675
+          var newIndex = childIndex-1;
676
+          document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
677
+        }
678
+        else // already at first child, jump to parent
679
+        {
680
+          document.getElementById('Item'+itemIndex).focus();
681
+        }
682
+      }
683
+      else if (this.lastKey==40) // Down
684
+      {
685
+        var newIndex = childIndex+1;
686
+        var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
687
+        if (!elem) // last child, jump to parent next parent
688
+        {
689
+          elem = this.NavNext(itemIndex+1);
690
+        }
691
+        if (elem)
692
+        {
693
+          elem.focus();
694
+        }
695
+      }
696
+      else if (this.lastKey==27) // Escape
697
+      {
698
+        parent.searchBox.CloseResultsWindow();
699
+        parent.document.getElementById("MSearchField").focus();
700
+      }
701
+      else if (this.lastKey==13) // Enter
702
+      {
703
+        return true;
704
+      }
705
+      return false;
706
+    }
707
+}
708
+
709
+function setKeyActions(elem,action)
710
+{
711
+  elem.setAttribute('onkeydown',action);
712
+  elem.setAttribute('onkeypress',action);
713
+  elem.setAttribute('onkeyup',action);
714
+}
715
+
716
+function setClassAttr(elem,attr)
717
+{
718
+  elem.setAttribute('class',attr);
719
+  elem.setAttribute('className',attr);
720
+}
721
+
722
+function createResults()
723
+{
724
+  var results = document.getElementById("SRResults");
725
+  for (var e=0; e<searchData.length; e++)
726
+  {
727
+    var id = searchData[e][0];
728
+    var srResult = document.createElement('div');
729
+    srResult.setAttribute('id','SR_'+id);
730
+    setClassAttr(srResult,'SRResult');
731
+    var srEntry = document.createElement('div');
732
+    setClassAttr(srEntry,'SREntry');
733
+    var srLink = document.createElement('a');
734
+    srLink.setAttribute('id','Item'+e);
735
+    setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
736
+    setClassAttr(srLink,'SRSymbol');
737
+    srLink.innerHTML = searchData[e][1][0];
738
+    srEntry.appendChild(srLink);
739
+    if (searchData[e][1].length==2) // single result
740
+    {
741
+      srLink.setAttribute('href',searchData[e][1][1][0]);
742
+      if (searchData[e][1][1][1])
743
+      {
744
+       srLink.setAttribute('target','_parent');
745
+      }
746
+      var srScope = document.createElement('span');
747
+      setClassAttr(srScope,'SRScope');
748
+      srScope.innerHTML = searchData[e][1][1][2];
749
+      srEntry.appendChild(srScope);
750
+    }
751
+    else // multiple results
752
+    {
753
+      srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
754
+      var srChildren = document.createElement('div');
755
+      setClassAttr(srChildren,'SRChildren');
756
+      for (var c=0; c<searchData[e][1].length-1; c++)
757
+      {
758
+        var srChild = document.createElement('a');
759
+        srChild.setAttribute('id','Item'+e+'_c'+c);
760
+        setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
761
+        setClassAttr(srChild,'SRScope');
762
+        srChild.setAttribute('href',searchData[e][1][c+1][0]);
763
+        if (searchData[e][1][c+1][1])
764
+        {
765
+         srChild.setAttribute('target','_parent');
766
+        }
767
+        srChild.innerHTML = searchData[e][1][c+1][2];
768
+        srChildren.appendChild(srChild);
769
+      }
770
+      srEntry.appendChild(srChildren);
771
+    }
772
+    srResult.appendChild(srEntry);
773
+    results.appendChild(srResult);
774
+  }
775
+}
776
+
777
+function init_search()
778
+{
779
+  var results = document.getElementById("MSearchSelectWindow");
780
+  for (var key in indexSectionLabels)
781
+  {
782
+    var link = document.createElement('a');
783
+    link.setAttribute('class','SelectItem');
784
+    link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
785
+    link.href='javascript:void(0)';
786
+    link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
787
+    results.appendChild(link);
788
+  }
789
+  searchBox.OnSelectItem(0);
790
+}
791
+

BIN
doc/en/html/search/search_l.png View File


BIN
doc/en/html/search/search_m.png View File


BIN
doc/en/html/search/search_r.png View File


+ 21
- 0
doc/en/html/search/searchdata.js View File

@@ -0,0 +1,21 @@
1
+var indexSectionsWithContent =
2
+{
3
+  0: "dlmopr",
4
+  1: "dm",
5
+  2: "lmopr"
6
+};
7
+
8
+var indexSectionNames =
9
+{
10
+  0: "all",
11
+  1: "classes",
12
+  2: "functions"
13
+};
14
+
15
+var indexSectionLabels =
16
+{
17
+  0: "All",
18
+  1: "Classes",
19
+  2: "Functions"
20
+};
21
+

BIN
doc/en/html/splitbar.png View File


BIN
doc/en/html/sync_off.png View File


BIN
doc/en/html/sync_on.png View File


BIN
doc/en/html/tab_a.png View File


BIN
doc/en/html/tab_b.png View File


BIN
doc/en/html/tab_h.png View File


BIN
doc/en/html/tab_s.png View File


+ 60
- 0
doc/en/html/tabs.css View File

@@ -0,0 +1,60 @@
1
+.tabs, .tabs2, .tabs3 {
2
+    background-image: url('tab_b.png');
3
+    width: 100%;
4
+    z-index: 101;
5
+    font-size: 13px;
6
+    font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
7
+}
8
+
9
+.tabs2 {
10
+    font-size: 10px;
11
+}
12
+.tabs3 {
13
+    font-size: 9px;
14
+}
15
+
16
+.tablist {
17
+    margin: 0;
18
+    padding: 0;
19
+    display: table;
20
+}
21
+
22
+.tablist li {
23
+    float: left;
24
+    display: table-cell;
25
+    background-image: url('tab_b.png');
26
+    line-height: 36px;
27
+    list-style: none;
28
+}
29
+
30
+.tablist a {
31
+    display: block;
32
+    padding: 0 20px;
33
+    font-weight: bold;
34
+    background-image:url('tab_s.png');
35
+    background-repeat:no-repeat;
36
+    background-position:right;
37
+    color: #283A5D;
38
+    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
39
+    text-decoration: none;
40
+    outline: none;
41
+}
42
+
43
+.tabs3 .tablist a {
44
+    padding: 0 10px;
45
+}
46
+
47
+.tablist a:hover {
48
+    background-image: url('tab_h.png');
49
+    background-repeat:repeat-x;
50
+    color: #fff;
51
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
52
+    text-decoration: none;
53
+}
54
+
55
+.tablist li.current a {
56
+    background-image: url('tab_a.png');
57
+    background-repeat:repeat-x;
58
+    color: #fff;
59
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
60
+}

+ 21
- 0
doc/en/latex/Makefile View File

@@ -0,0 +1,21 @@
1
+all: refman.pdf
2
+
3
+pdf: refman.pdf
4
+
5
+refman.pdf: clean refman.tex
6
+	pdflatex refman
7
+	makeindex refman.idx
8
+	pdflatex refman
9
+	latex_count=8 ; \
10
+	while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
11
+	    do \
12
+	      echo "Rerunning latex...." ;\
13
+	      pdflatex refman ;\
14
+	      latex_count=`expr $$latex_count - 1` ;\
15
+	    done
16
+	makeindex refman.idx
17
+	pdflatex refman
18
+
19
+
20
+clean:
21
+	rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf

+ 5
- 0
doc/en/latex/annotated.tex View File

@@ -0,0 +1,5 @@
1
+\section{Class List}
2
+Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList}
3
+\item\contentsline{section}{\hyperlink{class_dialog}{Dialog} }{\pageref{class_dialog}}{}
4
+\item\contentsline{section}{\hyperlink{class_main_window}{Main\+Window} }{\pageref{class_main_window}}{}
5
+\end{DoxyCompactList}

+ 197
- 0
doc/en/latex/class_dialog.eps View File

@@ -0,0 +1,197 @@
1
+%!PS-Adobe-2.0 EPSF-2.0
2
+%%Title: ClassName
3
+%%Creator: Doxygen
4
+%%CreationDate: Time
5
+%%For: 
6
+%Magnification: 1.00
7
+%%Orientation: Portrait
8
+%%BoundingBox: 0 0 500 606.060606
9
+%%Pages: 0
10
+%%BeginSetup
11
+%%EndSetup
12
+%%EndComments
13
+
14
+% ----- variables -----
15
+
16
+/boxwidth 0 def
17
+/boxheight 40 def
18
+/fontheight 24 def
19
+/marginwidth 10 def
20
+/distx 20 def
21
+/disty 40 def
22
+/boundaspect 0.825000 def  % aspect ratio of the BoundingBox (width/height)
23
+/boundx 500 def
24
+/boundy boundx boundaspect div def
25
+/xspacing 0 def
26
+/yspacing 0 def
27
+/rows 2 def
28
+/cols 1 def
29
+/scalefactor 0 def
30
+/boxfont /Times-Roman findfont fontheight scalefont def
31
+
32
+% ----- procedures -----
33
+
34
+/dotted { [1 4] 0 setdash } def
35
+/dashed { [5] 0 setdash } def
36
+/solid  { [] 0 setdash } def
37
+
38
+/max % result = MAX(arg1,arg2)
39
+{
40
+  /a exch def
41
+  /b exch def
42
+  a b gt {a} {b} ifelse
43
+} def
44
+
45
+/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2)
46
+{
47
+  0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max
48
+} def
49
+
50
+/cw % boxwidth = MAX(boxwidth, stringwidth(arg1))
51
+{
52
+  /str exch def
53
+  /boxwidth boxwidth str stringwidth pop max def
54
+} def
55
+
56
+/box % draws a box with text `arg1' at grid pos (arg2,arg3)
57
+{ gsave
58
+  2 setlinewidth
59
+  newpath
60
+  exch xspacing mul xoffset add
61
+  exch yspacing mul
62
+  moveto
63
+  boxwidth 0 rlineto 
64
+  0 boxheight rlineto 
65
+  boxwidth neg 0 rlineto 
66
+  0 boxheight neg rlineto 
67
+  closepath
68
+  dup stringwidth pop neg boxwidth add 2 div
69
+  boxheight fontheight 2 div sub 2 div
70
+  rmoveto show stroke
71
+  grestore
72
+} def  
73
+
74
+/mark
75
+{ newpath
76
+  exch xspacing mul xoffset add boxwidth add
77
+  exch yspacing mul
78
+  moveto
79
+  0 boxheight 4 div rlineto
80
+  boxheight neg 4 div boxheight neg 4 div rlineto
81
+  closepath
82
+  eofill
83
+  stroke
84
+} def
85
+
86
+/arrow
87
+{ newpath
88
+  moveto
89
+  3 -8 rlineto
90
+  -6 0 rlineto
91
+  3 8 rlineto
92
+  closepath
93
+  eofill
94
+  stroke
95
+} def
96
+
97
+/out % draws an output connector for the block at (arg1,arg2)
98
+{
99
+  newpath
100
+  exch xspacing mul xoffset add boxwidth 2 div add
101
+  exch yspacing mul boxheight add
102
+  /y exch def
103
+  /x exch def
104
+  x y moveto
105
+  0 disty 2 div rlineto 
106
+  stroke
107
+  1 eq { x y disty 2 div add arrow } if
108
+} def
109
+
110
+/in % draws an input connector for the block at (arg1,arg2)
111
+{
112
+  newpath
113
+  exch xspacing mul xoffset add boxwidth 2 div add
114
+  exch yspacing mul disty 2 div sub
115
+  /y exch def
116
+  /x exch def
117
+  x y moveto
118
+  0 disty 2 div rlineto
119
+  stroke
120
+  1 eq { x y disty 2 div add arrow } if
121
+} def
122
+
123
+/hedge
124
+{
125
+  exch xspacing mul xoffset add boxwidth 2 div add
126
+  exch yspacing mul boxheight 2 div sub
127
+  /y exch def
128
+  /x exch def
129
+  newpath
130
+  x y moveto
131
+  boxwidth 2 div distx add 0 rlineto
132
+  stroke
133
+  1 eq
134
+  { newpath x boxwidth 2 div distx add add y moveto
135
+    -8 3 rlineto
136
+    0 -6 rlineto
137
+    8 3 rlineto
138
+    closepath
139
+    eofill
140
+    stroke
141
+  } if
142
+} def
143
+
144
+/vedge
145
+{
146
+  /ye exch def
147
+  /ys exch def
148
+  /xs exch def
149
+  newpath
150
+  xs xspacing mul xoffset add boxwidth 2 div add dup
151
+  ys yspacing mul boxheight 2 div sub
152
+  moveto
153
+  ye yspacing mul boxheight 2 div sub
154
+  lineto
155
+  stroke
156
+} def
157
+
158
+/conn % connections the blocks from col `arg1' to `arg2' of row `arg3'
159
+{
160
+  /ys exch def
161
+  /xe exch def
162
+  /xs exch def
163
+  newpath
164
+  xs xspacing mul xoffset add boxwidth 2 div add
165
+  ys yspacing mul disty 2 div sub
166
+  moveto
167
+  xspacing xe xs sub mul 0
168
+  rlineto
169
+  stroke
170
+} def
171
+
172
+% ----- main ------
173
+
174
+boxfont setfont
175
+1 boundaspect scale
176
+(Dialog) cw
177
+(QDialog) cw
178
+/boxwidth boxwidth marginwidth 2 mul add def
179
+/xspacing boxwidth distx add def
180
+/yspacing boxheight disty add def
181
+/scalefactor 
182
+  boxwidth cols mul distx cols 1 sub mul add
183
+  boxheight rows mul disty rows 1 sub mul add boundaspect mul 
184
+  max def
185
+boundx scalefactor div boundy scalefactor div scale
186
+
187
+% ----- classes -----
188
+
189
+ (Dialog) 0.000000 0.000000 box
190
+ (QDialog) 0.000000 1.000000 box
191
+
192
+% ----- relations -----
193
+
194
+solid
195
+0 0.000000 0.000000 out
196
+solid
197
+1 0.000000 1.000000 in

+ 126
- 0
doc/en/latex/class_dialog.pdf View File

@@ -0,0 +1,126 @@
1
+%PDF-1.4
2
+%Çì�¢
3
+5 0 obj
4
+<</Length 6 0 R/Filter /FlateDecode>>
5
+stream
6
+xœ•N;N1í篊aü{ÜF ê€/€"²"Ê
7
+…\ŸÙÍ%ˆ¹ùý�é-w3ÒýsÅp$Á@
8
+3‰ålF¬º!¶Vзt24á&¹¢kŠ>ÒÍÃûëþc¸í;zì´¦V9‡TðåéO4ÙTĽ-ÇŠÏ7zù_§ûª¨"keËyî\ÿ*$w±æ?Êf1õ‚OßØbôÁØ»ò
9
+Xøsîœ/¹pˆH*Óh—Ĥ‰Í.‘ëŒí��ýûÎQ¼endstream
10
+endobj
11
+6 0 obj
12
+199
13
+endobj
14
+4 0 obj
15
+<</Type/Page/MediaBox [0 0 500 606.06]
16
+/Parent 3 0 R
17
+/Resources<</ProcSet[/PDF /Text]
18
+/ExtGState 10 0 R
19
+/Font 11 0 R
20
+>>
21
+/Contents 5 0 R
22
+>>
23
+endobj
24
+3 0 obj
25
+<< /Type /Pages /Kids [
26
+4 0 R
27
+] /Count 1
28
+>>
29
+endobj
30
+1 0 obj
31
+<</Type /Catalog /Pages 3 0 R
32
+/Metadata 13 0 R
33
+>>
34
+endobj
35
+7 0 obj
36
+<</Type/ExtGState
37
+/OPM 1>>endobj
38
+10 0 obj
39
+<</R7
40
+7 0 R>>
41
+endobj
42
+11 0 obj
43
+<</R8
44
+8 0 R>>
45
+endobj
46
+8 0 obj
47
+<</BaseFont/REYIJV+Times-Roman/FontDescriptor 9 0 R/Type/Font
48
+/FirstChar 68/LastChar 111/Widths[ 722 0 0 0 0 0 0 0 0 0 0 0
49
+0 722 0 0 0 0 0 0 0 0 0 0 0 0 0 0
50
+0 444 0 0 0 0 0 500 0 278 0 0 278 0 0 500]
51
+/Encoding/WinAnsiEncoding/Subtype/Type1>>
52
+endobj
53
+9 0 obj
54
+<</Type/FontDescriptor/FontName/REYIJV+Times-Roman/FontBBox[0 -218 701 683]/Flags 32
55
+/Ascent 683
56
+/CapHeight 676
57
+/Descent -218
58
+/ItalicAngle 0
59
+/StemV 105
60
+/MissingWidth 250
61
+/XHeight 460
62
+/CharSet(/D/Q/a/g/i/l/o)/FontFile3 12 0 R>>
63
+endobj
64
+12 0 obj
65
+<</Filter/FlateDecode
66
+/Subtype/Type1C/Length 1097>>stream
67
+xœ�’kL›uÆß—Bûw¦°ŽN m2uL6AÐ]“Ý Ët@ ã–Œ;”K}¹´tZ`C.…r èF)w(—�ŒŠ:FŒ“˜Á—]ò›?ì?øÍoçœ_ò<Ésš²·£hšæ‡¥gÊr�K™Ìū݇u£Yw;ÖƒDa
µžwð ‚jfYŸ>øö�îöEθóm\·ßy‹²§é“¡IFÏpiäQ/¯cþLÖÍœôÔ4¥Ä×Çç„$ñ¦ä"	�妧*$ïÛ†<Y“•)S(ƒÓ3U¹’×î’`æ´$P"•¥ª2rþKþUþ^Eñ˜€„ÔÐôŠ
68
+¡Þ£.QW(_ê3*ˆB¶(({Ûq†N¶;e·Ìy—‡kœØ;%&Ö×D÷nâ–M®aãÄõ#/""îÛG°3vÞy‰ÅXèýŒkÁú’ñ ÜØ+’SŒ–<13_°�ÑïÓË«"'k
69
+Œ°#ô_»,Óœ¶ƒx„‹íàϾ幕EË6¼@8‰xbGR+"Ý7¸k¥
·à"Úá�¿V{¡a)ûƒ ¯Q?±ñ}¡üKÑZĤȾēg¢£¡EJ*jè;±!%ÒEVhtþæ)öüÍÕåüP�¯)*+¤,m™ãHÌ•™4Ýy£ñ†`ˆ‚ëF™£.È„¤ìP��†®ÚJ]e½¨¢¡Rõ¨§¿Ë2Û£óȇÁù·âe*µ&äÈ%*p2nyj¼sþ;‘ËÝ]»zÜm:›‡Fmˆx?@FYI^QŽ&û¶
70
+P38)®åÁÒÄ0æO![¾D±€ýØõ–�éL´i<é1qX9+Œ�ã©¡ æF½J/ÌndtÙ€Ž_
71
+ð¼/ûI.Öh5šB­\¡UƒTMÅjÿÈl9¤ ð'ñ;«¿-ó¢ñþŽ°ÀrôøÅZ"¨†Wç6@†zôÂöŠ–Ê:‚±ó½aSÛ|æ²nM"¥{ïK×>Ÿ´5 M
=ŸL|¥¦ÝõÍsbÞ,™†¦ûîçg¶‰:Òšb!	]cÒb‚Üyõgë�azsÙs˜Ë±†?áÖœ�:óòÑÝá/¦-??ÝÌA8–¸ãÃä	#nä0‰?j>½tU4–Я~œ;&|t;&àO 	š¡©
72
+é¸dÓº(‡©üAfáúà@Þ€cYGd1©qaÙRˆ�„Ö4³tFþð~ØêùclftzÞø- 'Üö”;î:ÿº{bÝÕeÛÖ½’VÛ�°Š0æ•×ï0‡Bž¾ª¹º¹ª
73
+âĤÐV½’âËåÈ嶷ú²”JFÑ¥2™»ºz{•]
74
+ñkiúù:§ó .nå^­-n„¯ûŒW^™/+¹œ¨ Ž×TÕ\¥Ôߨ‰ïeó \£
,CNjaÀa®yßÆ›f=Ÿ¿ÑÎw¤¨¿ÓÅð
75
+endstream
76
+endobj
77
+13 0 obj
78
+<</Type/Metadata
79
+/Subtype/XML/Length 1397>>stream
80
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
81
+<?adobe-xap-filters esc="CRLF"?>
82
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
83
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
84
+<rdf:Description rdf:about='uuid:3b46d814-4baf-11f0-0000-49ceb34e1876' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.10'/>
85
+<rdf:Description rdf:about='uuid:3b46d814-4baf-11f0-0000-49ceb34e1876' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2015-06-15T15:14:02-04:00</xmp:ModifyDate>
86
+<xmp:CreateDate>2015-06-15T15:14:02-04:00</xmp:CreateDate>
87
+<xmp:CreatorTool>Doxygen</xmp:CreatorTool></rdf:Description>
88
+<rdf:Description rdf:about='uuid:3b46d814-4baf-11f0-0000-49ceb34e1876' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='uuid:3b46d814-4baf-11f0-0000-49ceb34e1876'/>
89
+<rdf:Description rdf:about='uuid:3b46d814-4baf-11f0-0000-49ceb34e1876' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>ClassName</rdf:li></rdf:Alt></dc:title><dc:creator><rdf:Seq><rdf:li>()</rdf:li></rdf:Seq></dc:creator></rdf:Description>
90
+</rdf:RDF>
91
+</x:xmpmeta>
92
+                                                                        
93
+                                                                        
94
+<?xpacket end='w'?>
95
+endstream
96
+endobj
97
+2 0 obj
98
+<</Producer(GPL Ghostscript 9.10)
99
+/CreationDate(D:20150615151402-04'00')
100
+/ModDate(D:20150615151402-04'00')
101
+/Title(ClassName)
102
+/Creator(Doxygen)
103
+/Author()>>endobj
104
+xref
105
+0 14
106
+0000000000 65535 f 
107
+0000000516 00000 n 
108
+0000003837 00000 n 
109
+0000000457 00000 n 
110
+0000000303 00000 n 
111
+0000000015 00000 n 
112
+0000000284 00000 n 
113
+0000000581 00000 n 
114
+0000000682 00000 n 
115
+0000000939 00000 n 
116
+0000000622 00000 n 
117
+0000000652 00000 n 
118
+0000001181 00000 n 
119
+0000002363 00000 n 
120
+trailer
121
+<< /Size 14 /Root 1 0 R /Info 2 0 R
122
+/ID [<74D351ABEBB590EA6052EAEB820AF82D><74D351ABEBB590EA6052EAEB820AF82D>]
123
+>>
124
+startxref
125
+4006
126
+%%EOF

+ 41
- 0
doc/en/latex/class_dialog.tex View File

@@ -0,0 +1,41 @@
1
+\hypertarget{class_dialog}{}\section{Dialog Class Reference}
2
+\label{class_dialog}\index{Dialog@{Dialog}}
3
+Inheritance diagram for Dialog\+:\begin{figure}[H]
4
+\begin{center}
5
+\leavevmode
6
+\includegraphics[height=2.000000cm]{class_dialog}
7
+\end{center}
8
+\end{figure}
9
+\subsection*{Public Member Functions}
10
+\begin{DoxyCompactItemize}
11
+\item 
12
+\hypertarget{class_dialog_acfa2063f9f962d394c6a645b6e7e08d8}{}{\bfseries Dialog} (Q\+Widget $\ast$parent=0)\label{class_dialog_acfa2063f9f962d394c6a645b6e7e08d8}
13
+
14
+\end{DoxyCompactItemize}
15
+\subsection*{Private Slots}
16
+\begin{DoxyCompactItemize}
17
+\item 
18
+\hypertarget{class_dialog_a2c224b09df763428bd778c660abf01ee}{}void {\bfseries on\+\_\+filter\+\_\+text\+Changed} (const Q\+String \&arg1)\label{class_dialog_a2c224b09df763428bd778c660abf01ee}
19
+
20
+\item 
21
+\hypertarget{class_dialog_af721e937c88c80e12dc0661568055972}{}void {\bfseries on\+\_\+push\+Button\+\_\+clicked} ()\label{class_dialog_af721e937c88c80e12dc0661568055972}
22
+
23
+\item 
24
+\hypertarget{class_dialog_a4a321a12f13d83cfa29ca342ee50f1cc}{}void {\bfseries load\+Items} (Q\+String path, int N)\label{class_dialog_a4a321a12f13d83cfa29ca342ee50f1cc}
25
+
26
+\end{DoxyCompactItemize}
27
+\subsection*{Private Attributes}
28
+\begin{DoxyCompactItemize}
29
+\item 
30
+\hypertarget{class_dialog_aaa4b5bfb9a0f64900d524f14bc32e6df}{}Ui\+::\+Dialog $\ast$ {\bfseries ui}\label{class_dialog_aaa4b5bfb9a0f64900d524f14bc32e6df}
31
+
32
+\item 
33
+\hypertarget{class_dialog_ac6aaff7aaceae7f5a5a8b3c81cde3b7e}{}Q\+String\+List {\bfseries my\+List}\label{class_dialog_ac6aaff7aaceae7f5a5a8b3c81cde3b7e}
34
+
35
+\end{DoxyCompactItemize}
36
+
37
+
38
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
39
+\item 
40
+dialog.\+h\item 
41
+dialog.\+cpp\end{DoxyCompactItemize}

+ 197
- 0
doc/en/latex/class_main_window.eps View File

@@ -0,0 +1,197 @@
1
+%!PS-Adobe-2.0 EPSF-2.0
2
+%%Title: ClassName
3
+%%Creator: Doxygen
4
+%%CreationDate: Time
5
+%%For: 
6
+%Magnification: 1.00
7
+%%Orientation: Portrait
8
+%%BoundingBox: 0 0 500 392.156863
9
+%%Pages: 0
10
+%%BeginSetup
11
+%%EndSetup
12
+%%EndComments
13
+
14
+% ----- variables -----
15
+
16
+/boxwidth 0 def
17
+/boxheight 40 def
18
+/fontheight 24 def
19
+/marginwidth 10 def
20
+/distx 20 def
21
+/disty 40 def
22
+/boundaspect 1.275000 def  % aspect ratio of the BoundingBox (width/height)
23
+/boundx 500 def
24
+/boundy boundx boundaspect div def
25
+/xspacing 0 def
26
+/yspacing 0 def
27
+/rows 2 def
28
+/cols 1 def
29
+/scalefactor 0 def
30
+/boxfont /Times-Roman findfont fontheight scalefont def
31
+
32
+% ----- procedures -----
33
+
34
+/dotted { [1 4] 0 setdash } def
35
+/dashed { [5] 0 setdash } def
36
+/solid  { [] 0 setdash } def
37
+
38
+/max % result = MAX(arg1,arg2)
39
+{
40
+  /a exch def
41
+  /b exch def
42
+  a b gt {a} {b} ifelse
43
+} def
44
+
45
+/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2)
46
+{
47
+  0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max
48
+} def
49
+
50
+/cw % boxwidth = MAX(boxwidth, stringwidth(arg1))
51
+{
52
+  /str exch def
53
+  /boxwidth boxwidth str stringwidth pop max def
54
+} def
55
+
56
+/box % draws a box with text `arg1' at grid pos (arg2,arg3)
57
+{ gsave
58
+  2 setlinewidth
59
+  newpath
60
+  exch xspacing mul xoffset add
61
+  exch yspacing mul
62
+  moveto
63
+  boxwidth 0 rlineto 
64
+  0 boxheight rlineto 
65
+  boxwidth neg 0 rlineto 
66
+  0 boxheight neg rlineto 
67
+  closepath
68
+  dup stringwidth pop neg boxwidth add 2 div
69
+  boxheight fontheight 2 div sub 2 div
70
+  rmoveto show stroke
71
+  grestore
72
+} def  
73
+
74
+/mark
75
+{ newpath
76
+  exch xspacing mul xoffset add boxwidth add
77
+  exch yspacing mul
78
+  moveto
79
+  0 boxheight 4 div rlineto
80
+  boxheight neg 4 div boxheight neg 4 div rlineto
81
+  closepath
82
+  eofill
83
+  stroke
84
+} def
85
+
86
+/arrow
87
+{ newpath
88
+  moveto
89
+  3 -8 rlineto
90
+  -6 0 rlineto
91
+  3 8 rlineto
92
+  closepath
93
+  eofill
94
+  stroke
95
+} def
96
+
97
+/out % draws an output connector for the block at (arg1,arg2)
98
+{
99
+  newpath
100
+  exch xspacing mul xoffset add boxwidth 2 div add
101
+  exch yspacing mul boxheight add
102
+  /y exch def
103
+  /x exch def
104
+  x y moveto
105
+  0 disty 2 div rlineto 
106
+  stroke
107
+  1 eq { x y disty 2 div add arrow } if
108
+} def
109
+
110
+/in % draws an input connector for the block at (arg1,arg2)
111
+{
112
+  newpath
113
+  exch xspacing mul xoffset add boxwidth 2 div add
114
+  exch yspacing mul disty 2 div sub
115
+  /y exch def
116
+  /x exch def
117
+  x y moveto
118
+  0 disty 2 div rlineto
119
+  stroke
120
+  1 eq { x y disty 2 div add arrow } if
121
+} def
122
+
123
+/hedge
124
+{
125
+  exch xspacing mul xoffset add boxwidth 2 div add
126
+  exch yspacing mul boxheight 2 div sub
127
+  /y exch def
128
+  /x exch def
129
+  newpath
130
+  x y moveto
131
+  boxwidth 2 div distx add 0 rlineto
132
+  stroke
133
+  1 eq
134
+  { newpath x boxwidth 2 div distx add add y moveto
135
+    -8 3 rlineto
136
+    0 -6 rlineto
137
+    8 3 rlineto
138
+    closepath
139
+    eofill
140
+    stroke
141
+  } if
142
+} def
143
+
144
+/vedge
145
+{
146
+  /ye exch def
147
+  /ys exch def
148
+  /xs exch def
149
+  newpath
150
+  xs xspacing mul xoffset add boxwidth 2 div add dup
151
+  ys yspacing mul boxheight 2 div sub
152
+  moveto
153
+  ye yspacing mul boxheight 2 div sub
154
+  lineto
155
+  stroke
156
+} def
157
+
158
+/conn % connections the blocks from col `arg1' to `arg2' of row `arg3'
159
+{
160
+  /ys exch def
161
+  /xe exch def
162
+  /xs exch def
163
+  newpath
164
+  xs xspacing mul xoffset add boxwidth 2 div add
165
+  ys yspacing mul disty 2 div sub
166
+  moveto
167
+  xspacing xe xs sub mul 0
168
+  rlineto
169
+  stroke
170
+} def
171
+
172
+% ----- main ------
173
+
174
+boxfont setfont
175
+1 boundaspect scale
176
+(MainWindow) cw
177
+(QMainWindow) cw
178
+/boxwidth boxwidth marginwidth 2 mul add def
179
+/xspacing boxwidth distx add def
180
+/yspacing boxheight disty add def
181
+/scalefactor 
182
+  boxwidth cols mul distx cols 1 sub mul add
183
+  boxheight rows mul disty rows 1 sub mul add boundaspect mul 
184
+  max def
185
+boundx scalefactor div boundy scalefactor div scale
186
+
187
+% ----- classes -----
188
+
189
+ (MainWindow) 0.000000 0.000000 box
190
+ (QMainWindow) 0.000000 1.000000 box
191
+
192
+% ----- relations -----
193
+
194
+solid
195
+0 0.000000 0.000000 out
196
+solid
197
+1 0.000000 1.000000 in

BIN
doc/en/latex/class_main_window.pdf View File


+ 141
- 0
doc/en/latex/class_main_window.tex View File

@@ -0,0 +1,141 @@
1
+\hypertarget{class_main_window}{}\section{Main\+Window Class Reference}
2
+\label{class_main_window}\index{Main\+Window@{Main\+Window}}
3
+Inheritance diagram for Main\+Window\+:\begin{figure}[H]
4
+\begin{center}
5
+\leavevmode
6
+\includegraphics[height=2.000000cm]{class_main_window}
7
+\end{center}
8
+\end{figure}
9
+\subsection*{Public Member Functions}
10
+\begin{DoxyCompactItemize}
11
+\item 
12
+\hyperlink{class_main_window_a8b244be8b7b7db1b08de2a2acb9409db}{Main\+Window} (Q\+Widget $\ast$parent=0)
13
+\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
14
+void \hyperlink{class_main_window_a1ef271ff94a2ae4a2e2d4ddc5f78f7e6}{Pixel\+Sort} (vector$<$ Q\+Rgb $>$ \&pixels)
15
+\begin{DoxyCompactList}\small\item\em Function that sorts pixels using Selection Sort. \end{DoxyCompactList}\item 
16
+void \hyperlink{class_main_window_acb4d4a3692e9edf987f35b21edf1427d}{Remove\+Noise} (Q\+Image \&final\+Image, const vector$<$ Q\+Image $>$ \&images)
17
+\begin{DoxyCompactList}\small\item\em Function that removes the noise from a set of images. For each position (i,j) of the pixels, insert the pixel in that position of each of the images in a pixels vector, sort the pixel vector, and finally set the median pixel to the new image in position (i,j) \end{DoxyCompactList}\end{DoxyCompactItemize}
18
+\subsection*{Private Slots}
19
+\begin{DoxyCompactItemize}
20
+\item 
21
+\hypertarget{class_main_window_a50277f5201555db09f53f5c721aedeea}{}void \hyperlink{class_main_window_a50277f5201555db09f53f5c721aedeea}{on\+\_\+btn\+Load\+Images\+\_\+clicked} ()\label{class_main_window_a50277f5201555db09f53f5c721aedeea}
22
+
23
+\begin{DoxyCompactList}\small\item\em Function that sets an image to a given label. \end{DoxyCompactList}\item 
24
+\hypertarget{class_main_window_aae2244407f60009048a97972eaa9d2a8}{}void \hyperlink{class_main_window_aae2244407f60009048a97972eaa9d2a8}{on\+\_\+btn\+Remove\+Noise\+\_\+clicked} ()\label{class_main_window_aae2244407f60009048a97972eaa9d2a8}
25
+
26
+\begin{DoxyCompactList}\small\item\em Function that invokes the function that removes the noise from the images and set the returned image in the G\+U\+I. \end{DoxyCompactList}\item 
27
+\hypertarget{class_main_window_ad495b5030e61fb55b8ab95c5a3a559d6}{}void \hyperlink{class_main_window_ad495b5030e61fb55b8ab95c5a3a559d6}{on\+\_\+btn\+Save\+Image\+\_\+clicked} ()\label{class_main_window_ad495b5030e61fb55b8ab95c5a3a559d6}
28
+
29
+\begin{DoxyCompactList}\small\item\em Function that saves the image without noise in the computer. \end{DoxyCompactList}\item 
30
+\hypertarget{class_main_window_ab37ac3fb919fcbb12543a5c25813e5a6}{}void \hyperlink{class_main_window_ab37ac3fb919fcbb12543a5c25813e5a6}{on\+\_\+act\+Load\+\_\+\+Images\+\_\+triggered} ()\label{class_main_window_ab37ac3fb919fcbb12543a5c25813e5a6}
31
+
32
+\begin{DoxyCompactList}\small\item\em Call \hyperlink{class_main_window_a50277f5201555db09f53f5c721aedeea}{on\+\_\+btn\+Load\+Images\+\_\+clicked()} from the buttons. \end{DoxyCompactList}\item 
33
+\hypertarget{class_main_window_ab6f80eeb70e84d0ae1295bd79a546468}{}void \hyperlink{class_main_window_ab6f80eeb70e84d0ae1295bd79a546468}{on\+\_\+act\+Remove\+Noise\+\_\+triggered} ()\label{class_main_window_ab6f80eeb70e84d0ae1295bd79a546468}
34
+
35
+\begin{DoxyCompactList}\small\item\em Call \hyperlink{class_main_window_aae2244407f60009048a97972eaa9d2a8}{on\+\_\+btn\+Remove\+Noise\+\_\+clicked()} from the buttons. \end{DoxyCompactList}\item 
36
+\hypertarget{class_main_window_a5939455a2e03188852db2182a0247f18}{}void \hyperlink{class_main_window_a5939455a2e03188852db2182a0247f18}{on\+\_\+act\+Save\+Image\+\_\+triggered} ()\label{class_main_window_a5939455a2e03188852db2182a0247f18}
37
+
38
+\begin{DoxyCompactList}\small\item\em Call \hyperlink{class_main_window_a5939455a2e03188852db2182a0247f18}{on\+\_\+act\+Save\+Image\+\_\+triggered()} from the buttons. \end{DoxyCompactList}\end{DoxyCompactItemize}
39
+\subsection*{Private Member Functions}
40
+\begin{DoxyCompactItemize}
41
+\item 
42
+void \hyperlink{class_main_window_a0e9e12ec3c93d49b12559ccf1d8fbb52}{load\+Images} (vector$<$ Q\+Image $>$ \&, Q\+String)
43
+\begin{DoxyCompactList}\small\item\em Function that loads multiple images from a directory path. \end{DoxyCompactList}\end{DoxyCompactItemize}
44
+\subsection*{Private Attributes}
45
+\begin{DoxyCompactItemize}
46
+\item 
47
+\hypertarget{class_main_window_a35466a70ed47252a0191168126a352a5}{}Ui\+::\+Main\+Window $\ast$ {\bfseries ui}\label{class_main_window_a35466a70ed47252a0191168126a352a5}
48
+
49
+\item 
50
+\hypertarget{class_main_window_acf4a478c904743c5739eaea26c329271}{}Q\+Image {\bfseries final\+Image}\label{class_main_window_acf4a478c904743c5739eaea26c329271}
51
+
52
+\item 
53
+\hypertarget{class_main_window_a9e8eec97dd2fc09af9141de7e262d343}{}vector$<$ Q\+Image $>$ {\bfseries images}\label{class_main_window_a9e8eec97dd2fc09af9141de7e262d343}
54
+
55
+\end{DoxyCompactItemize}
56
+
57
+
58
+\subsection{Constructor \& Destructor Documentation}
59
+\hypertarget{class_main_window_a8b244be8b7b7db1b08de2a2acb9409db}{}\index{Main\+Window@{Main\+Window}!Main\+Window@{Main\+Window}}
60
+\index{Main\+Window@{Main\+Window}!Main\+Window@{Main\+Window}}
61
+\subsubsection[{Main\+Window}]{\setlength{\rightskip}{0pt plus 5cm}Main\+Window\+::\+Main\+Window (
62
+\begin{DoxyParamCaption}
63
+\item[{Q\+Widget $\ast$}]{parent = {\ttfamily 0}}
64
+\end{DoxyParamCaption}
65
+)\hspace{0.3cm}{\ttfamily [explicit]}}\label{class_main_window_a8b244be8b7b7db1b08de2a2acb9409db}
66
+
67
+
68
+Constructor. 
69
+
70
+Destructor. Keyboard shortcuts Atajos del teclado
71
+
72
+Closes window with cmd + w Cierra la ventana con cmd + w
73
+
74
+Loads a image with cmd + o Carga una imagen con cmd + o
75
+
76
+Removes noise from a image with cmd + r Remueve el ruido de una imagen con cmd + r
77
+
78
+Saves an image without noise with cmd + s Guarda una imagen sin ruido con cmd + s 
79
+
80
+\subsection{Member Function Documentation}
81
+\hypertarget{class_main_window_a0e9e12ec3c93d49b12559ccf1d8fbb52}{}\index{Main\+Window@{Main\+Window}!load\+Images@{load\+Images}}
82
+\index{load\+Images@{load\+Images}!Main\+Window@{Main\+Window}}
83
+\subsubsection[{load\+Images}]{\setlength{\rightskip}{0pt plus 5cm}void Main\+Window\+::load\+Images (
84
+\begin{DoxyParamCaption}
85
+\item[{vector$<$ Q\+Image $>$ \&}]{images, }
86
+\item[{Q\+String}]{path}
87
+\end{DoxyParamCaption}
88
+)\hspace{0.3cm}{\ttfamily [private]}}\label{class_main_window_a0e9e12ec3c93d49b12559ccf1d8fbb52}
89
+
90
+
91
+Function that loads multiple images from a directory path. 
92
+
93
+
94
+\begin{DoxyParams}{Parameters}
95
+{\em images} & image vector for images with noise. \\
96
+\hline
97
+{\em path} & path of the directory with the images to load. \\
98
+\hline
99
+\end{DoxyParams}
100
+\hypertarget{class_main_window_a1ef271ff94a2ae4a2e2d4ddc5f78f7e6}{}\index{Main\+Window@{Main\+Window}!Pixel\+Sort@{Pixel\+Sort}}
101
+\index{Pixel\+Sort@{Pixel\+Sort}!Main\+Window@{Main\+Window}}
102
+\subsubsection[{Pixel\+Sort}]{\setlength{\rightskip}{0pt plus 5cm}void Main\+Window\+::\+Pixel\+Sort (
103
+\begin{DoxyParamCaption}
104
+\item[{vector$<$ Q\+Rgb $>$ \&}]{pixels}
105
+\end{DoxyParamCaption}
106
+)}\label{class_main_window_a1ef271ff94a2ae4a2e2d4ddc5f78f7e6}
107
+
108
+
109
+Function that sorts pixels using Selection Sort. 
110
+
111
+
112
+\begin{DoxyParams}{Parameters}
113
+{\em pixels} & pixels vector \\
114
+\hline
115
+\end{DoxyParams}
116
+\hypertarget{class_main_window_acb4d4a3692e9edf987f35b21edf1427d}{}\index{Main\+Window@{Main\+Window}!Remove\+Noise@{Remove\+Noise}}
117
+\index{Remove\+Noise@{Remove\+Noise}!Main\+Window@{Main\+Window}}
118
+\subsubsection[{Remove\+Noise}]{\setlength{\rightskip}{0pt plus 5cm}void Main\+Window\+::\+Remove\+Noise (
119
+\begin{DoxyParamCaption}
120
+\item[{Q\+Image \&}]{final\+Image, }
121
+\item[{const vector$<$ Q\+Image $>$ \&}]{images}
122
+\end{DoxyParamCaption}
123
+)}\label{class_main_window_acb4d4a3692e9edf987f35b21edf1427d}
124
+
125
+
126
+Function that removes the noise from a set of images. For each position (i,j) of the pixels, insert the pixel in that position of each of the images in a pixels vector, sort the pixel vector, and finally set the median pixel to the new image in position (i,j) 
127
+
128
+
129
+\begin{DoxyParams}{Parameters}
130
+{\em final\+Image} & Image with the noise removed \\
131
+\hline
132
+{\em images} & Vector of images to remove the noise \\
133
+\hline
134
+\end{DoxyParams}
135
+
136
+
137
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
138
+\item 
139
+mainwindow.\+h\item 
140
+Filter.\+cpp\item 
141
+mainwindow.\+cpp\end{DoxyCompactItemize}

+ 480
- 0
doc/en/latex/doxygen.sty View File

@@ -0,0 +1,480 @@
1
+\NeedsTeXFormat{LaTeX2e}
2
+\ProvidesPackage{doxygen}
3
+
4
+% Packages used by this style file
5
+\RequirePackage{alltt}
6
+\RequirePackage{array}
7
+\RequirePackage{calc}
8
+\RequirePackage{float}
9
+\RequirePackage{ifthen}
10
+\RequirePackage{verbatim}
11
+\RequirePackage[table]{xcolor}
12
+\RequirePackage{xtab}
13
+
14
+%---------- Internal commands used in this style file ----------------
15
+
16
+\newcommand{\ensurespace}[1]{%
17
+  \begingroup%
18
+    \setlength{\dimen@}{#1}%
19
+    \vskip\z@\@plus\dimen@%
20
+    \penalty -100\vskip\z@\@plus -\dimen@%
21
+    \vskip\dimen@%
22
+    \penalty 9999%
23
+    \vskip -\dimen@%
24
+    \vskip\z@skip% hide the previous |\vskip| from |\addvspace|
25
+  \endgroup%
26
+}
27
+
28
+\newcommand{\DoxyLabelFont}{}
29
+\newcommand{\entrylabel}[1]{%
30
+  {%
31
+    \parbox[b]{\labelwidth-4pt}{%
32
+      \makebox[0pt][l]{\DoxyLabelFont#1}%
33
+      \vspace{1.5\baselineskip}%
34
+    }%
35
+  }%
36
+}
37
+
38
+\newenvironment{DoxyDesc}[1]{%
39
+  \ensurespace{4\baselineskip}%
40
+  \begin{list}{}{%
41
+    \settowidth{\labelwidth}{20pt}%
42
+    \setlength{\parsep}{0pt}%
43
+    \setlength{\itemsep}{0pt}%
44
+    \setlength{\leftmargin}{\labelwidth+\labelsep}%
45
+    \renewcommand{\makelabel}{\entrylabel}%
46
+  }%
47
+  \item[#1]%
48
+}{%
49
+  \end{list}%
50
+}
51
+
52
+\newsavebox{\xrefbox}
53
+\newlength{\xreflength}
54
+\newcommand{\xreflabel}[1]{%
55
+  \sbox{\xrefbox}{#1}%
56
+  \setlength{\xreflength}{\wd\xrefbox}%
57
+  \ifthenelse{\xreflength>\labelwidth}{%
58
+    \begin{minipage}{\textwidth}%
59
+      \setlength{\parindent}{0pt}%
60
+      \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
61
+    \end{minipage}%
62
+  }{%
63
+   \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
64
+  }%
65
+}
66
+
67
+%---------- Commands used by doxygen LaTeX output generator ----------
68
+
69
+% Used by <pre> ... </pre>
70
+\newenvironment{DoxyPre}{%
71
+  \small%
72
+  \begin{alltt}%
73
+}{%
74
+  \end{alltt}%
75
+  \normalsize%
76
+}
77
+
78
+% Used by @code ... @endcode
79
+\newenvironment{DoxyCode}{%
80
+  \par%
81
+  \scriptsize%
82
+  \begin{alltt}%
83
+}{%
84
+  \end{alltt}%
85
+  \normalsize%
86
+}
87
+
88
+% Used by @example, @include, @includelineno and @dontinclude
89
+\newenvironment{DoxyCodeInclude}{%
90
+  \DoxyCode%
91
+}{%
92
+  \endDoxyCode%
93
+}
94
+
95
+% Used by @verbatim ... @endverbatim
96
+\newenvironment{DoxyVerb}{%
97
+  \footnotesize%
98
+  \verbatim%
99
+}{%
100
+  \endverbatim%
101
+  \normalsize%
102
+}
103
+
104
+% Used by @verbinclude
105
+\newenvironment{DoxyVerbInclude}{%
106
+  \DoxyVerb%
107
+}{%
108
+  \endDoxyVerb%
109
+}
110
+
111
+% Used by numbered lists (using '-#' or <ol> ... </ol>)
112
+\newenvironment{DoxyEnumerate}{%
113
+  \enumerate%
114
+}{%
115
+  \endenumerate%
116
+}
117
+
118
+% Used by bullet lists (using '-', @li, @arg, or <ul> ... </ul>)
119
+\newenvironment{DoxyItemize}{%
120
+  \itemize%
121
+}{%
122
+  \enditemize%
123
+}
124
+
125
+% Used by description lists (using <dl> ... </dl>)
126
+\newenvironment{DoxyDescription}{%
127
+  \description%
128
+}{%
129
+  \enddescription%
130
+}
131
+
132
+% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
133
+% (only if caption is specified)
134
+\newenvironment{DoxyImage}{%
135
+  \begin{figure}[H]%
136
+    \begin{center}%
137
+}{%
138
+    \end{center}%
139
+  \end{figure}%
140
+}
141
+
142
+% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
143
+% (only if no caption is specified)
144
+\newenvironment{DoxyImageNoCaption}{%
145
+  \begin{center}%
146
+}{%
147
+  \end{center}%
148
+}
149
+
150
+% Used by @attention
151
+\newenvironment{DoxyAttention}[1]{%
152
+  \begin{DoxyDesc}{#1}%
153
+}{%
154
+  \end{DoxyDesc}%
155
+}
156
+
157
+% Used by @author and @authors
158
+\newenvironment{DoxyAuthor}[1]{%
159
+  \begin{DoxyDesc}{#1}%
160
+}{%
161
+  \end{DoxyDesc}%
162
+}
163
+
164
+% Used by @date
165
+\newenvironment{DoxyDate}[1]{%
166
+  \begin{DoxyDesc}{#1}%
167
+}{%
168
+  \end{DoxyDesc}%
169
+}
170
+
171
+% Used by @invariant
172
+\newenvironment{DoxyInvariant}[1]{%
173
+  \begin{DoxyDesc}{#1}%
174
+}{%
175
+  \end{DoxyDesc}%
176
+}
177
+
178
+% Used by @note
179
+\newenvironment{DoxyNote}[1]{%
180
+  \begin{DoxyDesc}{#1}%
181
+}{%
182
+  \end{DoxyDesc}%
183
+}
184
+
185
+% Used by @post
186
+\newenvironment{DoxyPostcond}[1]{%
187
+  \begin{DoxyDesc}{#1}%
188
+}{%
189
+  \end{DoxyDesc}%
190
+}
191
+
192
+% Used by @pre
193
+\newenvironment{DoxyPrecond}[1]{%
194
+  \begin{DoxyDesc}{#1}%
195
+}{%
196
+  \end{DoxyDesc}%
197
+}
198
+
199
+% Used by @copyright
200
+\newenvironment{DoxyCopyright}[1]{%
201
+  \begin{DoxyDesc}{#1}%
202
+}{%
203
+  \end{DoxyDesc}%
204
+}
205
+
206
+% Used by @remark
207
+\newenvironment{DoxyRemark}[1]{%
208
+  \begin{DoxyDesc}{#1}%
209
+}{%
210
+  \end{DoxyDesc}%
211
+}
212
+
213
+% Used by @return and @returns
214
+\newenvironment{DoxyReturn}[1]{%
215
+  \begin{DoxyDesc}{#1}%
216
+}{%
217
+  \end{DoxyDesc}%
218
+}
219
+
220
+% Used by @since
221
+\newenvironment{DoxySince}[1]{%
222
+  \begin{DoxyDesc}{#1}%
223
+}{%
224
+  \end{DoxyDesc}%
225
+}
226
+
227
+% Used by @see
228
+\newenvironment{DoxySeeAlso}[1]{%
229
+  \begin{DoxyDesc}{#1}%
230
+}{%
231
+  \end{DoxyDesc}%
232
+}
233
+
234
+% Used by @version
235
+\newenvironment{DoxyVersion}[1]{%
236
+  \begin{DoxyDesc}{#1}%
237
+}{%
238
+  \end{DoxyDesc}%
239
+}
240
+
241
+% Used by @warning
242
+\newenvironment{DoxyWarning}[1]{%
243
+  \begin{DoxyDesc}{#1}%
244
+}{%
245
+  \end{DoxyDesc}%
246
+}
247
+
248
+% Used by @internal
249
+\newenvironment{DoxyInternal}[1]{%
250
+  \paragraph*{#1}%
251
+}{%
252
+}
253
+
254
+% Used by @par and @paragraph
255
+\newenvironment{DoxyParagraph}[1]{%
256
+  \begin{list}{}{%
257
+    \settowidth{\labelwidth}{40pt}%
258
+    \setlength{\leftmargin}{\labelwidth}%
259
+    \setlength{\parsep}{0pt}%
260
+    \setlength{\itemsep}{-4pt}%
261
+    \renewcommand{\makelabel}{\entrylabel}%
262
+  }%
263
+  \item[#1]%
264
+}{%
265
+  \end{list}%
266
+}
267
+
268
+% Used by parameter lists
269
+\newenvironment{DoxyParams}[2][]{%
270
+    \par%
271
+    \tabletail{\hline}%
272
+    \tablelasttail{\hline}%
273
+    \tablefirsthead{}%
274
+    \tablehead{}%
275
+    \ifthenelse{\equal{#1}{}}%
276
+    {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
277
+     \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
278
+                        p{0.805\textwidth}|}}%
279
+    {\ifthenelse{\equal{#1}{1}}%
280
+      {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
281
+       \begin{xtabular}{|>{\centering}p{0.10\textwidth}|%
282
+                         >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
283
+                         p{0.678\textwidth}|}}%
284
+      {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}%
285
+       \begin{xtabular}{|>{\centering}p{0.10\textwidth}|%
286
+                         >{\centering\hspace{0pt}}p{0.15\textwidth}|%
287
+                         >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
288
+                         p{0.501\textwidth}|}}%
289
+    }\hline%
290
+}{%
291
+    \end{xtabular}%
292
+    \tablefirsthead{}%
293
+    \vspace{6pt}%
294
+}
295
+
296
+% Used for fields of simple structs
297
+\newenvironment{DoxyFields}[1]{%
298
+    \par%
299
+    \tabletail{\hline}%
300
+    \tablelasttail{\hline}%
301
+    \tablehead{}%
302
+    \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
303
+    \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|%
304
+                         p{0.15\textwidth}|%
305
+                         p{0.63\textwidth}|}%
306
+    \hline%
307
+}{%
308
+    \end{xtabular}%
309
+    \tablefirsthead{}%
310
+    \vspace{6pt}%
311
+}
312
+
313
+% Used for parameters within a detailed function description
314
+\newenvironment{DoxyParamCaption}{%
315
+  \renewcommand{\item}[2][]{##1 {\em ##2}}%
316
+}{%
317
+}
318
+
319
+% Used by return value lists
320
+\newenvironment{DoxyRetVals}[1]{%
321
+    \par%
322
+    \tabletail{\hline}%
323
+    \tablelasttail{\hline}%
324
+    \tablehead{}%
325
+    \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
326
+    \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
327
+                          p{0.705\textwidth}|}%
328
+    \hline%
329
+}{%
330
+    \end{xtabular}%
331
+    \tablefirsthead{}%
332
+    \vspace{6pt}%
333
+}
334
+
335
+% Used by exception lists
336
+\newenvironment{DoxyExceptions}[1]{%
337
+    \par%
338
+    \tabletail{\hline}%
339
+    \tablelasttail{\hline}%
340
+    \tablehead{}%
341
+    \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
342
+    \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
343
+                          p{0.705\textwidth}|}%
344
+    \hline%
345
+}{%
346
+    \end{xtabular}%
347
+    \tablefirsthead{}%
348
+    \vspace{6pt}%
349
+}
350
+
351
+% Used by template parameter lists
352
+\newenvironment{DoxyTemplParams}[1]{%
353
+    \par%
354
+    \tabletail{\hline}%
355
+    \tablelasttail{\hline}%
356
+    \tablehead{}%
357
+    \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}%
358
+    \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|%
359
+                          p{0.705\textwidth}|}%
360
+    \hline%
361
+}{%
362
+    \end{xtabular}%
363
+    \tablefirsthead{}%
364
+    \vspace{6pt}%
365
+}
366
+
367
+% Used for member lists
368
+\newenvironment{DoxyCompactItemize}{%
369
+  \begin{itemize}%
370
+    \setlength{\itemsep}{-3pt}%
371
+    \setlength{\parsep}{0pt}%
372
+    \setlength{\topsep}{0pt}%
373
+    \setlength{\partopsep}{0pt}%
374
+}{%
375
+  \end{itemize}%
376
+}
377
+
378
+% Used for member descriptions
379
+\newenvironment{DoxyCompactList}{%
380
+  \begin{list}{}{%
381
+    \setlength{\leftmargin}{0.5cm}%
382
+    \setlength{\itemsep}{0pt}%
383
+    \setlength{\parsep}{0pt}%
384
+    \setlength{\topsep}{0pt}%
385
+    \renewcommand{\makelabel}{\hfill}%
386
+  }%
387
+}{%
388
+  \end{list}%
389
+}
390
+
391
+% Used for reference lists (@bug, @deprecated, @todo, etc.)
392
+\newenvironment{DoxyRefList}{%
393
+  \begin{list}{}{%
394
+    \setlength{\labelwidth}{10pt}%
395
+    \setlength{\leftmargin}{\labelwidth}%
396
+    \addtolength{\leftmargin}{\labelsep}%
397
+    \renewcommand{\makelabel}{\xreflabel}%
398
+  }%
399
+}{%
400
+  \end{list}%
401
+}
402
+
403
+% Used by @bug, @deprecated, @todo, etc.
404
+\newenvironment{DoxyRefDesc}[1]{%
405
+  \begin{list}{}{%
406
+    \renewcommand\makelabel[1]{\textbf{##1}}%
407
+    \settowidth\labelwidth{\makelabel{#1}}%
408
+    \setlength\leftmargin{\labelwidth+\labelsep}%
409
+  }%
410
+}{%
411
+  \end{list}%
412
+}
413
+
414
+% Used by parameter lists and simple sections
415
+\newenvironment{Desc}
416
+{\begin{list}{}{%
417
+    \settowidth{\labelwidth}{40pt}%
418
+    \setlength{\leftmargin}{\labelwidth}%
419
+    \setlength{\parsep}{0pt}%
420
+    \setlength{\itemsep}{-4pt}%
421
+    \renewcommand{\makelabel}{\entrylabel}%
422
+  }
423
+}{%
424
+  \end{list}%
425
+}
426
+
427
+% Used by tables
428
+\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
429
+\newlength{\tmplength}%
430
+\newenvironment{TabularC}[1]%
431
+{%
432
+\setlength{\tmplength}%
433
+     {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}%
434
+      \par\begin{xtabular*}{\linewidth}%
435
+             {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}%
436
+}%
437
+{\end{xtabular*}\par}%
438
+
439
+% Used by nested tables
440
+\newenvironment{TabularNC}[1]%
441
+{%
442
+\setlength{\tmplength}%
443
+     {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}%
444
+      \par\begin{tabular*}{\linewidth}%
445
+             {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}%
446
+}%
447
+{\end{tabular*}\par}%
448
+
449
+% Used for member group headers
450
+\newenvironment{Indent}{%
451
+  \begin{list}{}{%
452
+    \setlength{\leftmargin}{0.5cm}%
453
+  }%
454
+  \item[]\ignorespaces%
455
+}{%
456
+  \unskip%
457
+  \end{list}%
458
+}
459
+
460
+% Used when hyperlinks are turned off
461
+\newcommand{\doxyref}[3]{%
462
+  \textbf{#1} (\textnormal{#2}\,\pageref{#3})%
463
+}
464
+
465
+% Used by @addindex
466
+\newcommand{\lcurly}{\{}
467
+\newcommand{\rcurly}{\}}
468
+
469
+% Used for syntax highlighting
470
+\definecolor{comment}{rgb}{0.5,0.0,0.0}
471
+\definecolor{keyword}{rgb}{0.0,0.5,0.0}
472
+\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
473
+\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
474
+\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
475
+\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
476
+\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
477
+\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
478
+\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
479
+\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
480
+\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}

+ 9
- 0
doc/en/latex/hierarchy.tex View File

@@ -0,0 +1,9 @@
1
+\section{Class Hierarchy}
2
+This inheritance list is sorted roughly, but not completely, alphabetically\+:\begin{DoxyCompactList}
3
+\item Q\+Dialog\begin{DoxyCompactList}
4
+\item \contentsline{section}{Dialog}{\pageref{class_dialog}}{}
5
+\end{DoxyCompactList}
6
+\item Q\+Main\+Window\begin{DoxyCompactList}
7
+\item \contentsline{section}{Main\+Window}{\pageref{class_main_window}}{}
8
+\end{DoxyCompactList}
9
+\end{DoxyCompactList}

+ 0
- 0
doc/en/latex/refman.tex View File


Some files were not shown because too many files changed in this diff