Jose Ortiz 9 anni fa
commit
c5e8a90917
100 ha cambiato i file con 9457 aggiunte e 0 eliminazioni
  1. 542
    0
      README.md
  2. 25
    0
      SimpleImageEditor.pro
  3. 1502
    0
      arrays-SimpleImageEditor.html
  4. 544
    0
      arrays-SimpleImageEditor.md
  5. 102
    0
      doc/en/html/annotated.html
  6. BIN
      doc/en/html/arrowdown.png
  7. BIN
      doc/en/html/arrowright.png
  8. BIN
      doc/en/html/bc_s.png
  9. BIN
      doc/en/html/bdwn.png
  10. 213
    0
      doc/en/html/bk_2mainwindow_8h_source.html
  11. 156
    0
      doc/en/html/class_main_window-members.html
  12. 497
    0
      doc/en/html/class_main_window.html
  13. BIN
      doc/en/html/class_main_window.png
  14. 106
    0
      doc/en/html/classes.html
  15. BIN
      doc/en/html/closed.png
  16. 103
    0
      doc/en/html/dir_cf6ae5303f77eb2b244aeafbd603daac.html
  17. BIN
      doc/en/html/doc.png
  18. 1449
    0
      doc/en/html/doxygen.css
  19. BIN
      doc/en/html/doxygen.png
  20. 97
    0
      doc/en/html/dynsections.js
  21. 101
    0
      doc/en/html/files.html
  22. BIN
      doc/en/html/folderclosed.png
  23. BIN
      doc/en/html/folderopen.png
  24. 173
    0
      doc/en/html/functions.html
  25. 173
    0
      doc/en/html/functions_func.html
  26. 104
    0
      doc/en/html/hierarchy.html
  27. 89
    0
      doc/en/html/index.html
  28. 68
    0
      doc/en/html/jquery.js
  29. 209
    0
      doc/en/html/mainwindow_8h_source.html
  30. BIN
      doc/en/html/nav_f.png
  31. BIN
      doc/en/html/nav_g.png
  32. BIN
      doc/en/html/nav_h.png
  33. BIN
      doc/en/html/open.png
  34. 26
    0
      doc/en/html/search/all_0.html
  35. 4
    0
      doc/en/html/search/all_0.js
  36. 26
    0
      doc/en/html/search/all_1.html
  37. 4
    0
      doc/en/html/search/all_1.js
  38. 26
    0
      doc/en/html/search/all_2.html
  39. 4
    0
      doc/en/html/search/all_2.js
  40. 26
    0
      doc/en/html/search/all_3.html
  41. 4
    0
      doc/en/html/search/all_3.js
  42. 26
    0
      doc/en/html/search/all_4.html
  43. 4
    0
      doc/en/html/search/all_4.js
  44. 26
    0
      doc/en/html/search/all_5.html
  45. 20
    0
      doc/en/html/search/all_5.js
  46. 26
    0
      doc/en/html/search/all_6.html
  47. 4
    0
      doc/en/html/search/all_6.js
  48. 26
    0
      doc/en/html/search/all_7.html
  49. 4
    0
      doc/en/html/search/all_7.js
  50. 26
    0
      doc/en/html/search/classes_0.html
  51. 4
    0
      doc/en/html/search/classes_0.js
  52. BIN
      doc/en/html/search/close.png
  53. 26
    0
      doc/en/html/search/functions_0.html
  54. 4
    0
      doc/en/html/search/functions_0.js
  55. 26
    0
      doc/en/html/search/functions_1.html
  56. 4
    0
      doc/en/html/search/functions_1.js
  57. 26
    0
      doc/en/html/search/functions_2.html
  58. 4
    0
      doc/en/html/search/functions_2.js
  59. 26
    0
      doc/en/html/search/functions_3.html
  60. 4
    0
      doc/en/html/search/functions_3.js
  61. 26
    0
      doc/en/html/search/functions_4.html
  62. 4
    0
      doc/en/html/search/functions_4.js
  63. 26
    0
      doc/en/html/search/functions_5.html
  64. 20
    0
      doc/en/html/search/functions_5.js
  65. 26
    0
      doc/en/html/search/functions_6.html
  66. 4
    0
      doc/en/html/search/functions_6.js
  67. 26
    0
      doc/en/html/search/functions_7.html
  68. 4
    0
      doc/en/html/search/functions_7.js
  69. BIN
      doc/en/html/search/mag_sel.png
  70. 12
    0
      doc/en/html/search/nomatches.html
  71. 271
    0
      doc/en/html/search/search.css
  72. 791
    0
      doc/en/html/search/search.js
  73. BIN
      doc/en/html/search/search_l.png
  74. BIN
      doc/en/html/search/search_m.png
  75. BIN
      doc/en/html/search/search_r.png
  76. 21
    0
      doc/en/html/search/searchdata.js
  77. BIN
      doc/en/html/splitbar.png
  78. BIN
      doc/en/html/sync_off.png
  79. BIN
      doc/en/html/sync_on.png
  80. BIN
      doc/en/html/tab_a.png
  81. BIN
      doc/en/html/tab_b.png
  82. BIN
      doc/en/html/tab_h.png
  83. BIN
      doc/en/html/tab_s.png
  84. 60
    0
      doc/en/html/tabs.css
  85. 21
    0
      doc/en/latex/Makefile
  86. 4
    0
      doc/en/latex/annotated.tex
  87. 203
    0
      doc/en/latex/class_main_window.eps
  88. BIN
      doc/en/latex/class_main_window.pdf
  89. 309
    0
      doc/en/latex/class_main_window.tex
  90. 11
    0
      doc/en/latex/dir_cf6ae5303f77eb2b244aeafbd603daac.tex
  91. 480
    0
      doc/en/latex/doxygen.sty
  92. 7
    0
      doc/en/latex/hierarchy.tex
  93. 157
    0
      doc/en/latex/refman.tex
  94. 102
    0
      doc/es/html/annotated.html
  95. BIN
      doc/es/html/arrowdown.png
  96. BIN
      doc/es/html/arrowright.png
  97. BIN
      doc/es/html/bc_s.png
  98. BIN
      doc/es/html/bdwn.png
  99. 213
    0
      doc/es/html/bk_2mainwindow_8h_source.html
  100. 0
    0
      doc/es/html/class_main_window-members.html

+ 542
- 0
README.md Vedi File

@@ -0,0 +1,542 @@
1
+[English](#markdown-header-arrays-simple-image-editor) | [Español](#markdown-header-arreglos-editor-de-imagenes-simple)
2
+
3
+
4
+# Arreglos - Editor de Imagenes Simple
5
+
6
+![main1.png](images/main1.png)
7
+![main2.png](images/main2.png)
8
+![main3.png](images/main3.png)
9
+
10
+
11
+Los arreglos de datos (*arrays*) nos facilitan guardar y trabajar con grupos de datos del mismo tipo. Los datos se guardan en espacios de memoria consecutivos a los que se puede acceder utilizando el nombre del arreglo e índices o suscritos que indican la posición en que se encuentra el dato. Las estructuras de repetición nos proveen una manera simple de acceder a los datos de un arreglo. En la experiencia de laboratorio de hoy diseñarás e implementarás algoritmos simples de procesamiento de imágenes para practicar el uso de ciclos anidados en la manipulación de arreglos bi-dimensionales. 
12
+
13
+##Objetivos:
14
+
15
+1. Practicar el acceder y manipular datos en un arreglo.
16
+
17
+2. Aplicar ciclos anidados para implementar algoritmos simples de procesamiento de imágenes.
18
+
19
+3. Utilizar expresiones aritméticas para transformar colores de pixeles.
20
+
21
+4. Acceder pixeles en una imagen y descomponerlos en sus componentes rojo, azul y verde.
22
+
23
+
24
+##Pre-Lab:
25
+
26
+Antes de llegar al laboratorio debes:
27
+
28
+1. Conseguir y tener disponible uno o más archivos con una imagen a color en alguno de los siguientes formatos: `tiff, jpg, png`.
29
+
30
+2. Haber repasado los conceptos básicos relacionados a estructuras de repetición y ciclos anidados.
31
+
32
+3. Conocer las funciones básicas de `QImage` para manipular los pixeles de las imágenes. 
33
+
34
+4. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
35
+
36
+5. Haber tomado el quiz Pre-Lab que se encuentra en Moodle.
37
+
38
+---
39
+
40
+---
41
+
42
+
43
+##Edición de imágenes
44
+
45
+En esta experiencia de laboratorio, trabajarás con varios conceptos y destrezas básicas de edición de imágenes. Te proveemos un interface gráfico (GUI) simple que le permite al usuario cargar una imagen e invertirla vertical y horizontalmente.  Tu tarea es crear e implementar una función para convertir una imagen a color a una imagen con tonos de gris, y otra función que convierta una imagen a color a una imagen en blanco y negro.
46
+
47
+###Píxeles
48
+
49
+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 1). A esta combinación se le llama el *RGB* del color por las siglas de "Red-Green-Blue". Por ejemplo un píxel de color rojo (puro) tiene una representación RGB `0x00ff0000`, mientras que un píxel de color blanco tiene una representación RGB de `0x00FFFFFF` (ya que el color blanco es la combinación de los tonos rojo, verde y azul en toda su intensidad).
50
+
51
+---
52
+
53
+![figure1.png](images/figure1.png)
54
+
55
+**Figura 1.** Distribución de bits para las tonalidades de rojo, verde y azul dentro de la representación RGB.  Cada tonalidad puede tener valores entre 0x00 (los ocho bits en 0) y 0xFF (los 8 bits en 1). 
56
+
57
+---
58
+
59
+En `Qt` se utiliza el tipo `QRgb` para representar valores `RGB`.  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.
60
+
61
+###Biblioteca
62
+
63
+La experiencia de laboratorio de hoy utilizará la clase `QImage`. Esta clase permite acceder a los datos de los pixeles 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.
64
+
65
+El código que te proveemos contiene los siguiente objetos de la clase `QImage`:
66
+
67
+* `originalImage`   // contiene la información de la imagen original que vas a editar
68
+*  `editedImage`  // contendrá la imagen editada
69
+
70
+Los objetos de clase `QImage` tienen los siguiente métodos que serán útiles para la experiencia de laboratorio de hoy:
71
+
72
+
73
+* `width()`      // devuelve el valor entero del ancho de la imagen
74
+* `height()`      // devuelve el valor entero de la altura de la imagen
75
+* `pixel(i, j)`       // devuelve el `QRgb` del píxel en la posición `(i,j)`
76
+* `setPixel(i,j, pixel)`   // modifica el valor del píxel en la posición `(i, j)` al valor píxel `QRgb`
77
+
78
+Las siguientes funciones son útiles para trabajar con datos de tipo `QRgb`:
79
+
80
+
81
+* `qRed(pixel)`   // devuelve el tono del color rojo del píxel
82
+* `qGreen(pixel)` // devuelve el tono del color verde del píxel
83
+* `qBlue(pixel)`  // devuelve el tono del color azul del píxel
84
+* `qRgb(int red, int green, int blue)` // devuelve un píxel `QRgb` compuesto de los valores de rojo, verde y azul recibidos.
85
+
86
+
87
+####Ejemplos:
88
+
89
+1. `QRgb myRgb = qRgb(0xff, 0x00, 0xff);`: Asigna a `myRgb` el valor `0xff00ff` que representa el color ![figure2.png](images/figure2.png)
90
+
91
+    Nota que el valor `0xff00ff` representa los valores `0xff`, `0x0`, `0xff`, que corresponden a los componentes rojo, verde y azul de `myRgb`.
92
+
93
+2. Si la siguiente imagen `4 x 4` de píxeles representa el objeto `originalImage`,
94
+
95
+    ![ejemplo.png](images/ejemplo.png)
96
+
97
+  entonces `originalImage.pixel(2,1)` devuelve un valor `rgb` que representa el color azul (`0x0000ff`).
98
+
99
+3. La siguiente instrucción asigna el color rojo al píxel en posición `(2,3)` en la imagen editada:
100
+
101
+  `editedImage.setPixel(2,3,qRgb(0xff,0x00,0x00));`.
102
+
103
+4. La siguiente instrucción le asigna a `greenContent` el valor del tono de verde que contiene el pixel `(1,1)` de  `originalImage`:
104
+
105
+  `int greenContent = qGreen(originalImage.pixel(1,1));`.
106
+
107
+
108
+5. El siguiente programa crea un objeto de clase `QImage` e imprime los componentes rojo, verde y azul del pixel en el centro de la imagen. La imagen utilizada es la que se especifica dentro del paréntesis durante la creación del objeto, esto es, el archivo `chuck.png`.
109
+
110
+---
111
+
112
+```cpp
113
+#include <QImage>
114
+#include <iostream>
115
+
116
+using namespace std;
117
+int main() {
118
+    QImage myImage(“/Users/rarce/Downloads/chuck.png”);
119
+    QRgb    centralPixel;
120
+
121
+    centralPixel = myImage.pixel(myImage.width() / 2, myImage.height() / 2);
122
+
123
+    cout    << hex;
124
+
125
+    cout    << “Los componentes rojo, verde y azul del pixel central son: “
126
+        << qRed(centralPixel) << “, “
127
+        << qGreen(centralPixel) << “, “
128
+        << qBlue(centralPixel) << endl;
129
+    return 0;
130
+}
131
+```
132
+
133
+---
134
+
135
+---
136
+
137
+##Sesión de laboratorio:
138
+
139
+En la experiencia de laboratorio de hoy diseñarás e implementarás algoritmos simples de procesamiento de imágenes para practicar el uso de ciclos anidados en la manipulación de arreglos bi-dimensionales. 
140
+
141
+###Ejercicio 1: Entender el código provisto
142
+
143
+####Instrucciones
144
+
145
+
146
+1. Carga a Qt el proyecto `SimpleImageEditor`  haciendo doble "click" en el archivo `SimpleImageEditor.pro` en el directorio `Documents/eip/Arrays-SimpleImageEditor` de tu computadora. También puedes ir a `http://bitbucket.org/eip-uprrp/arrays-simpleimageeditor` para descargar la carpeta `Arrays-SimpleImageEditor` a tu computadora.
147
+ 
148
+2.  El código que te proveemos crea la interface de la Figura 2. 
149
+
150
+    ---
151
+
152
+    ![figure3.png](images/figure3.png)
153
+
154
+    **Figura 2.** Interface del editor de imágenes.
155
+
156
+    ---
157
+
158
+3. Estarás trabajando con el archivo `filter.cpp`. Estudia la función `HorizontalFlip` del archivo `filter.cpp` para que entiendas su operación.
159
+
160
+    En los ejercicios siguientes estarás usando mayormente los objetos `originalImage` y `editedImage` de clase `QImage`. ¿Cuál crees que es el propósito la variable `pixel`?
161
+
162
+4. El código que te proveemos ya tiene programado el funcionamiento de los botones de la interface gráfica. NO tienes que cambiar nada en este código pero te incluimos las siguientes explicaciones para que conozcas un poco del funcionamiento de los botones. En el archivo `mainwindow.cpp`, las etiquetas `lblOriginalImage` y `lblEditedImage` corresponden a las partes de la interface que identifican la imagen original y la imagen procesada. Los botones
163
+
164
+    * `btnLoadImage`
165
+    * `btnSaveImage`
166
+    * `btnInvertThreshold`
167
+    * `btnFlipImageHorizontally`
168
+    * `btnFlipImageVertically`
169
+    * `btnGreyScaleFilter`
170
+    * `btnRevertImage` 
171
+
172
+están conectados a  funciones de modo que cuando se presione el botón de la interface se haga alguna tarea. Por ejemplo, cuando se presiona `LoadImage`, saldrá una ventana para seleccionar el archivo con la imagen para editar, al seleccionar el archivo, se lee y se asigna la imagen al objeto `originalImage`. El deslizador `thresholdSlider` puede asumir valores entre 0 y 255.
173
+
174
+
175
+5. Compila y corre el programa. Prueba los botones `Load New Image` y `Flip Image Horizontally` con las imágenes que trajiste para que valides las operaciones de los botones.
176
+
177
+###Ejercicio 2: Convertir una imagen a colores a una imagen en tonos de gris
178
+
179
+El "image grayscale" es una operación que se usa para convertir una imagen a color a una imagen que solo tenga tonalidades de gris. Para hacer esta conversión se usa la siguiente fórmula en cada uno de los píxeles:
180
+
181
+`gray = (red * 11 + green * 16 + blue * 5)/32 ;`
182
+
183
+donde `red`, `green` y `blue` son los valores para los tonos de los colores rojo, verde y azul en el píxel de la imagen original a color, y `gray` será el color asignado a los colores rojo, verde y azul en el píxel de la imagen editada. Esto es,
184
+
185
+`editedImage.setPixel( i, j, qRgb(gray, gray, gray) )`.
186
+
187
+####Instrucciones
188
+
189
+1. Utilizando pseudocódigo, expresa el algoritmo para convertir una imagen a color a una imagen solo con tonalidades de gris. El apéndice de este documento contiene algunos consejos sobre buenas prácticas al hacer pseudocódigos. 
190
+
191
+2. Completa la función `GreyScale` en el archivo `filter.cpp` para implementar el algoritmo de tonalidades de gris. La función debe producir un resultado similar al de la Figura 3, en donde la imagen de la izquierda es la imagen original y la de la derecha es la imagen editada.
192
+
193
+    ---
194
+
195
+    ![chuck-color.png](images/chuck-color.png)
196
+    ![chuck-gris.png](images/chuck-gris.png)
197
+
198
+    **Figura 3.** Imagen original e imagen luego de aplicar la función `GreyScale`.
199
+
200
+    ---
201
+
202
+
203
+###Ejercicio 3: Convertir una imagen a colores a una imagen en blanco y negro ("Thresholding")
204
+
205
+"Thresholding" es una operación que se puede utilizar para convertir una imagen a color a una imagen en blanco y negro. Para hacer esta conversión debemos decidir cuáles colores de la imagen original van a convertirse en píxeles blancos y cuáles serán negros. Una manera sencilla de decidir esto es computando el promedio de los componentes rojo, verde y azul de cada píxel. Si el promedio es menor que el valor umbral ("threshold"), entonces cambiamos el píxel a negro; de lo contrario se cambia a blanco.
206
+
207
+####Instrucciones
208
+
209
+1. Utilizando pseudocódigo, expresa el algoritmo para "thresholding". Presume que utilizarás el valor del deslizador como umbral.
210
+
211
+2. En el programa, si la caja `chkboxThreshold` está marcada, se hace una invocación a la función `applyThresholdFilter`. La función `applyThresholdFilter` también es invocada cada vez que se cambia el valor del deslizador.
212
+
213
+3. Completa la función `ThresholdFilter` de modo que implemente el algoritmo de "threshold" en la imagen a color utilizando el valor del deslizador como umbral. Si se implementa correctamente, la imagen de la derecha debe ser la imagen original pero en blanco y negro. El valor umbral es un parámetro de la función `ThresholdFilter`. El código provisto en `mainwindow.h` tiene definidas las constantes `BLACK` y `WHITE` con el valor hexadecimal de los colores negro y blanco respectivamente; puedes aprovechar esto y utilizarlas en tu código.
214
+
215
+4. El parámetro booleano `invertColor` tendrá el valor `true` si la opción de invertir los colores fue seleccionada. Escribe código de modo que los colores blanco y negro se inviertan en la imagen si `invertColor` asume el valor `true`.
216
+
217
+5. Prueba tu programa con distintas imágenes y distintos valores de umbral.
218
+
219
+
220
+    ---
221
+
222
+    ![chuck-color.png](images/chuck-color.png)
223
+    ![chuck-threshold.png](images/chuck-threshold.png)
224
+
225
+    **Figura 4.** Imagen original e imagen luego de aplicar la función `ThresholdFilter`.
226
+
227
+    ---
228
+
229
+
230
+---
231
+
232
+---
233
+
234
+##Entrega
235
+
236
+Utiliza "Entrega" en Moodle para entregar el archivo `filter.cpp` que contiene las funciones  `GreyScale` y `Threshold`. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
237
+
238
+---
239
+
240
+---
241
+
242
+##Apéndice: Buenas prácticas al escribir pseudocódigos
243
+
244
+1. Provee una descripción de los datos de entrada y salida
245
+2. Enumera los pasos
246
+3. Usa estructuras de repetición y decisión comunes: `if, else, for, while`
247
+4. Indenta los bloques de pasos que están dentro de una estructura de repetición o decisión, "Python-style"
248
+5. No necesitas declarar los tipos de las variables pero si debes inicializarlas. Esto es especialmente importante para contadores y acumuladores
249
+6. Recuerda que el propósito de un pseudocódigo es que un humano lo pueda entender.
250
+
251
+**Ejemplo:**
252
+
253
+```
254
+Input: n, a positive integer
255
+Output: true if n is prime, false otherwise
256
+---------------------------------------------------------
257
+1. for i = 3 to n / 2
258
+2.   if n % i == 0:
259
+3.      return false
260
+4. return true
261
+```
262
+
263
+---
264
+
265
+---
266
+
267
+##Referencias
268
+
269
+[1] http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/24bits.gif
270
+
271
+[2] http://doc.qt.io/qt-4.8/qimage.html.
272
+
273
+
274
+---
275
+
276
+---
277
+
278
+---
279
+
280
+
281
+[English](#markdown-header-arrays-simple-image-editor) | [Español](#markdown-header-arreglos-editor-de-imagenes-simple)
282
+
283
+
284
+# Arrays - Simple Image Editor
285
+
286
+![main1.png](images/main1.png)
287
+![main2.png](images/main2.png)
288
+![main3.png](images/main3.png)
289
+
290
+Arrays help us to store and work with groups of data of the same type. The data is stored in consecutive memory spaces which can be accessed by using the name of the array and indexes or subscripts that indicate the position where the data is stored. Repetition structures provide us a simple way of accessing the data within an array. In today's laboratory experience you will design and implement simple algorithms for image processing to practice the use of nested loops to manipulate bi-dimensional arrays.
291
+
292
+##Objectives
293
+
294
+1. Practice the access and manipulation of data in an array.
295
+
296
+2. Apply nested loops to implement simple image processing algorithms.
297
+
298
+3. Use arithmetic expressions to transform colors in pixels.
299
+
300
+4. Access pixels in an image and break them down into their red, blue, and green components.
301
+
302
+
303
+##Pre-Lab:
304
+
305
+Before coming to the laboratory session you should have:
306
+
307
+1. Acquired one or more files with a colored image in one of the following formats: `tiff, jpg, png`.
308
+
309
+2. Reviewed the basic concepts related to repetition structures and nested loops.
310
+
311
+3. Become familiar with the basic functions in `QImage` to manipulate the pixels in the images.
312
+
313
+4. Studied the concepts and instructions for the laboratory session.
314
+
315
+5. Taken the Pre-Lab quiz available through the course’s Moodle portal.
316
+
317
+---
318
+
319
+---
320
+
321
+##Image editing
322
+
323
+In this laboratory experience, you will work with various concepts and basic skills of image editing. We have provided a simple graphical user interface that allows the user to load an image and invert it vertically and horizontally. Your task is to create and implement a function to convert the colored image into an image with gray tones, and another function that converts the colored image into a black and white image.
324
+
325
+###Pixels
326
+
327
+The smallest element in an image is called a *pixel*. This unit consists of a single color. Since each color is a combination of tones for the primary red, green and blue colors, it is coded as an unsigned integer whose bytes represent the tones of red, green and blue of the pixel (Figure 1). This combination is called the color's *RGB* which is an acronym for "Red-Green-Blue". For example, a pure red pixel has an RGB representation of `0x00ff0000`, while a white pixel has an RGB representation of `0x00FFFFFF` (since the color white is a combination of tones of red, green and blue in all of their intensity).
328
+
329
+---
330
+
331
+![figure1.png](images/figure1.png)
332
+
333
+**Figure 1.** Bit distribution for the tones of red, green and blue in an RGB representation. Each tone can have values between 0x00 (the eight bits in 0) and (0xFF (the 8 bits in 1).
334
+
335
+---
336
+
337
+`Qt` uses the `QRgb` type to represent `RGB` values. Using certain functions that are described below we can obtains the red, green and blue components of the `QRgb` value of the pixel and manipulate the images.
338
+
339
+###Library
340
+
341
+In today's laboratory experience you will use the `QImage` class. This class permits access to the data in the pixels of an image to manipulate it. The documentation for the `QImage` class can be found in http://doc.qt.io/qt-4.8/qimage.html.
342
+
343
+The code provided in this project contains the following objects of the `QImage` class:
344
+
345
+* `originalImage`   // contains the information of the original image that you will edit
346
+*  `editedImage`  // will contain the edited image
347
+
348
+The objects of the `QImage` class have the following methods that will be useful for today's laboratory experience:
349
+
350
+* `width()`      // returns the integer value for the image's width
351
+* `height()`      // returns the integer value for the image's height
352
+* `pixel(i, j)`       // returns the `QRgb` for the pixel in position `(i,j)`
353
+* `setPixel(i,j, pixel)`   // modifies the value for the pixel in position `(i,j)` to the value of pixel `QRgb`
354
+
355
+The following functions are useful to work with data of type `QRgb`:
356
+
357
+* `qRed(pixel)`   // returns the tone for the pixel's red color
358
+* `qGreen(pixel)` // returns the tone for the pixel's green color
359
+* `qBlue(pixel)`  // returns the tone for the pixel's blue color
360
+* `qRgb(int red, int green, int blue)` // returns the `QRgb` pixel composed of the red, green and blue values received.
361
+
362
+
363
+####Examples:
364
+
365
+1. `QRgb myRgb = qRgb(0xff, 0x00, 0xff);`: Assigns the value `0xff00ff` to `myRgb` which represents the color ![figure2.jpg](images/figure2.jpg)
366
+
367
+    Notice that the value `0xff00ff` represents the values `0xff`, `0x0`, and `0xff`, that correspond to the red, green and blue components in `myRgb`.
368
+
369
+2. If the following `4 x 4` image of pixels represents the object `originalImage`,
370
+
371
+ ![ejemplo.png](images/ejemplo.png)
372
+
373
+then `originalImage.pixel(2,1)` returns the  `rgb` value that represents the color blue ( `0x0000ff`).
374
+
375
+3. The following instruction assigns the color red to the pixel in position `(2,3)` in the edited image:
376
+
377
+`editedImage.setPixel(2,3,qRgb(0xff,0x00,0x00));`.
378
+
379
+4. The following instruction assigns to `greenContent` the value of the green tone that is contained in the pixel `(1,1)` of `originalImage`:
380
+
381
+    `int greenContent = qGreen(originalImage.pixel(1,1));`.
382
+
383
+5. The following program creates an object of the `QImage` class and prints the red, green and blue components of the pixel in the center of the image. The image used is the one specified within the parenthesis during the creation of the object, that is, the file `chuck.png`
384
+
385
+---
386
+
387
+```cpp
388
+#include <QImage>
389
+#include <iostream>
390
+
391
+using namespace std;
392
+int main() {
393
+    QImage myImage(“/Users/rarce/Downloads/chuck.png”);
394
+    QRgb    centralPixel;
395
+
396
+    centralPixel = myImage.pixel(myImage.width() / 2, myImage.height() / 2);
397
+
398
+    cout    << hex;
399
+
400
+    cout    << “The red, green and blue components of the middle pixel are: “
401
+        << qRed(centralPixel) << “, “
402
+        << qGreen(centralPixel) << “, “
403
+        << qBlue(centralPixel) << endl;
404
+    return 0;
405
+}
406
+```
407
+
408
+---  
409
+
410
+---
411
+
412
+##Laboratory Session:
413
+
414
+In today's laboratory experience you will design and implement simple image processing algorithms to practice the use of nested loops and the manipulation of bi-dimensional arrays.
415
+
416
+###Exercise 1: Understand the provided code
417
+
418
+####Instructions
419
+
420
+1. Load the Qt project called `SimpleImageEditor` by double-clicking on the `SimpleImageEditor.pro` file in the `Documents/eip/Arrays-SimpleImageEditor` folder of your computer. You may also go to `http://bitbucket.org/eip-uprrp/arrays-simpleimageeditor` to download the `Arrays-SimpleImageEditor` folder to your computer.
421
+
422
+2. The code that we provide creates the interface in Figure 2.
423
+
424
+    ---
425
+
426
+    ![figure3.jpg](images/figure3.jpg)
427
+
428
+    **Figura 2.** Interface del editor de imágenes.
429
+
430
+    ---
431
+
432
+3. You will be working with the `filter.cpp` file. Study the `HorizontalFlip` function in the `filter.cpp` file so you understand how it operates.
433
+
434
+In the following exercises you will be mainly using the objects `originalImage` and `editedImage` of the `QImage` class. What do you think is the purpose for the `pixel` variable?
435
+
436
+4. The provided code already has the the functionality of the buttons in the graphical user interface programmed. You do NOT have to change anything in this code but we provide the following explanations so you can know a little about how the buttons work. In the `mainwindow.cpp` file, the `lblOriginalImage` and `lblEditedImage` objects correspond to the parts of the interface that identify the original image and the processed image. The buttons
437
+
438
+    * `btnLoadImage`
439
+    * `btnSaveImage`
440
+    * `btnInvertThreshold`
441
+    * `btnFlipImageHorizontally`
442
+    * `btnFlipImageVertically`
443
+    * `btnGreyScaleFilter`
444
+    * `btnRevertImage` 
445
+
446
+are connected to functions so when a button in the interface is pressed, a certain task is carried out. For example, when you press the `LoadImage` button, a window will appear for you to select the file with the image you want to edit, which when read, the image is assigned to `originalImage`. The slider `thresholdSlider` can assume values between 0 and 255.
447
+
448
+
449
+5. Compile and run the program. Test the buttons for `Load New Image` and `Flip Image Horizontally` with the images that you brought so you can validate if the buttons are working.
450
+
451
+###Exercise 2: Convert a colored image to an image with gray tones
452
+
453
+Image grayscale is an operation that is used to convert a colored image to an image with only tones of gray. To make this conversion the following formula is used in each pixel:
454
+
455
+`gray = (red * 11 + green * 16 + blue * 5)/32 ;`
456
+
457
+where `red`, `green` and `blue` are the values for the tones of the red, green and blue colors in the pixel of the original colored image, and `gray` will be the assigned color to the red, green, and blue colors in the pixel of the edited image. That is,
458
+
459
+`editedImage.setPixel( i, j, qRgb(gray, gray, gray) )`.
460
+
461
+####Instructions
462
+
463
+1. Using pseudocode, express the algorithm to convert a colored image to an image with only gray tones. The appendix in this document contains some advice about good techniques for writing pseudocode.
464
+
465
+2. Complete the `GreyScale` function in the `filter.cpp` file to implement the grayscale algorithm. The function should produce a result similar to that in Figure 3, where the image on the left is the original image and the one on the right is the edited image.
466
+
467
+    ---
468
+
469
+    ![chuck-color.png](images/chuck-color.png)
470
+    ![chuck-gris.png](images/chuck-gris.png)
471
+
472
+    **Figure 3.** Original image and image after applying the `GreyScale` function.
473
+
474
+    ---
475
+
476
+###Exercise 3: Convert a colored image to a black and white image ("Thresholding")
477
+
478
+Thresholding es an operation that can be used to convert a colored image to an image in black and white. To make this conversion we must decide which colors of the original image will be converted to white pixels and which to black. One simple way of deciding this is to compute the average of the red, green and blue components of each pixel. If the average is smaller than the threshold value, then we change the pixel to black; if not, it's changed to white.
479
+
480
+####Instructions
481
+
482
+1. Using pseudocode, express the thresholding algorithm. Assume that you will use the slider's value as the threshold.
483
+
484
+2. In the program, if the `chkboxThreshold` box is marked, the `applyThresholdFilter` function is invoked. The `applyThresholdFilter` function is also invoked each time that the value of the slider is changed.
485
+
486
+3. Complete the `ThresholdFilter` function so it implements the threshold algorithm in the colored image using the slider's value as the threshold. If the implementation is correct, the image on the right should be the original image but in black and white. The threshold value is a parameter of the `ThresholdFilter` function. The code provided in `mainwindow.h` has the constants `BLACK` and `WHITE` defined with their hexadecimal values; you can take advantage of this and use them in your code.
487
+
488
+4. The boolean parameter `invertColor` will be `true` if the option to invert the colors has been selected. Write the code so that the white and black colors are inverted if `invertColor` is `true`.
489
+
490
+5. Test the program with different images and different threshold values.
491
+
492
+    ---
493
+
494
+    ![chuck-color.png](images/chuck-color.png)
495
+    ![chuck-threshold.png](images/chuck-threshold.png)
496
+
497
+    **Figure 4.** Original image and image after applying the `ThresholdFilter` function.
498
+
499
+    ---
500
+
501
+ ---
502
+
503
+ ---
504
+
505
+##Deliverables
506
+
507
+Use "Deliverables" in Moodle to upload the `filter.cpp` file that contains the `GreyScale` and `Threshold` functions. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
508
+
509
+---
510
+
511
+---
512
+
513
+##Appendix: Good techniques for writing pseudocode
514
+
515
+1. Provide a description of the input and output data
516
+2. Enumerate the steps
517
+3. Use common repetition and decision structures: `if, else, for, while`
518
+4. Indent the blocks of steps that are inside of a decision or repetition structure, "Python-style"
519
+5. You do not need to declare the types of variables but you should initialize them. This is especially important for counters and accumulators
520
+6. Remember that the purpose of pseudocode is so a human can understand it.
521
+
522
+**Example:**
523
+
524
+```
525
+Input: n, a positive integer
526
+Output: true if n is prime, false otherwise
527
+---------------------------------------------------------
528
+1. for i = 3 to n / 2
529
+2.   if n % i == 0:
530
+3.      return false
531
+4. return true
532
+```
533
+
534
+---
535
+
536
+---
537
+
538
+##References
539
+
540
+[1] http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/24bits.gif
541
+
542
+[2] http://doc.qt.io/qt-4.8/qimage.html.

+ 25
- 0
SimpleImageEditor.pro Vedi File

@@ -0,0 +1,25 @@
1
+#-------------------------------------------------
2
+#
3
+# Project created by QtCreator 2014-03-13T15:27:42
4
+#
5
+#-------------------------------------------------
6
+
7
+QT       += core gui
8
+
9
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
10
+
11
+TARGET = SimpleImageEditor
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
25
+

+ 1502
- 0
arrays-SimpleImageEditor.html
File diff soppresso perché troppo grande
Vedi File


+ 544
- 0
arrays-SimpleImageEditor.md Vedi File

@@ -0,0 +1,544 @@
1
+[English](#markdown-header-arrays-simple-image-editor) | [Español](#markdown-header-arreglos-editor-de-imagenes-simple)
2
+
3
+
4
+# Arreglos - Editor de Imagenes Simple
5
+
6
+![main1.png](images/main1.png)
7
+![main2.png](images/main2.png)
8
+![main3.png](images/main3.png)
9
+
10
+Los arreglos de datos (*arrays*) nos facilitan guardar y trabajar con grupos de datos del mismo tipo. Los datos se guardan en espacios de memoria consecutivos a los que se puede acceder utilizando el nombre del arreglo e índices o suscritos que indican la posición en que se encuentra el dato. Las estructuras de repetición nos proveen una manera simple de acceder a los datos de un arreglo. En la experiencia de laboratorio de hoy diseñarás e implementarás algoritmos simples de procesamiento de imágenes para practicar el uso de ciclos anidados en la manipulación de arreglos bi-dimensionales. 
11
+
12
+##Objetivos:
13
+
14
+1. Practicar el acceder y manipular datos en un arreglo.
15
+
16
+2. Aplicar ciclos anidados para implementar algoritmos simples de procesamiento de imágenes.
17
+
18
+3. Utilizar expresiones aritméticas para transformar colores de pixeles.
19
+
20
+4. Acceder pixeles en una imagen y descomponerlos en sus componentes rojo, azul y verde.
21
+
22
+
23
+##Pre-Lab:
24
+
25
+Antes de llegar al laboratorio debes:
26
+
27
+1. Conseguir y tener disponible uno o más archivos con una imagen a color en alguno de los siguientes formatos: `tiff, jpg, png`.
28
+
29
+2. Haber repasado los conceptos básicos relacionados a estructuras de repetición y ciclos anidados.
30
+
31
+3. Conocer las funciones básicas de `QImage` para manipular los pixeles de las imágenes. 
32
+
33
+4. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
34
+
35
+5. Haber tomado el quiz Pre-Lab que se encuentra en Moodle.
36
+
37
+---
38
+
39
+---
40
+
41
+
42
+##Edición de imágenes
43
+
44
+En esta experiencia de laboratorio, trabajarás con varios conceptos y destrezas básicas de edición de imágenes. Te proveemos un interface gráfico (GUI) simple que le permite al usuario cargar una imagen e invertirla vertical y horizontalmente.  Tu tarea es crear e implementar una función para convertir una imagen a color a una imagen con tonos de gris, y otra función que convierta una imagen a color a una imagen en blanco y negro.
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 1). A esta combinación se le llama el *RGB* del color por las siglas de "Red-Green-Blue". Por ejemplo un píxel de color rojo (puro) tiene una representación RGB `0x00ff0000`, mientras que un píxel de color blanco tiene una representación RGB de `0x00FFFFFF` (ya que el color blanco es la combinación de los tonos rojo, verde y azul en toda su intensidad).
49
+
50
+---
51
+
52
+![figure1.png](images/figure1.png)
53
+
54
+**Figura 1.** Distribución de bits para las tonalidades de rojo, verde y azul dentro de la representación RGB.  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 `RGB`.  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.
59
+
60
+###Biblioteca
61
+
62
+La experiencia de laboratorio de hoy utilizará la clase `QImage`. Esta clase permite acceder a los datos de los pixeles 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.
63
+
64
+El código que te proveemos contiene los siguiente objetos de la clase `QImage`:
65
+
66
+* `originalImage`   // contiene la información de la imagen original que vas a editar
67
+*  `editedImage`  // contendrá la imagen editada
68
+
69
+Los objetos de clase `QImage` tienen los siguiente métodos que serán útiles para la experiencia de laboratorio de hoy:
70
+
71
+
72
+* `width()`      // devuelve el valor entero del ancho de la imagen
73
+* `height()`      // devuelve el valor entero de la altura de la imagen
74
+* `pixel(i, j)`       // devuelve el `QRgb` del píxel en la posición `(i,j)`
75
+* `setPixel(i,j, pixel)`   // modifica el valor del píxel en la posición `(i, j)` al valor píxel `QRgb`
76
+
77
+Las siguientes funciones son útiles para trabajar con datos de tipo `QRgb`:
78
+
79
+
80
+* `qRed(pixel)`   // devuelve el tono del color rojo del píxel
81
+* `qGreen(pixel)` // devuelve el tono del color verde del píxel
82
+* `qBlue(pixel)`  // devuelve el tono del color azul del píxel
83
+* `qRgb(int red, int green, int blue)` // devuelve un píxel `QRgb` compuesto de los valores de rojo, verde y azul recibidos.
84
+
85
+
86
+####Ejemplos:
87
+
88
+1. `QRgb myRgb = qRgb(0xff, 0x00, 0xff);`: Asigna a `myRgb` el valor `0xff00ff` que representa el color ![figure2.png](images/figure2.png)
89
+
90
+    Nota que el valor `0xff00ff` representa los valores `0xff`, `0x0`, `0xff`, que corresponden a los componentes rojo, verde y azul de `myRgb`.
91
+
92
+2. Si la siguiente imagen `4 x 4` de píxeles representa el objeto `originalImage`,
93
+
94
+    ![ejemplo.png](images/ejemplo.png)
95
+
96
+  entonces `originalImage.pixel(2,1)` devuelve un valor `rgb` que representa el color azul (`0x0000ff`).
97
+
98
+3. La siguiente instrucción asigna el color rojo al píxel en posición `(2,3)` en la imagen editada:
99
+
100
+  `editedImage.setPixel(2,3,qRgb(0xff,0x00,0x00));`.
101
+
102
+4. La siguiente instrucción le asigna a `greenContent` el valor del tono de verde que contiene el pixel `(1,1)` de  `originalImage`:
103
+
104
+  `int greenContent = qGreen(originalImage.pixel(1,1));`.
105
+
106
+
107
+5. El siguiente programa crea un objeto de clase `QImage` e imprime los componentes rojo, verde y azul del pixel en el centro de la imagen. La imagen utilizada es la que se especifica dentro del paréntesis durante la creación del objeto, esto es, el archivo `chuck.png`.
108
+
109
+---
110
+
111
+```cpp
112
+#include <QImage>
113
+#include <iostream>
114
+
115
+using namespace std;
116
+int main() {
117
+    QImage myImage(“/Users/rarce/Downloads/chuck.png”);
118
+    QRgb    centralPixel;
119
+
120
+    centralPixel = myImage.pixel(myImage.width() / 2, myImage.height() / 2);
121
+
122
+    cout    << hex;
123
+
124
+    cout    << “Los componentes rojo, verde y azul del pixel central son: “
125
+        << qRed(centralPixel) << “, “
126
+        << qGreen(centralPixel) << “, “
127
+        << qBlue(centralPixel) << endl;
128
+    return 0;
129
+}
130
+```
131
+
132
+---
133
+
134
+---
135
+
136
+##Sesión de laboratorio:
137
+
138
+En la experiencia de laboratorio de hoy diseñarás e implementarás algoritmos simples de procesamiento de imágenes para practicar el uso de ciclos anidados en la manipulación de arreglos bi-dimensionales. 
139
+
140
+###Ejercicio 1: Entender el código provisto
141
+
142
+####Instrucciones
143
+
144
+
145
+1. Carga a Qt el proyecto `SimpleImageEditor`  haciendo doble "click" en el archivo `SimpleImageEditor.pro` en el directorio `Documents/eip/Arrays-SimpleImageEditor` de tu computadora. También puedes ir a `http://bitbucket.org/eip-uprrp/arrays-simpleimageeditor` para descargar la carpeta `Arrays-SimpleImageEditor` a tu computadora.
146
+ 
147
+2.  El código que te proveemos crea la interface de la Figura 2. 
148
+
149
+    ---
150
+
151
+    ![figure3.png](images/figure3.png)
152
+
153
+    **Figura 2.** Interface del editor de imágenes.
154
+
155
+    ---
156
+
157
+3. Estarás trabajando con el archivo `filter.cpp`. Estudia la función `HorizontalFlip` del archivo `filter.cpp` para que entiendas su operación.
158
+
159
+    En los ejercicios siguientes estarás usando mayormente los objetos `originalImage` y `editedImage` de clase `QImage`. ¿Cuál crees que es el propósito la variable `pixel`?
160
+
161
+4. El código que te proveemos ya tiene programado el funcionamiento de los botones de la interface gráfica. NO tienes que cambiar nada en este código pero te incluimos las siguientes explicaciones para que conozcas un poco del funcionamiento de los botones. En el archivo `mainwindow.cpp`, las etiquetas `lblOriginalImage` y `lblEditedImage` corresponden a las partes de la interface que identifican la imagen original y la imagen procesada. Los botones
162
+
163
+    * `btnLoadImage`
164
+    * `btnSaveImage`
165
+    * `btnInvertThreshold`
166
+    * `btnFlipImageHorizontally`
167
+    * `btnFlipImageVertically`
168
+    * `btnGreyScaleFilter`
169
+    * `btnRevertImage` 
170
+
171
+    están conectados a  funciones de modo que cuando se presione el botón de la interface se haga alguna tarea. Por ejemplo, cuando se presiona `LoadImage`, saldrá una ventana para seleccionar el archivo con la imagen para editar, al seleccionar el archivo, se lee y se asigna la imagen al objeto `originalImage`. El deslizador `thresholdSlider` puede asumir valores entre 0 y 255.
172
+
173
+
174
+5. Compila y corre el programa. Prueba los botones `Load New Image` y `Flip Image Horizontally` con las imágenes que trajiste para que valides las operaciones de los botones.
175
+
176
+###Ejercicio 2: Convertir una imagen a colores a una imagen en tonos de gris
177
+
178
+El "image grayscale" es una operación que se usa para convertir una imagen a color a una imagen que solo tenga tonalidades de gris. Para hacer esta conversión se usa la siguiente fórmula en cada uno de los píxeles:
179
+
180
+`gray = (red * 11 + green * 16 + blue * 5)/32 ;`
181
+
182
+donde `red`, `green` y `blue` son los valores para los tonos de los colores rojo, verde y azul en el píxel de la imagen original a color, y `gray` será el color asignado a los colores rojo, verde y azul en el píxel de la imagen editada. Esto es,
183
+
184
+`editedImage.setPixel( i, j, qRgb(gray, gray, gray) )`.
185
+
186
+####Instrucciones
187
+
188
+1. Utilizando pseudocódigo, expresa el algoritmo para convertir una imagen a color a una imagen solo con tonalidades de gris. El apéndice de este documento contiene algunos consejos sobre buenas prácticas al hacer pseudocódigos. 
189
+
190
+2. Completa la función `GreyScale` en el archivo `filter.cpp` para implementar el algoritmo de tonalidades de gris. La función debe producir un resultado similar al de la Figura 3, en donde la imagen de la izquierda es la imagen original y la de la derecha es la imagen editada.
191
+
192
+    ---
193
+
194
+    ![chuck-color.png](images/chuck-color.png)
195
+    ![chuck-gris.png](images/chuck-gris.png)
196
+
197
+    **Figura 3.** Imagen original e imagen luego de aplicar la función `GreyScale`.
198
+
199
+    ---
200
+
201
+
202
+###Ejercicio 3: Convertir una imagen a colores a una imagen en blanco y negro ("Thresholding")
203
+
204
+"Thresholding" es una operación que se puede utilizar para convertir una imagen a color a una imagen en blanco y negro. Para hacer esta conversión debemos decidir cuáles colores de la imagen original van a convertirse en píxeles blancos y cuáles serán negros. Una manera sencilla de decidir esto es computando el promedio de los componentes rojo, verde y azul de cada píxel. Si el promedio es menor que el valor umbral ("threshold"), entonces cambiamos el píxel a negro; de lo contrario se cambia a blanco.
205
+
206
+####Instrucciones
207
+
208
+1. Utilizando pseudocódigo, expresa el algoritmo para "thresholding". Presume que utilizarás el valor del deslizador como umbral.
209
+
210
+2. En el programa, si la caja `chkboxThreshold` está marcada, se hace una invocación a la función `applyThresholdFilter`. La función `applyThresholdFilter` también es invocada cada vez que se cambia el valor del deslizador.
211
+
212
+3. Completa la función `ThresholdFilter` de modo que implemente el algoritmo de "threshold" en la imagen a color utilizando el valor del deslizador como umbral. Si se implementa correctamente, la imagen de la derecha debe ser la imagen original pero en blanco y negro. El valor umbral es un parámetro de la función `ThresholdFilter`. El código provisto en `mainwindow.h` tiene definidas las constantes `BLACK` y `WHITE` con el valor hexadecimal de los colores negro y blanco respectivamente; puedes aprovechar esto y utilizarlas en tu código.
213
+
214
+4. El parámetro booleano `invertColor` tendrá el valor `true` si la opción de invertir los colores fue seleccionada. Escribe código de modo que los colores blanco y negro se inviertan en la imagen si `invertColor` asume el valor `true`.
215
+
216
+5. Prueba tu programa con distintas imágenes y distintos valores de umbral.
217
+
218
+
219
+    ---
220
+
221
+    ![chuck-color.png](images/chuck-color.png)
222
+    ![chuck-threshold.png](images/chuck-threshold.png)
223
+
224
+    **Figura 4.** Imagen original e imagen luego de aplicar la función `ThresholdFilter`.
225
+
226
+
227
+
228
+
229
+---
230
+
231
+---
232
+
233
+##Entrega
234
+
235
+Utiliza "Entrega" en Moodle para entregar el archivo `filter.cpp` que contiene las funciones  `GreyScale` y `Threshold`. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
236
+
237
+---
238
+
239
+---
240
+
241
+##Apéndice: Buenas prácticas al escribir pseudocódigos
242
+
243
+1. Provee una descripción de los datos de entrada y salida
244
+2. Enumera los pasos
245
+3. Usa estructuras de repetición y decisión comunes: `if, else, for, while`
246
+4. Indenta los bloques de pasos que están dentro de una estructura de repetición o decisión, "Python-style"
247
+5. No necesitas declarar los tipos de las variables pero si debes inicializarlas. Esto es especialmente importante para contadores y acumuladores
248
+6. Recuerda que el propósito de un pseudocódigo es que un humano lo pueda entender.
249
+
250
+**Ejemplo:**
251
+
252
+```
253
+Input: n, a positive integer
254
+Output: true if n is prime, false otherwise
255
+---------------------------------------------------------
256
+1. for i = 3 to n / 2
257
+2.   if n % i == 0:
258
+3.      return false
259
+4. return true
260
+```
261
+
262
+---
263
+
264
+---
265
+
266
+##Referencias
267
+
268
+[1] http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/24bits.gif
269
+
270
+[2] http://doc.qt.io/qt-4.8/qimage.html.
271
+
272
+
273
+---
274
+
275
+---
276
+
277
+---
278
+
279
+
280
+[English](#markdown-header-arrays-simple-image-editor) | [Español](#markdown-header-arreglos-editor-de-imagenes-simple)
281
+
282
+
283
+# Arrays - Simple Image Editor
284
+
285
+![main1.png](images/main1.png)
286
+![main2.png](images/main2.png)
287
+![main3.png](images/main3.png)
288
+
289
+Arrays help us to store and work with groups of data of the same type. The data is stored in consecutive memory spaces which can be accessed by using the name of the array and indexes or subscripts that indicate the position where the data is stored. Repetition structures provide us a simple way of accessing the data within an array. In today's laboratory experience you will design and implement simple algorithms for image processing to practice the use of nested loops to manipulate bi-dimensional arrays.
290
+
291
+##Objectives
292
+
293
+1. Practice the access and manipulation of data in an array.
294
+
295
+2. Apply nested loops to implement simple image processing algorithms.
296
+
297
+3. Use arithmetic expressions to transform colors in pixels.
298
+
299
+4. Access pixels in an image and break them down into their red, blue, and green components.
300
+
301
+
302
+##Pre-Lab:
303
+
304
+Before coming to the laboratory session you should have:
305
+
306
+1. Acquired one or more files with a colored image in one of the following formats: `tiff, jpg, png`.
307
+
308
+2. Reviewed the basic concepts related to repetition structures and nested loops.
309
+
310
+3. Become familiar with the basic functions in `QImage` to manipulate the pixels in the images.
311
+
312
+4. Studied the concepts and instructions for the laboratory session.
313
+
314
+5. Taken the Pre-Lab quiz available through the course’s Moodle portal.
315
+
316
+---
317
+
318
+---
319
+
320
+##Image editing
321
+
322
+In this laboratory experience, you will work with various concepts and basic skills of image editing. We have provided a simple graphical user interface that allows the user to load an image and invert it vertically and horizontally. Your task is to create and implement a function to convert the colored image into an image with gray tones, and another function that converts the colored image into a black and white image.
323
+
324
+###Pixels
325
+
326
+The smallest element in an image is called a *pixel*. This unit consists of a single color. Since each color is a combination of tones for the primary red, green and blue colors, it is coded as an unsigned integer whose bytes represent the tones of red, green and blue of the pixel (Figure 1). This combination is called the color's *RGB* which is an acronym for "Red-Green-Blue". For example, a pure red pixel has an RGB representation of `0x00ff0000`, while a white pixel has an RGB representation of `0x00FFFFFF` (since the color white is a combination of tones of red, green and blue in all of their intensity).
327
+
328
+---
329
+
330
+![figure1.png](images/figure1.png)
331
+
332
+**Figure 1.** Bit distribution for the tones of red, green and blue in an RGB representation. Each tone can have values between 0x00 (the eight bits in 0) and (0xFF (the 8 bits in 1).
333
+
334
+---
335
+
336
+`Qt` uses the `QRgb` type to represent `RGB` values. Using certain functions that are described below we can obtains the red, green and blue components of the `QRgb` value of the pixel and manipulate the images.
337
+
338
+###Library
339
+
340
+In today's laboratory experience you will use the `QImage` class. This class permits access to the data in the pixels of an image to manipulate it. The documentation for the `QImage` class can be found in http://doc.qt.io/qt-4.8/qimage.html.
341
+
342
+The code provided in this project contains the following objects of the `QImage` class:
343
+
344
+* `originalImage`   // contains the information of the original image that you will edit
345
+*  `editedImage`  // will contain the edited image
346
+
347
+The objects of the `QImage` class have the following methods that will be useful for today's laboratory experience:
348
+
349
+* `width()`      // returns the integer value for the image's width
350
+* `height()`      // returns the integer value for the image's height
351
+* `pixel(i, j)`       // returns the `QRgb` for the pixel in position `(i,j)`
352
+* `setPixel(i,j, pixel)`   // modifies the value for the pixel in position `(i,j)` to the value of pixel `QRgb`
353
+
354
+The following functions are useful to work with data of type `QRgb`:
355
+
356
+* `qRed(pixel)`   // returns the tone for the pixel's red color
357
+* `qGreen(pixel)` // returns the tone for the pixel's green color
358
+* `qBlue(pixel)`  // returns the tone for the pixel's blue color
359
+* `qRgb(int red, int green, int blue)` // returns the `QRgb` pixel composed of the red, green and blue values received.
360
+
361
+
362
+####Examples:
363
+
364
+1. `QRgb myRgb = qRgb(0xff, 0x00, 0xff);`: Assigns the value `0xff00ff` to `myRgb` which represents the color ![figure2.png](images/figure2.png)
365
+
366
+    Notice that the value `0xff00ff` represents the values `0xff`, `0x0`, and `0xff`, that correspond to the red, green and blue components in `myRgb`.
367
+
368
+2. If the following `4 x 4` image of pixels represents the object `originalImage`,
369
+
370
+ ![ejemplo.png](images/ejemplo.png)
371
+
372
+    then `originalImage.pixel(2,1)` returns the  `rgb` value that represents the color blue ( `0x0000ff`).
373
+
374
+3. The following instruction assigns the color red to the pixel in position `(2,3)` in the edited image:
375
+
376
+    `editedImage.setPixel(2,3,qRgb(0xff,0x00,0x00));`.
377
+
378
+4. The following instruction assigns to `greenContent` the value of the green tone that is contained in the pixel `(1,1)` of `originalImage`:
379
+
380
+    `int greenContent = qGreen(originalImage.pixel(1,1));`.
381
+
382
+5. The following program creates an object of the `QImage` class and prints the red, green and blue components of the pixel in the center of the image. The image used is the one specified within the parenthesis during the creation of the object, that is, the file `chuck.png`
383
+
384
+---
385
+
386
+```cpp
387
+#include <QImage>
388
+#include <iostream>
389
+
390
+using namespace std;
391
+int main() {
392
+    QImage myImage(“/Users/rarce/Downloads/chuck.png”);
393
+    QRgb    centralPixel;
394
+
395
+    centralPixel = myImage.pixel(myImage.width() / 2, myImage.height() / 2);
396
+
397
+    cout    << hex;
398
+
399
+    cout    << “The red, green and blue components of the middle pixel are: “
400
+        << qRed(centralPixel) << “, “
401
+        << qGreen(centralPixel) << “, “
402
+        << qBlue(centralPixel) << endl;
403
+    return 0;
404
+}
405
+```
406
+
407
+---  
408
+
409
+---
410
+
411
+##Laboratory Session:
412
+
413
+In today's laboratory experience you will design and implement simple image processing algorithms to practice the use of nested loops and the manipulation of bi-dimensional arrays.
414
+
415
+###Exercise 1: Understand the provided code
416
+
417
+####Instructions
418
+
419
+1. Load the Qt project called `SimpleImageEditor` by double-clicking on the `SimpleImageEditor.pro` file in the `Documents/eip/Arrays-SimpleImageEditor` folder of your computer. You may also go to `http://bitbucket.org/eip-uprrp/arrays-simpleimageeditor` to download the `Arrays-SimpleImageEditor` folder to your computer.
420
+
421
+2. The code that we provide creates the interface in Figure 2.
422
+
423
+    ---
424
+
425
+    ![figure3.png](images/figure3.png)
426
+
427
+    **Figura 2.** Interface del editor de imágenes.
428
+
429
+    ---
430
+
431
+3. You will be working with the `filter.cpp` file. Study the `HorizontalFlip` function in the `filter.cpp` file so you understand how it operates.
432
+
433
+    In the following exercises you will be mainly using the objects `originalImage` and `editedImage` of the `QImage` class. What do you think is the purpose for the `pixel` variable?
434
+
435
+4. The provided code already has the the functionality of the buttons in the graphical user interface programmed. You do NOT have to change anything in this code but we provide the following explanations so you can know a little about how the buttons work. In the `mainwindow.cpp` file, the `lblOriginalImage` and `lblEditedImage` objects correspond to the parts of the interface that identify the original image and the processed image. The buttons
436
+
437
+    * `btnLoadImage`
438
+    * `btnSaveImage`
439
+    * `btnInvertThreshold`
440
+    * `btnFlipImageHorizontally`
441
+    * `btnFlipImageVertically`
442
+    * `btnGreyScaleFilter`
443
+    * `btnRevertImage` 
444
+
445
+    are connected to functions so when a button in the interface is pressed, a certain task is carried out. For example, when you press the `LoadImage` button, a window will appear for you to select the file with the image you want to edit, which when read, the image is assigned to `originalImage`. The slider `thresholdSlider` can assume values between 0 and 255.
446
+
447
+
448
+5. Compile and run the program. Test the buttons for `Load New Image` and `Flip Image Horizontally` with the images that you brought so you can validate if the buttons are working.
449
+
450
+###Exercise 2: Convert a colored image to an image with gray tones
451
+
452
+Image grayscale is an operation that is used to convert a colored image to an image with only tones of gray. To make this conversion the following formula is used in each pixel:
453
+
454
+`gray = (red * 11 + green * 16 + blue * 5)/32 ;`
455
+
456
+where `red`, `green` and `blue` are the values for the tones of the red, green and blue colors in the pixel of the original colored image, and `gray` will be the assigned color to the red, green, and blue colors in the pixel of the edited image. That is,
457
+
458
+`editedImage.setPixel( i, j, qRgb(gray, gray, gray) )`.
459
+
460
+####Instructions
461
+
462
+1. Using pseudocode, express the algorithm to convert a colored image to an image with only gray tones. The appendix in this document contains some advice about good techniques for writing pseudocode.
463
+
464
+2. Complete the `GreyScale` function in the `filter.cpp` file to implement the grayscale algorithm. The function should produce a result similar to that in Figure 3, where the image on the left is the original image and the one on the right is the edited image.
465
+
466
+    ---
467
+
468
+    ![chuck-color.png](images/chuck-color.png)
469
+    ![chuck-gris.png](images/chuck-gris.png)
470
+
471
+    **Figure 3.** Original image and image after applying the `GreyScale` function.
472
+
473
+    ---
474
+
475
+###Exercise 3: Convert a colored image to a black and white image ("Thresholding")
476
+
477
+Thresholding es an operation that can be used to convert a colored image to an image in black and white. To make this conversion we must decide which colors of the original image will be converted to white pixels and which to black. One simple way of deciding this is to compute the average of the red, green and blue components of each pixel. If the average is smaller than the threshold value, then we change the pixel to black; if not, it's changed to white.
478
+
479
+####Instructions
480
+
481
+1. Using pseudocode, express the thresholding algorithm. Assume that you will use the slider's value as the threshold.
482
+
483
+2. In the program, if the `chkboxThreshold` box is marked, the `applyThresholdFilter` function is invoked. The `applyThresholdFilter` function is also invoked each time that the value of the slider is changed.
484
+
485
+3. Complete the `ThresholdFilter` function so it implements the threshold algorithm in the colored image using the slider's value as the threshold. If the implementation is correct, the image on the right should be the original image but in black and white. The threshold value is a parameter of the `ThresholdFilter` function. The code provided in `mainwindow.h` has the constants `BLACK` and `WHITE` defined with their hexadecimal values; you can take advantage of this and use them in your code.
486
+
487
+4. The boolean parameter `invertColor` will be `true` if the option to invert the colors has been selected. Write the code so that the white and black colors are inverted if `invertColor` is `true`.
488
+
489
+5. Test the program with different images and different threshold values.
490
+
491
+    ---
492
+
493
+    ![chuck-color.png](images/chuck-color.png)
494
+    ![chuck-threshold.png](images/chuck-threshold.png)
495
+
496
+    **Figure 4.** Original image and image after applying the `ThresholdFilter` function.
497
+
498
+
499
+
500
+ ---
501
+
502
+ ---
503
+
504
+##Deliverables
505
+
506
+Use "Deliverables" in Moodle to upload the `filter.cpp` file that contains the `GreyScale` and `Threshold` functions. Remember to use good programming techniques, include the names of the programmers involved, and to document your program.
507
+
508
+---
509
+
510
+---
511
+
512
+##Appendix: Good techniques for writing pseudocode
513
+
514
+1. Provide a description of the input and output data
515
+2. Enumerate the steps
516
+3. Use common repetition and decision structures: `if, else, for, while`
517
+4. Indent the blocks of steps that are inside of a decision or repetition structure, "Python-style"
518
+5. You do not need to declare the types of variables but you should initialize them. This is especially important for counters and accumulators
519
+6. Remember that the purpose of pseudocode is so a human can understand it.
520
+
521
+**Example:**
522
+
523
+```
524
+Input: n, a positive integer
525
+Output: true if n is prime, false otherwise
526
+---------------------------------------------------------
527
+1. for i = 3 to n / 2
528
+2.   if n % i == 0:
529
+3.      return false
530
+4. return true
531
+```
532
+
533
+---
534
+
535
+---
536
+
537
+##References
538
+
539
+[1] http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/24bits.gif
540
+
541
+[2] http://doc.qt.io/qt-4.8/qimage.html.
542
+
543
+
544
+

+ 102
- 0
doc/en/html/annotated.html Vedi File

@@ -0,0 +1,102 @@
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_main_window.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
92
+</table>
93
+</div><!-- directory -->
94
+</div><!-- contents -->
95
+<!-- start footer part -->
96
+<hr class="footer"/><address class="footer"><small>
97
+Generated on Tue Aug 11 2015 13:49:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
98
+<img class="footer" src="doxygen.png" alt="doxygen"/>
99
+</a> 1.8.9.1
100
+</small></address>
101
+</body>
102
+</html>

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


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


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


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


+ 213
- 0
doc/en/html/bk_2mainwindow_8h_source.html Vedi File

@@ -0,0 +1,213 @@
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: bk/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
+<!-- window showing the filter options -->
67
+<div id="MSearchSelectWindow"
68
+     onmouseover="return searchBox.OnSearchSelectShow()"
69
+     onmouseout="return searchBox.OnSearchSelectHide()"
70
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
71
+</div>
72
+
73
+<!-- iframe showing the search results (closed by default) -->
74
+<div id="MSearchResultsWindow">
75
+<iframe src="javascript:void(0)" frameborder="0" 
76
+        name="MSearchResults" id="MSearchResults">
77
+</iframe>
78
+</div>
79
+
80
+<div id="nav-path" class="navpath">
81
+  <ul>
82
+<li class="navelem"><a class="el" href="dir_cf6ae5303f77eb2b244aeafbd603daac.html">bk</a></li>  </ul>
83
+</div>
84
+</div><!-- top -->
85
+<div class="header">
86
+  <div class="headertitle">
87
+<div class="title">mainwindow.h</div>  </div>
88
+</div><!--header-->
89
+<div class="contents">
90
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// RAN 2015-07-03 - Moved some prototypes to filter.h</span></div>
91
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;</div>
92
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#ifndef MAINWINDOW_H</span></div>
93
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#define MAINWINDOW_H</span></div>
94
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div>
95
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;QMainWindow&gt;</span></div>
96
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;QFileDialog&gt;</span></div>
97
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;QDir&gt;</span></div>
98
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;QMessageBox&gt;</span></div>
99
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;QSlider&gt;</span></div>
100
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;QShortcut&gt;</span></div>
101
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;QMessageBox&gt;</span></div>
102
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div>
103
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define WHITE 0xffffffff</span></div>
104
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#define BLACK 0xff000000</span></div>
105
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div>
106
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_ui.html">Ui</a> {</div>
107
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">class </span><a class="code" href="class_main_window.html">MainWindow</a>;</div>
108
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;}</div>
109
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div>
110
+<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="class_main_window.html">   21</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>
111
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;{</div>
112
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;    Q_OBJECT</div>
113
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div>
114
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="keyword">public</span>:</div>
115
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow</a>(QWidget *parent = 0);</div>
116
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
117
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a92d8983ccdda1d49d2d9c6302e7aab52">GrayScale</a>(QImage &amp;);</div>
118
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div>
119
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a3d4e0cc1efd8a430d0a07901a9da96ae">VerticalFlip</a>(QImage &amp;);</div>
120
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div>
121
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a6827de64beb6250700e8bafc005379c4">HorizontalFlip</a>(QImage &amp;);</div>
122
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div>
123
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">ThresholdFilter</a>(QImage &amp;, QImage &amp;,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> , <span class="keywordtype">bool</span>);</div>
124
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div>
125
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    ~<a class="code" href="class_main_window.html">MainWindow</a>();</div>
126
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div>
127
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keyword">private</span> slots:</div>
128
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div>
129
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768">on_actionLoad_Image_triggered</a>();</div>
130
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div>
131
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4">on_actionSave_Image_triggered</a>();</div>
132
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div>
133
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <span class="keywordtype">void</span> on_actionClose_Window_triggered();</div>
134
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div>
135
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636">on_actionInvert_Threshold_Colors_triggered</a>();</div>
136
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div>
137
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320">on_actionFlip_Image_Horizontally_triggered</a>();</div>
138
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div>
139
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aee732b0d048591cff1432aa7992ae474">on_actionFlip_Image_Vertically_triggered</a>();</div>
140
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div>
141
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0">on_actionApply_Grey_Scale_Filter_triggered</a>();</div>
142
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div>
143
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8">on_actionRevert_Edited_Image_to_Original_triggered</a>();</div>
144
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
145
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a7a83ec2aee41b85977c9a832de61346b">on_actionInstructions_triggered</a>();</div>
146
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div>
147
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div>
148
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#ab39da572361126e8b2b47b55dd8a9f51">applyThresholdFilter</a>();</div>
149
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div>
150
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aeeabb8c67fc108c9df2b0da0d9674181">instructions</a>();</div>
151
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div>
152
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div>
153
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4">on_thresholdSlider_sliderReleased</a>();</div>
154
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div>
155
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a097fcba797448372b19307a32ced737d">on_btnLoadImage_clicked</a>();</div>
156
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div>
157
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">on_btnSaveImage_clicked</a>();</div>
158
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div>
159
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a9936e00b191c04ab938897cf13690dbe">on_chboxThreshold_clicked</a>();</div>
160
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div>
161
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40">on_btnInvertThreshold_clicked</a>();</div>
162
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div>
163
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9">on_btnFlipImageHorizontally_clicked</a>();</div>
164
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div>
165
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95">on_btnFlipImageVertically_clicked</a>();</div>
166
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div>
167
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838">on_btnGreyScaleFilter_clicked</a>();</div>
168
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div>
169
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590">on_btnRevertImage_clicked</a>();</div>
170
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div>
171
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="keyword">private</span>:</div>
172
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    Ui::MainWindow *ui;</div>
173
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    QImage originalImage;  <span class="comment">//This will hold the original image.</span></div>
174
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    QImage editedImage;    <span class="comment">//This will hold the edited image.</span></div>
175
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <span class="keywordtype">bool</span> invertColor;   <span class="comment">//Boolean value of the switch button for the threshold filter.</span></div>
176
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;};</div>
177
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div>
178
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;<span class="preprocessor">#endif // MAINWINDOW_H</span></div>
179
+<div class="ttc" id="class_main_window_html_aeb76bf75157cc088511193f8190d0d95"><div class="ttname"><a href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95">MainWindow::on_btnFlipImageVertically_clicked</a></div><div class="ttdeci">void on_btnFlipImageVertically_clicked()</div><div class="ttdoc">To call the vertical flip image filter. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:253</div></div>
180
+<div class="ttc" id="class_main_window_html_aeeabb8c67fc108c9df2b0da0d9674181"><div class="ttname"><a href="class_main_window.html#aeeabb8c67fc108c9df2b0da0d9674181">MainWindow::instructions</a></div><div class="ttdeci">void instructions()</div><div class="ttdoc">To display the instructions. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:287</div></div>
181
+<div class="ttc" id="class_main_window_html_a4fc39fdbaf9fb6a3f551eea7c4e3c9ae"><div class="ttname"><a href="class_main_window.html#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">MainWindow::ThresholdFilter</a></div><div class="ttdeci">void ThresholdFilter(QImage &amp;, QImage &amp;, unsigned int, bool)</div><div class="ttdoc">Function that applies a theshold filter to the edited image. It works by creating a black and white i...</div><div class="ttdef"><b>Definition:</b> filter.cpp:82</div></div>
182
+<div class="ttc" id="class_main_window_html_a3d4e0cc1efd8a430d0a07901a9da96ae"><div class="ttname"><a href="class_main_window.html#a3d4e0cc1efd8a430d0a07901a9da96ae">MainWindow::VerticalFlip</a></div><div class="ttdeci">void VerticalFlip(QImage &amp;)</div><div class="ttdoc">Function that applies a vertical flip to the edited image. It works by putting the pixel from the ori...</div><div class="ttdef"><b>Definition:</b> filter.cpp:30</div></div>
183
+<div class="ttc" id="class_main_window_html_a803c210fefa9d0416f1b1c6c9769aa40"><div class="ttname"><a href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40">MainWindow::on_btnInvertThreshold_clicked</a></div><div class="ttdeci">void on_btnInvertThreshold_clicked()</div><div class="ttdoc">To apply the threshold filter and load the edited image to the GUI when the threshold color is invert...</div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:197</div></div>
184
+<div class="ttc" id="class_main_window_html_a78d8ae530c062adf68cd5d5d05d13320"><div class="ttname"><a href="class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320">MainWindow::on_actionFlip_Image_Horizontally_triggered</a></div><div class="ttdeci">void on_actionFlip_Image_Horizontally_triggered()</div><div class="ttdoc">Invokes function on_btnFlipImageHorizontally_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:114</div></div>
185
+<div class="ttc" id="class_main_window_html_a4a615fae77ffcbb3ff634215be270590"><div class="ttname"><a href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590">MainWindow::on_btnRevertImage_clicked</a></div><div class="ttdeci">void on_btnRevertImage_clicked()</div><div class="ttdoc">To reset the edited image to the original image. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:275</div></div>
186
+<div class="ttc" id="class_main_window_html_aadc6d08a96c6003b94d29b254de97838"><div class="ttname"><a href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838">MainWindow::on_btnGreyScaleFilter_clicked</a></div><div class="ttdeci">void on_btnGreyScaleFilter_clicked()</div><div class="ttdoc">To call the Gray Scale image filter. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:264</div></div>
187
+<div class="ttc" id="namespace_ui_html"><div class="ttname"><a href="namespace_ui.html">Ui</a></div><div class="ttdef"><b>Definition:</b> mainwindow.h:17</div></div>
188
+<div class="ttc" id="class_main_window_html_aa2b30fce1731a2ba1818f60ee9dc45a4"><div class="ttname"><a href="class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4">MainWindow::on_thresholdSlider_sliderReleased</a></div><div class="ttdeci">void on_thresholdSlider_sliderReleased()</div><div class="ttdoc">To apply the threshold filter and load the edited image to the GUI when the GUI slider is moved...</div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:185</div></div>
189
+<div class="ttc" id="class_main_window_html_ad5d0ca46a9061f5a22f84494de29f8d9"><div class="ttname"><a href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9">MainWindow::on_btnFlipImageHorizontally_clicked</a></div><div class="ttdeci">void on_btnFlipImageHorizontally_clicked()</div><div class="ttdoc">To call the horizontal flip image filter. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:242</div></div>
190
+<div class="ttc" id="class_main_window_html_aee732b0d048591cff1432aa7992ae474"><div class="ttname"><a href="class_main_window.html#aee732b0d048591cff1432aa7992ae474">MainWindow::on_actionFlip_Image_Vertically_triggered</a></div><div class="ttdeci">void on_actionFlip_Image_Vertically_triggered()</div><div class="ttdoc">Invokes function on_btnFlipImageVertically_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:123</div></div>
191
+<div class="ttc" id="class_main_window_html_ad495b5030e61fb55b8ab95c5a3a559d6"><div class="ttname"><a href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">MainWindow::on_btnSaveImage_clicked</a></div><div class="ttdeci">void on_btnSaveImage_clicked()</div><div class="ttdoc">To save an image to the file system when the save image option is selected. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:230</div></div>
192
+<div class="ttc" id="class_main_window_html_a86de73fc655de25fc6bed09f8ee304a0"><div class="ttname"><a href="class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0">MainWindow::on_actionApply_Grey_Scale_Filter_triggered</a></div><div class="ttdeci">void on_actionApply_Grey_Scale_Filter_triggered()</div><div class="ttdoc">Invokes function on_btnGreyScaleFilter_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:132</div></div>
193
+<div class="ttc" id="class_main_window_html_a097fcba797448372b19307a32ced737d"><div class="ttname"><a href="class_main_window.html#a097fcba797448372b19307a32ced737d">MainWindow::on_btnLoadImage_clicked</a></div><div class="ttdeci">void on_btnLoadImage_clicked()</div><div class="ttdoc">To load an image to the GUI when the load image option is selected. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:210</div></div>
194
+<div class="ttc" id="class_main_window_html_a6827de64beb6250700e8bafc005379c4"><div class="ttname"><a href="class_main_window.html#a6827de64beb6250700e8bafc005379c4">MainWindow::HorizontalFlip</a></div><div class="ttdeci">void HorizontalFlip(QImage &amp;)</div><div class="ttdoc">Function that applies a horizontal flip to the edited image. It works by putting the pixel from the o...</div><div class="ttdef"><b>Definition:</b> filter.cpp:57</div></div>
195
+<div class="ttc" id="class_main_window_html_a7a83ec2aee41b85977c9a832de61346b"><div class="ttname"><a href="class_main_window.html#a7a83ec2aee41b85977c9a832de61346b">MainWindow::on_actionInstructions_triggered</a></div><div class="ttdeci">void on_actionInstructions_triggered()</div><div class="ttdoc">To display the instructions. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:150</div></div>
196
+<div class="ttc" id="class_main_window_html_aab8ca019ab84ef9c21ed9301abca6636"><div class="ttname"><a href="class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636">MainWindow::on_actionInvert_Threshold_Colors_triggered</a></div><div class="ttdeci">void on_actionInvert_Threshold_Colors_triggered()</div><div class="ttdoc">Invokes function on_btnInvertThreshold_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:105</div></div>
197
+<div class="ttc" id="class_main_window_html_a8b244be8b7b7db1b08de2a2acb9409db"><div class="ttname"><a href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow::MainWindow</a></div><div class="ttdeci">MainWindow(QWidget *parent=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:14</div></div>
198
+<div class="ttc" id="class_main_window_html_ab39da572361126e8b2b47b55dd8a9f51"><div class="ttname"><a href="class_main_window.html#ab39da572361126e8b2b47b55dd8a9f51">MainWindow::applyThresholdFilter</a></div><div class="ttdeci">void applyThresholdFilter()</div><div class="ttdoc">To apply the threshold filter. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:174</div></div>
199
+<div class="ttc" id="class_main_window_html_a92d8983ccdda1d49d2d9c6302e7aab52"><div class="ttname"><a href="class_main_window.html#a92d8983ccdda1d49d2d9c6302e7aab52">MainWindow::GrayScale</a></div><div class="ttdeci">void GrayScale(QImage &amp;)</div><div class="ttdoc">Function that applies a greyscale filter in the edited image. It works by turning each pixel into the...</div><div class="ttdef"><b>Definition:</b> filter.cpp:10</div></div>
200
+<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:21</div></div>
201
+<div class="ttc" id="class_main_window_html_a579dbaf9e4684318a252f7bc471e2db8"><div class="ttname"><a href="class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8">MainWindow::on_actionRevert_Edited_Image_to_Original_triggered</a></div><div class="ttdeci">void on_actionRevert_Edited_Image_to_Original_triggered()</div><div class="ttdoc">Invokes function on_btnRevertImage_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:141</div></div>
202
+<div class="ttc" id="class_main_window_html_a9936e00b191c04ab938897cf13690dbe"><div class="ttname"><a href="class_main_window.html#a9936e00b191c04ab938897cf13690dbe">MainWindow::on_chboxThreshold_clicked</a></div><div class="ttdeci">void on_chboxThreshold_clicked()</div><div class="ttdoc">To apply the threshold filter and load the edited image to the GUI. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:159</div></div>
203
+<div class="ttc" id="class_main_window_html_a9064a0047e3e77e6d48ebb59bd711da4"><div class="ttname"><a href="class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4">MainWindow::on_actionSave_Image_triggered</a></div><div class="ttdeci">void on_actionSave_Image_triggered()</div><div class="ttdoc">Invokes function on_btnSaveImage_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:87</div></div>
204
+<div class="ttc" id="class_main_window_html_a4ff08d0fe0eca41750440ca1f4d9c768"><div class="ttname"><a href="class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768">MainWindow::on_actionLoad_Image_triggered</a></div><div class="ttdeci">void on_actionLoad_Image_triggered()</div><div class="ttdoc">Invokes function on_btnLoadImage_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:78</div></div>
205
+</div><!-- fragment --></div><!-- contents -->
206
+<!-- start footer part -->
207
+<hr class="footer"/><address class="footer"><small>
208
+Generated on Tue Aug 11 2015 13:49:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
209
+<img class="footer" src="doxygen.png" alt="doxygen"/>
210
+</a> 1.8.9.1
211
+</small></address>
212
+</body>
213
+</html>

+ 156
- 0
doc/en/html/class_main_window-members.html Vedi File

@@ -0,0 +1,156 @@
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 class="even"><td class="entry"><a class="el" href="class_main_window.html#ab39da572361126e8b2b47b55dd8a9f51">applyThresholdFilter</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>
93
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>applyThresholdFilter</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><span class="mlabel">slot</span></td></tr>
94
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>editedImage</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>
95
+  <tr><td class="entry"><a class="el" href="class_main_window.html#a92d8983ccdda1d49d2d9c6302e7aab52">GrayScale</a>(QImage &amp;)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"></td></tr>
96
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GrayScale</b>(QImage &amp;) (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>
97
+  <tr><td class="entry"><a class="el" href="class_main_window.html#a6827de64beb6250700e8bafc005379c4">HorizontalFlip</a>(QImage &amp;)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"></td></tr>
98
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>HorizontalFlip</b>(QImage &amp;) (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>
99
+  <tr><td class="entry"><a class="el" href="class_main_window.html#aeeabb8c67fc108c9df2b0da0d9674181">instructions</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 bgcolor="#f0f0f0" class="even"><td class="entry"><b>instructions</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><span class="mlabel">slot</span></td></tr>
101
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>invertColor</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>
102
+  <tr class="even"><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>
103
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>MainWindow</b>(QWidget *parent=0) (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">explicit</span></td></tr>
104
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0">on_actionApply_Grey_Scale_Filter_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>
105
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_actionApply_Grey_Scale_Filter_triggered</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><span class="mlabel">slot</span></td></tr>
106
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>on_actionClose_Window_triggered</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><span class="mlabel">slot</span></td></tr>
107
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_actionClose_Window_triggered</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><span class="mlabel">slot</span></td></tr>
108
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320">on_actionFlip_Image_Horizontally_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>
109
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_actionFlip_Image_Horizontally_triggered</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><span class="mlabel">slot</span></td></tr>
110
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#aee732b0d048591cff1432aa7992ae474">on_actionFlip_Image_Vertically_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>
111
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_actionFlip_Image_Vertically_triggered</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><span class="mlabel">slot</span></td></tr>
112
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a7a83ec2aee41b85977c9a832de61346b">on_actionInstructions_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>
113
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_actionInstructions_triggered</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><span class="mlabel">slot</span></td></tr>
114
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636">on_actionInvert_Threshold_Colors_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>
115
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_actionInvert_Threshold_Colors_triggered</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><span class="mlabel">slot</span></td></tr>
116
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768">on_actionLoad_Image_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>
117
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_actionLoad_Image_triggered</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><span class="mlabel">slot</span></td></tr>
118
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8">on_actionRevert_Edited_Image_to_Original_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>
119
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_actionRevert_Edited_Image_to_Original_triggered</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><span class="mlabel">slot</span></td></tr>
120
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4">on_actionSave_Image_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>
121
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_actionSave_Image_triggered</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><span class="mlabel">slot</span></td></tr>
122
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9">on_btnFlipImageHorizontally_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>
123
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_btnFlipImageHorizontally_clicked</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><span class="mlabel">slot</span></td></tr>
124
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95">on_btnFlipImageVertically_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>
125
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_btnFlipImageVertically_clicked</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><span class="mlabel">slot</span></td></tr>
126
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838">on_btnGreyScaleFilter_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>
127
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_btnGreyScaleFilter_clicked</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><span class="mlabel">slot</span></td></tr>
128
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40">on_btnInvertThreshold_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>
129
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_btnInvertThreshold_clicked</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><span class="mlabel">slot</span></td></tr>
130
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a097fcba797448372b19307a32ced737d">on_btnLoadImage_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>
131
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_btnLoadImage_clicked</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><span class="mlabel">slot</span></td></tr>
132
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590">on_btnRevertImage_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>
133
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_btnRevertImage_clicked</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><span class="mlabel">slot</span></td></tr>
134
+  <tr class="even"><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>
135
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_btnSaveImage_clicked</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><span class="mlabel">slot</span></td></tr>
136
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a9936e00b191c04ab938897cf13690dbe">on_chboxThreshold_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>
137
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_chboxThreshold_clicked</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><span class="mlabel">slot</span></td></tr>
138
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4">on_thresholdSlider_sliderReleased</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>
139
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>on_thresholdSlider_sliderReleased</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><span class="mlabel">slot</span></td></tr>
140
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>originalImage</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>
141
+  <tr><td class="entry"><a class="el" href="class_main_window.html#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">ThresholdFilter</a>(QImage &amp;, QImage &amp;, unsigned int, bool)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"></td></tr>
142
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ThresholdFilter</b>(QImage &amp;, QImage &amp;, unsigned int, bool) (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>
143
+  <tr bgcolor="#f0f0f0"><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>
144
+  <tr class="even"><td class="entry"><a class="el" href="class_main_window.html#a3d4e0cc1efd8a430d0a07901a9da96ae">VerticalFlip</a>(QImage &amp;)</td><td class="entry"><a class="el" href="class_main_window.html">MainWindow</a></td><td class="entry"></td></tr>
145
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>VerticalFlip</b>(QImage &amp;) (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>
146
+  <tr bgcolor="#f0f0f0" class="even"><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>
147
+  <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>
148
+</table></div><!-- contents -->
149
+<!-- start footer part -->
150
+<hr class="footer"/><address class="footer"><small>
151
+Generated on Tue Aug 11 2015 13:49:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
152
+<img class="footer" src="doxygen.png" alt="doxygen"/>
153
+</a> 1.8.9.1
154
+</small></address>
155
+</body>
156
+</html>

+ 497
- 0
doc/en/html/class_main_window.html Vedi File

@@ -0,0 +1,497 @@
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-attribs">Private Attributes</a> &#124;
89
+<a href="class_main_window-members.html">List of all members</a>  </div>
90
+  <div class="headertitle">
91
+<div class="title">MainWindow Class Reference</div>  </div>
92
+</div><!--header-->
93
+<div class="contents">
94
+<div class="dynheader">
95
+Inheritance diagram for MainWindow:</div>
96
+<div class="dyncontent">
97
+ <div class="center">
98
+  <img src="class_main_window.png" usemap="#MainWindow_map" alt=""/>
99
+  <map id="MainWindow_map" name="MainWindow_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: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>
106
+<tr class="memdesc:a8b244be8b7b7db1b08de2a2acb9409db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a8b244be8b7b7db1b08de2a2acb9409db">More...</a><br /></td></tr>
107
+<tr class="separator:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memSeparator" colspan="2">&#160;</td></tr>
108
+<tr class="memitem:a92d8983ccdda1d49d2d9c6302e7aab52"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a92d8983ccdda1d49d2d9c6302e7aab52">GrayScale</a> (QImage &amp;)</td></tr>
109
+<tr class="memdesc:a92d8983ccdda1d49d2d9c6302e7aab52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that applies a greyscale filter in the edited image. It works by turning each pixel into the color grey.  <a href="#a92d8983ccdda1d49d2d9c6302e7aab52">More...</a><br /></td></tr>
110
+<tr class="separator:a92d8983ccdda1d49d2d9c6302e7aab52"><td class="memSeparator" colspan="2">&#160;</td></tr>
111
+<tr class="memitem:a3d4e0cc1efd8a430d0a07901a9da96ae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a3d4e0cc1efd8a430d0a07901a9da96ae">VerticalFlip</a> (QImage &amp;)</td></tr>
112
+<tr class="memdesc:a3d4e0cc1efd8a430d0a07901a9da96ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that applies a vertical flip to the edited image. It works by putting the pixel from the original image in the heigth-1-j position of the edited image.  <a href="#a3d4e0cc1efd8a430d0a07901a9da96ae">More...</a><br /></td></tr>
113
+<tr class="separator:a3d4e0cc1efd8a430d0a07901a9da96ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
114
+<tr class="memitem:a6827de64beb6250700e8bafc005379c4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a6827de64beb6250700e8bafc005379c4">HorizontalFlip</a> (QImage &amp;)</td></tr>
115
+<tr class="memdesc:a6827de64beb6250700e8bafc005379c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that applies a horizontal flip to the edited image. It works by putting the pixel from the original image in the width-1-i position of the edited image.  <a href="#a6827de64beb6250700e8bafc005379c4">More...</a><br /></td></tr>
116
+<tr class="separator:a6827de64beb6250700e8bafc005379c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
117
+<tr class="memitem:a4fc39fdbaf9fb6a3f551eea7c4e3c9ae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">ThresholdFilter</a> (QImage &amp;, QImage &amp;, unsigned int, bool)</td></tr>
118
+<tr class="memdesc:a4fc39fdbaf9fb6a3f551eea7c4e3c9ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that applies a theshold filter to the edited image. It works by creating a black and white image where the color of the new pixel is white or black depending on a threshold value and the average of the colors of the pixel of the original image.  <a href="#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">More...</a><br /></td></tr>
119
+<tr class="separator:a4fc39fdbaf9fb6a3f551eea7c4e3c9ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
120
+<tr class="memitem:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b244be8b7b7db1b08de2a2acb9409db"></a>
121
+&#160;</td><td class="memItemRight" valign="bottom"><b>MainWindow</b> (QWidget *parent=0)</td></tr>
122
+<tr class="separator:a8b244be8b7b7db1b08de2a2acb9409db"><td class="memSeparator" colspan="2">&#160;</td></tr>
123
+<tr class="memitem:a92d8983ccdda1d49d2d9c6302e7aab52"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92d8983ccdda1d49d2d9c6302e7aab52"></a>
124
+void&#160;</td><td class="memItemRight" valign="bottom"><b>GrayScale</b> (QImage &amp;)</td></tr>
125
+<tr class="separator:a92d8983ccdda1d49d2d9c6302e7aab52"><td class="memSeparator" colspan="2">&#160;</td></tr>
126
+<tr class="memitem:a3d4e0cc1efd8a430d0a07901a9da96ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d4e0cc1efd8a430d0a07901a9da96ae"></a>
127
+void&#160;</td><td class="memItemRight" valign="bottom"><b>VerticalFlip</b> (QImage &amp;)</td></tr>
128
+<tr class="separator:a3d4e0cc1efd8a430d0a07901a9da96ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
129
+<tr class="memitem:a6827de64beb6250700e8bafc005379c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6827de64beb6250700e8bafc005379c4"></a>
130
+void&#160;</td><td class="memItemRight" valign="bottom"><b>HorizontalFlip</b> (QImage &amp;)</td></tr>
131
+<tr class="separator:a6827de64beb6250700e8bafc005379c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
132
+<tr class="memitem:a4fc39fdbaf9fb6a3f551eea7c4e3c9ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4fc39fdbaf9fb6a3f551eea7c4e3c9ae"></a>
133
+void&#160;</td><td class="memItemRight" valign="bottom"><b>ThresholdFilter</b> (QImage &amp;, QImage &amp;, unsigned int, bool)</td></tr>
134
+<tr class="separator:a4fc39fdbaf9fb6a3f551eea7c4e3c9ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
135
+</table><table class="memberdecls">
136
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-slots"></a>
137
+Private Slots</h2></td></tr>
138
+<tr class="memitem:a4ff08d0fe0eca41750440ca1f4d9c768"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768">on_actionLoad_Image_triggered</a> ()</td></tr>
139
+<tr class="memdesc:a4ff08d0fe0eca41750440ca1f4d9c768"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invokes function <a class="el" href="class_main_window.html#a097fcba797448372b19307a32ced737d" title="To load an image to the GUI when the load image option is selected. ">on_btnLoadImage_clicked()</a>  <a href="#a4ff08d0fe0eca41750440ca1f4d9c768">More...</a><br /></td></tr>
140
+<tr class="separator:a4ff08d0fe0eca41750440ca1f4d9c768"><td class="memSeparator" colspan="2">&#160;</td></tr>
141
+<tr class="memitem:a9064a0047e3e77e6d48ebb59bd711da4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9064a0047e3e77e6d48ebb59bd711da4"></a>
142
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4">on_actionSave_Image_triggered</a> ()</td></tr>
143
+<tr class="memdesc:a9064a0047e3e77e6d48ebb59bd711da4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invokes function <a class="el" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6" title="To save an image to the file system when the save image option is selected. ">on_btnSaveImage_clicked()</a> <br /></td></tr>
144
+<tr class="separator:a9064a0047e3e77e6d48ebb59bd711da4"><td class="memSeparator" colspan="2">&#160;</td></tr>
145
+<tr class="memitem:addb3dd1ec7fe84f4d8a7b63bc7431b5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addb3dd1ec7fe84f4d8a7b63bc7431b5a"></a>
146
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_actionClose_Window_triggered</b> ()</td></tr>
147
+<tr class="separator:addb3dd1ec7fe84f4d8a7b63bc7431b5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
148
+<tr class="memitem:aab8ca019ab84ef9c21ed9301abca6636"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab8ca019ab84ef9c21ed9301abca6636"></a>
149
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636">on_actionInvert_Threshold_Colors_triggered</a> ()</td></tr>
150
+<tr class="memdesc:aab8ca019ab84ef9c21ed9301abca6636"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invokes function <a class="el" href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40" title="To apply the threshold filter and load the edited image to the GUI when the threshold color is invert...">on_btnInvertThreshold_clicked()</a> <br /></td></tr>
151
+<tr class="separator:aab8ca019ab84ef9c21ed9301abca6636"><td class="memSeparator" colspan="2">&#160;</td></tr>
152
+<tr class="memitem:a78d8ae530c062adf68cd5d5d05d13320"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78d8ae530c062adf68cd5d5d05d13320"></a>
153
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320">on_actionFlip_Image_Horizontally_triggered</a> ()</td></tr>
154
+<tr class="memdesc:a78d8ae530c062adf68cd5d5d05d13320"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invokes function <a class="el" href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9" title="To call the horizontal flip image filter. ">on_btnFlipImageHorizontally_clicked()</a> <br /></td></tr>
155
+<tr class="separator:a78d8ae530c062adf68cd5d5d05d13320"><td class="memSeparator" colspan="2">&#160;</td></tr>
156
+<tr class="memitem:aee732b0d048591cff1432aa7992ae474"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee732b0d048591cff1432aa7992ae474"></a>
157
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#aee732b0d048591cff1432aa7992ae474">on_actionFlip_Image_Vertically_triggered</a> ()</td></tr>
158
+<tr class="memdesc:aee732b0d048591cff1432aa7992ae474"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invokes function <a class="el" href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95" title="To call the vertical flip image filter. ">on_btnFlipImageVertically_clicked()</a> <br /></td></tr>
159
+<tr class="separator:aee732b0d048591cff1432aa7992ae474"><td class="memSeparator" colspan="2">&#160;</td></tr>
160
+<tr class="memitem:a86de73fc655de25fc6bed09f8ee304a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86de73fc655de25fc6bed09f8ee304a0"></a>
161
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0">on_actionApply_Grey_Scale_Filter_triggered</a> ()</td></tr>
162
+<tr class="memdesc:a86de73fc655de25fc6bed09f8ee304a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invokes function <a class="el" href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838" title="To call the Gray Scale image filter. ">on_btnGreyScaleFilter_clicked()</a> <br /></td></tr>
163
+<tr class="separator:a86de73fc655de25fc6bed09f8ee304a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
164
+<tr class="memitem:a579dbaf9e4684318a252f7bc471e2db8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a579dbaf9e4684318a252f7bc471e2db8"></a>
165
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8">on_actionRevert_Edited_Image_to_Original_triggered</a> ()</td></tr>
166
+<tr class="memdesc:a579dbaf9e4684318a252f7bc471e2db8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invokes function <a class="el" href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590" title="To reset the edited image to the original image. ">on_btnRevertImage_clicked()</a> <br /></td></tr>
167
+<tr class="separator:a579dbaf9e4684318a252f7bc471e2db8"><td class="memSeparator" colspan="2">&#160;</td></tr>
168
+<tr class="memitem:a7a83ec2aee41b85977c9a832de61346b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a83ec2aee41b85977c9a832de61346b"></a>
169
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a7a83ec2aee41b85977c9a832de61346b">on_actionInstructions_triggered</a> ()</td></tr>
170
+<tr class="memdesc:a7a83ec2aee41b85977c9a832de61346b"><td class="mdescLeft">&#160;</td><td class="mdescRight">To display the instructions. <br /></td></tr>
171
+<tr class="separator:a7a83ec2aee41b85977c9a832de61346b"><td class="memSeparator" colspan="2">&#160;</td></tr>
172
+<tr class="memitem:ab39da572361126e8b2b47b55dd8a9f51"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab39da572361126e8b2b47b55dd8a9f51"></a>
173
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#ab39da572361126e8b2b47b55dd8a9f51">applyThresholdFilter</a> ()</td></tr>
174
+<tr class="memdesc:ab39da572361126e8b2b47b55dd8a9f51"><td class="mdescLeft">&#160;</td><td class="mdescRight">To apply the threshold filter. <br /></td></tr>
175
+<tr class="separator:ab39da572361126e8b2b47b55dd8a9f51"><td class="memSeparator" colspan="2">&#160;</td></tr>
176
+<tr class="memitem:aeeabb8c67fc108c9df2b0da0d9674181"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeeabb8c67fc108c9df2b0da0d9674181"></a>
177
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#aeeabb8c67fc108c9df2b0da0d9674181">instructions</a> ()</td></tr>
178
+<tr class="memdesc:aeeabb8c67fc108c9df2b0da0d9674181"><td class="mdescLeft">&#160;</td><td class="mdescRight">To display the instructions. <br /></td></tr>
179
+<tr class="separator:aeeabb8c67fc108c9df2b0da0d9674181"><td class="memSeparator" colspan="2">&#160;</td></tr>
180
+<tr class="memitem:aa2b30fce1731a2ba1818f60ee9dc45a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2b30fce1731a2ba1818f60ee9dc45a4"></a>
181
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4">on_thresholdSlider_sliderReleased</a> ()</td></tr>
182
+<tr class="memdesc:aa2b30fce1731a2ba1818f60ee9dc45a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">To apply the threshold filter and load the edited image to the GUI when the GUI slider is moved. <br /></td></tr>
183
+<tr class="separator:aa2b30fce1731a2ba1818f60ee9dc45a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
184
+<tr class="memitem:a097fcba797448372b19307a32ced737d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097fcba797448372b19307a32ced737d"></a>
185
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a097fcba797448372b19307a32ced737d">on_btnLoadImage_clicked</a> ()</td></tr>
186
+<tr class="memdesc:a097fcba797448372b19307a32ced737d"><td class="mdescLeft">&#160;</td><td class="mdescRight">To load an image to the GUI when the load image option is selected. <br /></td></tr>
187
+<tr class="separator:a097fcba797448372b19307a32ced737d"><td class="memSeparator" colspan="2">&#160;</td></tr>
188
+<tr class="memitem:ad495b5030e61fb55b8ab95c5a3a559d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad495b5030e61fb55b8ab95c5a3a559d6"></a>
189
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">on_btnSaveImage_clicked</a> ()</td></tr>
190
+<tr class="memdesc:ad495b5030e61fb55b8ab95c5a3a559d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">To save an image to the file system when the save image option is selected. <br /></td></tr>
191
+<tr class="separator:ad495b5030e61fb55b8ab95c5a3a559d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
192
+<tr class="memitem:a9936e00b191c04ab938897cf13690dbe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9936e00b191c04ab938897cf13690dbe"></a>
193
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a9936e00b191c04ab938897cf13690dbe">on_chboxThreshold_clicked</a> ()</td></tr>
194
+<tr class="memdesc:a9936e00b191c04ab938897cf13690dbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">To apply the threshold filter and load the edited image to the GUI. <br /></td></tr>
195
+<tr class="separator:a9936e00b191c04ab938897cf13690dbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
196
+<tr class="memitem:a803c210fefa9d0416f1b1c6c9769aa40"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a803c210fefa9d0416f1b1c6c9769aa40"></a>
197
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40">on_btnInvertThreshold_clicked</a> ()</td></tr>
198
+<tr class="memdesc:a803c210fefa9d0416f1b1c6c9769aa40"><td class="mdescLeft">&#160;</td><td class="mdescRight">To apply the threshold filter and load the edited image to the GUI when the threshold color is inverted. <br /></td></tr>
199
+<tr class="separator:a803c210fefa9d0416f1b1c6c9769aa40"><td class="memSeparator" colspan="2">&#160;</td></tr>
200
+<tr class="memitem:ad5d0ca46a9061f5a22f84494de29f8d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5d0ca46a9061f5a22f84494de29f8d9"></a>
201
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9">on_btnFlipImageHorizontally_clicked</a> ()</td></tr>
202
+<tr class="memdesc:ad5d0ca46a9061f5a22f84494de29f8d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">To call the horizontal flip image filter. <br /></td></tr>
203
+<tr class="separator:ad5d0ca46a9061f5a22f84494de29f8d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
204
+<tr class="memitem:aeb76bf75157cc088511193f8190d0d95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb76bf75157cc088511193f8190d0d95"></a>
205
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95">on_btnFlipImageVertically_clicked</a> ()</td></tr>
206
+<tr class="memdesc:aeb76bf75157cc088511193f8190d0d95"><td class="mdescLeft">&#160;</td><td class="mdescRight">To call the vertical flip image filter. <br /></td></tr>
207
+<tr class="separator:aeb76bf75157cc088511193f8190d0d95"><td class="memSeparator" colspan="2">&#160;</td></tr>
208
+<tr class="memitem:aadc6d08a96c6003b94d29b254de97838"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aadc6d08a96c6003b94d29b254de97838"></a>
209
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838">on_btnGreyScaleFilter_clicked</a> ()</td></tr>
210
+<tr class="memdesc:aadc6d08a96c6003b94d29b254de97838"><td class="mdescLeft">&#160;</td><td class="mdescRight">To call the Gray Scale image filter. <br /></td></tr>
211
+<tr class="separator:aadc6d08a96c6003b94d29b254de97838"><td class="memSeparator" colspan="2">&#160;</td></tr>
212
+<tr class="memitem:a4a615fae77ffcbb3ff634215be270590"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a615fae77ffcbb3ff634215be270590"></a>
213
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590">on_btnRevertImage_clicked</a> ()</td></tr>
214
+<tr class="memdesc:a4a615fae77ffcbb3ff634215be270590"><td class="mdescLeft">&#160;</td><td class="mdescRight">To reset the edited image to the original image. <br /></td></tr>
215
+<tr class="separator:a4a615fae77ffcbb3ff634215be270590"><td class="memSeparator" colspan="2">&#160;</td></tr>
216
+<tr class="memitem:a4ff08d0fe0eca41750440ca1f4d9c768"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ff08d0fe0eca41750440ca1f4d9c768"></a>
217
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_actionLoad_Image_triggered</b> ()</td></tr>
218
+<tr class="separator:a4ff08d0fe0eca41750440ca1f4d9c768"><td class="memSeparator" colspan="2">&#160;</td></tr>
219
+<tr class="memitem:a9064a0047e3e77e6d48ebb59bd711da4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9064a0047e3e77e6d48ebb59bd711da4"></a>
220
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_actionSave_Image_triggered</b> ()</td></tr>
221
+<tr class="separator:a9064a0047e3e77e6d48ebb59bd711da4"><td class="memSeparator" colspan="2">&#160;</td></tr>
222
+<tr class="memitem:addb3dd1ec7fe84f4d8a7b63bc7431b5a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addb3dd1ec7fe84f4d8a7b63bc7431b5a"></a>
223
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_actionClose_Window_triggered</b> ()</td></tr>
224
+<tr class="separator:addb3dd1ec7fe84f4d8a7b63bc7431b5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
225
+<tr class="memitem:aab8ca019ab84ef9c21ed9301abca6636"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab8ca019ab84ef9c21ed9301abca6636"></a>
226
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_actionInvert_Threshold_Colors_triggered</b> ()</td></tr>
227
+<tr class="separator:aab8ca019ab84ef9c21ed9301abca6636"><td class="memSeparator" colspan="2">&#160;</td></tr>
228
+<tr class="memitem:a78d8ae530c062adf68cd5d5d05d13320"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78d8ae530c062adf68cd5d5d05d13320"></a>
229
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_actionFlip_Image_Horizontally_triggered</b> ()</td></tr>
230
+<tr class="separator:a78d8ae530c062adf68cd5d5d05d13320"><td class="memSeparator" colspan="2">&#160;</td></tr>
231
+<tr class="memitem:aee732b0d048591cff1432aa7992ae474"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee732b0d048591cff1432aa7992ae474"></a>
232
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_actionFlip_Image_Vertically_triggered</b> ()</td></tr>
233
+<tr class="separator:aee732b0d048591cff1432aa7992ae474"><td class="memSeparator" colspan="2">&#160;</td></tr>
234
+<tr class="memitem:a86de73fc655de25fc6bed09f8ee304a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86de73fc655de25fc6bed09f8ee304a0"></a>
235
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_actionApply_Grey_Scale_Filter_triggered</b> ()</td></tr>
236
+<tr class="separator:a86de73fc655de25fc6bed09f8ee304a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
237
+<tr class="memitem:a579dbaf9e4684318a252f7bc471e2db8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a579dbaf9e4684318a252f7bc471e2db8"></a>
238
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_actionRevert_Edited_Image_to_Original_triggered</b> ()</td></tr>
239
+<tr class="separator:a579dbaf9e4684318a252f7bc471e2db8"><td class="memSeparator" colspan="2">&#160;</td></tr>
240
+<tr class="memitem:a7a83ec2aee41b85977c9a832de61346b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a83ec2aee41b85977c9a832de61346b"></a>
241
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_actionInstructions_triggered</b> ()</td></tr>
242
+<tr class="separator:a7a83ec2aee41b85977c9a832de61346b"><td class="memSeparator" colspan="2">&#160;</td></tr>
243
+<tr class="memitem:ab39da572361126e8b2b47b55dd8a9f51"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab39da572361126e8b2b47b55dd8a9f51"></a>
244
+void&#160;</td><td class="memItemRight" valign="bottom"><b>applyThresholdFilter</b> ()</td></tr>
245
+<tr class="separator:ab39da572361126e8b2b47b55dd8a9f51"><td class="memSeparator" colspan="2">&#160;</td></tr>
246
+<tr class="memitem:aeeabb8c67fc108c9df2b0da0d9674181"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeeabb8c67fc108c9df2b0da0d9674181"></a>
247
+void&#160;</td><td class="memItemRight" valign="bottom"><b>instructions</b> ()</td></tr>
248
+<tr class="separator:aeeabb8c67fc108c9df2b0da0d9674181"><td class="memSeparator" colspan="2">&#160;</td></tr>
249
+<tr class="memitem:aa2b30fce1731a2ba1818f60ee9dc45a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2b30fce1731a2ba1818f60ee9dc45a4"></a>
250
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_thresholdSlider_sliderReleased</b> ()</td></tr>
251
+<tr class="separator:aa2b30fce1731a2ba1818f60ee9dc45a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
252
+<tr class="memitem:a097fcba797448372b19307a32ced737d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a097fcba797448372b19307a32ced737d"></a>
253
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_btnLoadImage_clicked</b> ()</td></tr>
254
+<tr class="separator:a097fcba797448372b19307a32ced737d"><td class="memSeparator" colspan="2">&#160;</td></tr>
255
+<tr class="memitem:ad495b5030e61fb55b8ab95c5a3a559d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad495b5030e61fb55b8ab95c5a3a559d6"></a>
256
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_btnSaveImage_clicked</b> ()</td></tr>
257
+<tr class="separator:ad495b5030e61fb55b8ab95c5a3a559d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
258
+<tr class="memitem:a9936e00b191c04ab938897cf13690dbe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9936e00b191c04ab938897cf13690dbe"></a>
259
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_chboxThreshold_clicked</b> ()</td></tr>
260
+<tr class="separator:a9936e00b191c04ab938897cf13690dbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
261
+<tr class="memitem:a803c210fefa9d0416f1b1c6c9769aa40"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a803c210fefa9d0416f1b1c6c9769aa40"></a>
262
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_btnInvertThreshold_clicked</b> ()</td></tr>
263
+<tr class="separator:a803c210fefa9d0416f1b1c6c9769aa40"><td class="memSeparator" colspan="2">&#160;</td></tr>
264
+<tr class="memitem:ad5d0ca46a9061f5a22f84494de29f8d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5d0ca46a9061f5a22f84494de29f8d9"></a>
265
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_btnFlipImageHorizontally_clicked</b> ()</td></tr>
266
+<tr class="separator:ad5d0ca46a9061f5a22f84494de29f8d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
267
+<tr class="memitem:aeb76bf75157cc088511193f8190d0d95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb76bf75157cc088511193f8190d0d95"></a>
268
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_btnFlipImageVertically_clicked</b> ()</td></tr>
269
+<tr class="separator:aeb76bf75157cc088511193f8190d0d95"><td class="memSeparator" colspan="2">&#160;</td></tr>
270
+<tr class="memitem:aadc6d08a96c6003b94d29b254de97838"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aadc6d08a96c6003b94d29b254de97838"></a>
271
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_btnGreyScaleFilter_clicked</b> ()</td></tr>
272
+<tr class="separator:aadc6d08a96c6003b94d29b254de97838"><td class="memSeparator" colspan="2">&#160;</td></tr>
273
+<tr class="memitem:a4a615fae77ffcbb3ff634215be270590"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a615fae77ffcbb3ff634215be270590"></a>
274
+void&#160;</td><td class="memItemRight" valign="bottom"><b>on_btnRevertImage_clicked</b> ()</td></tr>
275
+<tr class="separator:a4a615fae77ffcbb3ff634215be270590"><td class="memSeparator" colspan="2">&#160;</td></tr>
276
+</table><table class="memberdecls">
277
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
278
+Private Attributes</h2></td></tr>
279
+<tr class="memitem:a43606649aeaf9e561328935fca0cd1bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43606649aeaf9e561328935fca0cd1bf"></a>
280
+Ui::MainWindow *&#160;</td><td class="memItemRight" valign="bottom"><b>ui</b></td></tr>
281
+<tr class="separator:a43606649aeaf9e561328935fca0cd1bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
282
+<tr class="memitem:a4e3a604a9d31eae583a1935b5694af3b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e3a604a9d31eae583a1935b5694af3b"></a>
283
+QImage&#160;</td><td class="memItemRight" valign="bottom"><b>originalImage</b></td></tr>
284
+<tr class="separator:a4e3a604a9d31eae583a1935b5694af3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
285
+<tr class="memitem:a958e3bd8b0adbd5675083198a25d35ab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a958e3bd8b0adbd5675083198a25d35ab"></a>
286
+QImage&#160;</td><td class="memItemRight" valign="bottom"><b>editedImage</b></td></tr>
287
+<tr class="separator:a958e3bd8b0adbd5675083198a25d35ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
288
+<tr class="memitem:a81fc322ea9d4bf48c690011789e7badf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81fc322ea9d4bf48c690011789e7badf"></a>
289
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>invertColor</b></td></tr>
290
+<tr class="separator:a81fc322ea9d4bf48c690011789e7badf"><td class="memSeparator" colspan="2">&#160;</td></tr>
291
+</table>
292
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
293
+<a class="anchor" id="a8b244be8b7b7db1b08de2a2acb9409db"></a>
294
+<div class="memitem">
295
+<div class="memproto">
296
+<table class="mlabels">
297
+  <tr>
298
+  <td class="mlabels-left">
299
+      <table class="memname">
300
+        <tr>
301
+          <td class="memname">MainWindow::MainWindow </td>
302
+          <td>(</td>
303
+          <td class="paramtype">QWidget *&#160;</td>
304
+          <td class="paramname"><em>parent</em> = <code>0</code></td><td>)</td>
305
+          <td></td>
306
+        </tr>
307
+      </table>
308
+  </td>
309
+  <td class="mlabels-right">
310
+<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
311
+  </tr>
312
+</table>
313
+</div><div class="memdoc">
314
+
315
+<p>Constructor. </p>
316
+<p>Destructor. </p>
317
+<p>KEYBOARD SHORTCUTS Loads a image with cmd + o Carga una imagen con cmd + o</p>
318
+<p>Saves a image with cmd + s Guarda una imagen con cmd + s</p>
319
+<p>Closes window with cmd + w Cierra la ventana con cmd + w</p>
320
+<p>Inverts threshold color with cmd + t Invierte el color umbral con cmd + t</p>
321
+<p>Flips horizontally a image with cmd + f Rota horizontalmente una imagen con cmd + f</p>
322
+<p>Flips vertically a image with cmd + v Rota verticalmente una imagen con cmd + v</p>
323
+<p>Applies greyscale filter to a image with cmd + g Aplica el filtro de tonos grises a una imagen con cmd + g</p>
324
+<p>Resets an edited image to the orignal one to a image with cmd + r Devuelve la imagen editada a su estado original con cmd + r</p>
325
+<p>Display the instructions with cmd + i Despliega las instrucciones con cmd + i </p>
326
+
327
+</div>
328
+</div>
329
+<h2 class="groupheader">Member Function Documentation</h2>
330
+<a class="anchor" id="a92d8983ccdda1d49d2d9c6302e7aab52"></a>
331
+<div class="memitem">
332
+<div class="memproto">
333
+      <table class="memname">
334
+        <tr>
335
+          <td class="memname">void MainWindow::GrayScale </td>
336
+          <td>(</td>
337
+          <td class="paramtype">QImage &amp;&#160;</td>
338
+          <td class="paramname"><em>editedImage</em></td><td>)</td>
339
+          <td></td>
340
+        </tr>
341
+      </table>
342
+</div><div class="memdoc">
343
+
344
+<p>Function that applies a greyscale filter in the edited image. It works by turning each pixel into the color grey. </p>
345
+<p>Function that applies a greyscale filter to the edited image. It works by turning each pixel into the color grey. For this we use two for loops to access the pixels of the edited image.</p>
346
+<dl class="params"><dt>Parameters</dt><dd>
347
+  <table class="params">
348
+    <tr><td class="paramname">originalImage</td><td>Reference to the original image (no filter) </td></tr>
349
+    <tr><td class="paramname">editedImage</td><td>Reference to the destination image with the filter applied. </td></tr>
350
+  </table>
351
+  </dd>
352
+</dl>
353
+
354
+</div>
355
+</div>
356
+<a class="anchor" id="a6827de64beb6250700e8bafc005379c4"></a>
357
+<div class="memitem">
358
+<div class="memproto">
359
+      <table class="memname">
360
+        <tr>
361
+          <td class="memname">void MainWindow::HorizontalFlip </td>
362
+          <td>(</td>
363
+          <td class="paramtype">QImage &amp;&#160;</td>
364
+          <td class="paramname"><em>editedImage</em></td><td>)</td>
365
+          <td></td>
366
+        </tr>
367
+      </table>
368
+</div><div class="memdoc">
369
+
370
+<p>Function that applies a horizontal flip to the edited image. It works by putting the pixel from the original image in the width-1-i position of the edited image. </p>
371
+<p>Function that applies a horizontal flip to the edited image For this we use two for loops to access the pixels of the images. In the first loop we go through the x axis and in the second we go through the y axis and inside of it we put the pixel from the original image in the width-1-i position of the edited image.</p>
372
+<dl class="params"><dt>Parameters</dt><dd>
373
+  <table class="params">
374
+    <tr><td class="paramname">originalImage</td><td>Reference to the original image (no filter) </td></tr>
375
+    <tr><td class="paramname">editedImage</td><td>Reference to the destination image with the filter applied. </td></tr>
376
+  </table>
377
+  </dd>
378
+</dl>
379
+
380
+</div>
381
+</div>
382
+<a class="anchor" id="a4ff08d0fe0eca41750440ca1f4d9c768"></a>
383
+<div class="memitem">
384
+<div class="memproto">
385
+<table class="mlabels">
386
+  <tr>
387
+  <td class="mlabels-left">
388
+      <table class="memname">
389
+        <tr>
390
+          <td class="memname">void MainWindow::on_actionLoad_Image_triggered </td>
391
+          <td>(</td>
392
+          <td class="paramname"></td><td>)</td>
393
+          <td></td>
394
+        </tr>
395
+      </table>
396
+  </td>
397
+  <td class="mlabels-right">
398
+<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">slot</span></span>  </td>
399
+  </tr>
400
+</table>
401
+</div><div class="memdoc">
402
+
403
+<p>Invokes function <a class="el" href="class_main_window.html#a097fcba797448372b19307a32ced737d" title="To load an image to the GUI when the load image option is selected. ">on_btnLoadImage_clicked()</a> </p>
404
+<p>ACTION FUNCTIONS </p>
405
+
406
+</div>
407
+</div>
408
+<a class="anchor" id="a4fc39fdbaf9fb6a3f551eea7c4e3c9ae"></a>
409
+<div class="memitem">
410
+<div class="memproto">
411
+      <table class="memname">
412
+        <tr>
413
+          <td class="memname">void MainWindow::ThresholdFilter </td>
414
+          <td>(</td>
415
+          <td class="paramtype">QImage &amp;&#160;</td>
416
+          <td class="paramname"><em>originalImage</em>, </td>
417
+        </tr>
418
+        <tr>
419
+          <td class="paramkey"></td>
420
+          <td></td>
421
+          <td class="paramtype">QImage &amp;&#160;</td>
422
+          <td class="paramname"><em>editedImage</em>, </td>
423
+        </tr>
424
+        <tr>
425
+          <td class="paramkey"></td>
426
+          <td></td>
427
+          <td class="paramtype">unsigned int&#160;</td>
428
+          <td class="paramname"><em>threshold</em>, </td>
429
+        </tr>
430
+        <tr>
431
+          <td class="paramkey"></td>
432
+          <td></td>
433
+          <td class="paramtype">bool&#160;</td>
434
+          <td class="paramname"><em>color</em>&#160;</td>
435
+        </tr>
436
+        <tr>
437
+          <td></td>
438
+          <td>)</td>
439
+          <td></td><td></td>
440
+        </tr>
441
+      </table>
442
+</div><div class="memdoc">
443
+
444
+<p>Function that applies a theshold filter to the edited image. It works by creating a black and white image where the color of the new pixel is white or black depending on a threshold value and the average of the colors of the pixel of the original image. </p>
445
+<dl class="params"><dt>Parameters</dt><dd>
446
+  <table class="params">
447
+    <tr><td class="paramname">originalImage</td><td>Reference to the original image (no filter) </td></tr>
448
+    <tr><td class="paramname">editedImage</td><td>Reference to the destination image with the filter applied. </td></tr>
449
+    <tr><td class="paramname">threshold</td><td>Integer value that serves as a black or white color threshold </td></tr>
450
+    <tr><td class="paramname">color</td><td>boolean value to select which color white or black if the color average is under or over the threshold.</td></tr>
451
+  </table>
452
+  </dd>
453
+</dl>
454
+<p>Function that applies a threshold filter to the edited image. For this we use two for loops to access the pixels of the images. In the first loop we go through the x axis and in the second we go through the y axis. </p>
455
+
456
+</div>
457
+</div>
458
+<a class="anchor" id="a3d4e0cc1efd8a430d0a07901a9da96ae"></a>
459
+<div class="memitem">
460
+<div class="memproto">
461
+      <table class="memname">
462
+        <tr>
463
+          <td class="memname">void MainWindow::VerticalFlip </td>
464
+          <td>(</td>
465
+          <td class="paramtype">QImage &amp;&#160;</td>
466
+          <td class="paramname"><em>editedImage</em></td><td>)</td>
467
+          <td></td>
468
+        </tr>
469
+      </table>
470
+</div><div class="memdoc">
471
+
472
+<p>Function that applies a vertical flip to the edited image. It works by putting the pixel from the original image in the heigth-1-j position of the edited image. </p>
473
+<p>Function that applies a vertical flip to the edited image. For this we use two for loops to access the pixels of the images. In the first loop we go through the x axis and in the second we go through the y axis and inside of it we put the pixel from the original image in the heigth-1-j position of the edited image.</p>
474
+<dl class="params"><dt>Parameters</dt><dd>
475
+  <table class="params">
476
+    <tr><td class="paramname">originalImage</td><td>Reference to the original image (no filter) </td></tr>
477
+    <tr><td class="paramname">editedImage</td><td>Reference to the destination image with the filter applied. </td></tr>
478
+  </table>
479
+  </dd>
480
+</dl>
481
+
482
+</div>
483
+</div>
484
+<hr/>The documentation for this class was generated from the following files:<ul>
485
+<li>bk/<a class="el" href="bk_2mainwindow_8h_source.html">mainwindow.h</a></li>
486
+<li>bk/mainwindow.cpp</li>
487
+<li>filter.cpp</li>
488
+</ul>
489
+</div><!-- contents -->
490
+<!-- start footer part -->
491
+<hr class="footer"/><address class="footer"><small>
492
+Generated on Tue Aug 11 2015 13:49:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
493
+<img class="footer" src="doxygen.png" alt="doxygen"/>
494
+</a> 1.8.9.1
495
+</small></address>
496
+</body>
497
+</html>

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


+ 106
- 0
doc/en/html/classes.html Vedi File

@@ -0,0 +1,106 @@
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_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_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
92
+</td><td></td></tr>
93
+<tr><td></td></tr>
94
+<tr><td valign="top"><a class="el" href="class_main_window.html">MainWindow</a>&#160;&#160;&#160;</td><td></td></tr>
95
+<tr><td></td><td></td></tr>
96
+</table>
97
+<div class="qindex"><a class="qindex" href="#letter_M">M</a></div>
98
+</div><!-- contents -->
99
+<!-- start footer part -->
100
+<hr class="footer"/><address class="footer"><small>
101
+Generated on Tue Aug 11 2015 13:49:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
102
+<img class="footer" src="doxygen.png" alt="doxygen"/>
103
+</a> 1.8.9.1
104
+</small></address>
105
+</body>
106
+</html>

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


+ 103
- 0
doc/en/html/dir_cf6ae5303f77eb2b244aeafbd603daac.html Vedi 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: bk Directory 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><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
+<!-- window showing the filter options -->
62
+<div id="MSearchSelectWindow"
63
+     onmouseover="return searchBox.OnSearchSelectShow()"
64
+     onmouseout="return searchBox.OnSearchSelectHide()"
65
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
66
+</div>
67
+
68
+<!-- iframe showing the search results (closed by default) -->
69
+<div id="MSearchResultsWindow">
70
+<iframe src="javascript:void(0)" frameborder="0" 
71
+        name="MSearchResults" id="MSearchResults">
72
+</iframe>
73
+</div>
74
+
75
+<div id="nav-path" class="navpath">
76
+  <ul>
77
+<li class="navelem"><a class="el" href="dir_cf6ae5303f77eb2b244aeafbd603daac.html">bk</a></li>  </ul>
78
+</div>
79
+</div><!-- top -->
80
+<div class="header">
81
+  <div class="headertitle">
82
+<div class="title">bk Directory Reference</div>  </div>
83
+</div><!--header-->
84
+<div class="contents">
85
+<table class="memberdecls">
86
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
87
+Files</h2></td></tr>
88
+<tr class="memitem:bk_2main_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>main.cpp</b></td></tr>
89
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
90
+<tr class="memitem:bk_2mainwindow_8cpp"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>mainwindow.cpp</b></td></tr>
91
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
92
+<tr class="memitem:bk_2mainwindow_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><b>mainwindow.h</b> <a href="bk_2mainwindow_8h_source.html">[code]</a></td></tr>
93
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
94
+</table>
95
+</div><!-- contents -->
96
+<!-- start footer part -->
97
+<hr class="footer"/><address class="footer"><small>
98
+Generated on Tue Aug 11 2015 13:49:09 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/doc.png Vedi File


+ 1449
- 0
doc/en/html/doxygen.css
File diff soppresso perché troppo grande
Vedi File


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


+ 97
- 0
doc/en/html/dynsections.js Vedi 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
+

+ 101
- 0
doc/en/html/files.html Vedi File

@@ -0,0 +1,101 @@
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
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
88
+<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 id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_cf6ae5303f77eb2b244aeafbd603daac.html" target="_self">bk</a></td><td class="desc"></td></tr>
89
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="bk_2mainwindow_8h_source.html"><span class="icondoc"></span></a><b>mainwindow.h</b></td><td class="desc"></td></tr>
90
+<tr id="row_1_" class="even"><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>
91
+</table>
92
+</div><!-- directory -->
93
+</div><!-- contents -->
94
+<!-- start footer part -->
95
+<hr class="footer"/><address class="footer"><small>
96
+Generated on Tue Aug 11 2015 13:49:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
97
+<img class="footer" src="doxygen.png" alt="doxygen"/>
98
+</a> 1.8.9.1
99
+</small></address>
100
+</body>
101
+</html>

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


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


+ 173
- 0
doc/en/html/functions.html Vedi File

@@ -0,0 +1,173 @@
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>applyThresholdFilter()
93
+: <a class="el" href="class_main_window.html#ab39da572361126e8b2b47b55dd8a9f51">MainWindow</a>
94
+</li>
95
+<li>GrayScale()
96
+: <a class="el" href="class_main_window.html#a92d8983ccdda1d49d2d9c6302e7aab52">MainWindow</a>
97
+</li>
98
+<li>HorizontalFlip()
99
+: <a class="el" href="class_main_window.html#a6827de64beb6250700e8bafc005379c4">MainWindow</a>
100
+</li>
101
+<li>instructions()
102
+: <a class="el" href="class_main_window.html#aeeabb8c67fc108c9df2b0da0d9674181">MainWindow</a>
103
+</li>
104
+<li>MainWindow()
105
+: <a class="el" href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow</a>
106
+</li>
107
+<li>on_actionApply_Grey_Scale_Filter_triggered()
108
+: <a class="el" href="class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0">MainWindow</a>
109
+</li>
110
+<li>on_actionFlip_Image_Horizontally_triggered()
111
+: <a class="el" href="class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320">MainWindow</a>
112
+</li>
113
+<li>on_actionFlip_Image_Vertically_triggered()
114
+: <a class="el" href="class_main_window.html#aee732b0d048591cff1432aa7992ae474">MainWindow</a>
115
+</li>
116
+<li>on_actionInstructions_triggered()
117
+: <a class="el" href="class_main_window.html#a7a83ec2aee41b85977c9a832de61346b">MainWindow</a>
118
+</li>
119
+<li>on_actionInvert_Threshold_Colors_triggered()
120
+: <a class="el" href="class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636">MainWindow</a>
121
+</li>
122
+<li>on_actionLoad_Image_triggered()
123
+: <a class="el" href="class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768">MainWindow</a>
124
+</li>
125
+<li>on_actionRevert_Edited_Image_to_Original_triggered()
126
+: <a class="el" href="class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8">MainWindow</a>
127
+</li>
128
+<li>on_actionSave_Image_triggered()
129
+: <a class="el" href="class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4">MainWindow</a>
130
+</li>
131
+<li>on_btnFlipImageHorizontally_clicked()
132
+: <a class="el" href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9">MainWindow</a>
133
+</li>
134
+<li>on_btnFlipImageVertically_clicked()
135
+: <a class="el" href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95">MainWindow</a>
136
+</li>
137
+<li>on_btnGreyScaleFilter_clicked()
138
+: <a class="el" href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838">MainWindow</a>
139
+</li>
140
+<li>on_btnInvertThreshold_clicked()
141
+: <a class="el" href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40">MainWindow</a>
142
+</li>
143
+<li>on_btnLoadImage_clicked()
144
+: <a class="el" href="class_main_window.html#a097fcba797448372b19307a32ced737d">MainWindow</a>
145
+</li>
146
+<li>on_btnRevertImage_clicked()
147
+: <a class="el" href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590">MainWindow</a>
148
+</li>
149
+<li>on_btnSaveImage_clicked()
150
+: <a class="el" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">MainWindow</a>
151
+</li>
152
+<li>on_chboxThreshold_clicked()
153
+: <a class="el" href="class_main_window.html#a9936e00b191c04ab938897cf13690dbe">MainWindow</a>
154
+</li>
155
+<li>on_thresholdSlider_sliderReleased()
156
+: <a class="el" href="class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4">MainWindow</a>
157
+</li>
158
+<li>ThresholdFilter()
159
+: <a class="el" href="class_main_window.html#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">MainWindow</a>
160
+</li>
161
+<li>VerticalFlip()
162
+: <a class="el" href="class_main_window.html#a3d4e0cc1efd8a430d0a07901a9da96ae">MainWindow</a>
163
+</li>
164
+</ul>
165
+</div><!-- contents -->
166
+<!-- start footer part -->
167
+<hr class="footer"/><address class="footer"><small>
168
+Generated on Tue Aug 11 2015 13:49:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
169
+<img class="footer" src="doxygen.png" alt="doxygen"/>
170
+</a> 1.8.9.1
171
+</small></address>
172
+</body>
173
+</html>

+ 173
- 0
doc/en/html/functions_func.html Vedi File

@@ -0,0 +1,173 @@
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>applyThresholdFilter()
93
+: <a class="el" href="class_main_window.html#ab39da572361126e8b2b47b55dd8a9f51">MainWindow</a>
94
+</li>
95
+<li>GrayScale()
96
+: <a class="el" href="class_main_window.html#a92d8983ccdda1d49d2d9c6302e7aab52">MainWindow</a>
97
+</li>
98
+<li>HorizontalFlip()
99
+: <a class="el" href="class_main_window.html#a6827de64beb6250700e8bafc005379c4">MainWindow</a>
100
+</li>
101
+<li>instructions()
102
+: <a class="el" href="class_main_window.html#aeeabb8c67fc108c9df2b0da0d9674181">MainWindow</a>
103
+</li>
104
+<li>MainWindow()
105
+: <a class="el" href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow</a>
106
+</li>
107
+<li>on_actionApply_Grey_Scale_Filter_triggered()
108
+: <a class="el" href="class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0">MainWindow</a>
109
+</li>
110
+<li>on_actionFlip_Image_Horizontally_triggered()
111
+: <a class="el" href="class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320">MainWindow</a>
112
+</li>
113
+<li>on_actionFlip_Image_Vertically_triggered()
114
+: <a class="el" href="class_main_window.html#aee732b0d048591cff1432aa7992ae474">MainWindow</a>
115
+</li>
116
+<li>on_actionInstructions_triggered()
117
+: <a class="el" href="class_main_window.html#a7a83ec2aee41b85977c9a832de61346b">MainWindow</a>
118
+</li>
119
+<li>on_actionInvert_Threshold_Colors_triggered()
120
+: <a class="el" href="class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636">MainWindow</a>
121
+</li>
122
+<li>on_actionLoad_Image_triggered()
123
+: <a class="el" href="class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768">MainWindow</a>
124
+</li>
125
+<li>on_actionRevert_Edited_Image_to_Original_triggered()
126
+: <a class="el" href="class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8">MainWindow</a>
127
+</li>
128
+<li>on_actionSave_Image_triggered()
129
+: <a class="el" href="class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4">MainWindow</a>
130
+</li>
131
+<li>on_btnFlipImageHorizontally_clicked()
132
+: <a class="el" href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9">MainWindow</a>
133
+</li>
134
+<li>on_btnFlipImageVertically_clicked()
135
+: <a class="el" href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95">MainWindow</a>
136
+</li>
137
+<li>on_btnGreyScaleFilter_clicked()
138
+: <a class="el" href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838">MainWindow</a>
139
+</li>
140
+<li>on_btnInvertThreshold_clicked()
141
+: <a class="el" href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40">MainWindow</a>
142
+</li>
143
+<li>on_btnLoadImage_clicked()
144
+: <a class="el" href="class_main_window.html#a097fcba797448372b19307a32ced737d">MainWindow</a>
145
+</li>
146
+<li>on_btnRevertImage_clicked()
147
+: <a class="el" href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590">MainWindow</a>
148
+</li>
149
+<li>on_btnSaveImage_clicked()
150
+: <a class="el" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">MainWindow</a>
151
+</li>
152
+<li>on_chboxThreshold_clicked()
153
+: <a class="el" href="class_main_window.html#a9936e00b191c04ab938897cf13690dbe">MainWindow</a>
154
+</li>
155
+<li>on_thresholdSlider_sliderReleased()
156
+: <a class="el" href="class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4">MainWindow</a>
157
+</li>
158
+<li>ThresholdFilter()
159
+: <a class="el" href="class_main_window.html#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">MainWindow</a>
160
+</li>
161
+<li>VerticalFlip()
162
+: <a class="el" href="class_main_window.html#a3d4e0cc1efd8a430d0a07901a9da96ae">MainWindow</a>
163
+</li>
164
+</ul>
165
+</div><!-- contents -->
166
+<!-- start footer part -->
167
+<hr class="footer"/><address class="footer"><small>
168
+Generated on Tue Aug 11 2015 13:49:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
169
+<img class="footer" src="doxygen.png" alt="doxygen"/>
170
+</a> 1.8.9.1
171
+</small></address>
172
+</body>
173
+</html>

+ 104
- 0
doc/en/html/hierarchy.html Vedi File

@@ -0,0 +1,104 @@
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>QMainWindow</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_main_window.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
93
+<tr id="row_0_1_" class="even"><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>
94
+</table>
95
+</div><!-- directory -->
96
+</div><!-- contents -->
97
+<!-- start footer part -->
98
+<hr class="footer"/><address class="footer"><small>
99
+Generated on Tue Aug 11 2015 13:49:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
100
+<img class="footer" src="doxygen.png" alt="doxygen"/>
101
+</a> 1.8.9.1
102
+</small></address>
103
+</body>
104
+</html>

+ 89
- 0
doc/en/html/index.html Vedi 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 Tue Aug 11 2015 13:49:09 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 soppresso perché troppo grande
Vedi File


+ 209
- 0
doc/en/html/mainwindow_8h_source.html Vedi File

@@ -0,0 +1,209 @@
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="comment">// RAN 2015-07-03 - Moved some prototypes to filter.h</span></div>
87
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;</div>
88
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#ifndef MAINWINDOW_H</span></div>
89
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#define MAINWINDOW_H</span></div>
90
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div>
91
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;QMainWindow&gt;</span></div>
92
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;QFileDialog&gt;</span></div>
93
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;QDir&gt;</span></div>
94
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;QMessageBox&gt;</span></div>
95
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;QSlider&gt;</span></div>
96
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;QShortcut&gt;</span></div>
97
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;QMessageBox&gt;</span></div>
98
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div>
99
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define WHITE 0xffffffff</span></div>
100
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#define BLACK 0xff000000</span></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">namespace </span><a class="code" href="namespace_ui.html">Ui</a> {</div>
103
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">class </span><a class="code" href="class_main_window.html">MainWindow</a>;</div>
104
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;}</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">class </span><a class="code" href="class_main_window.html">MainWindow</a> : <span class="keyword">public</span> QMainWindow</div>
107
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;{</div>
108
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;    Q_OBJECT</div>
109
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div>
110
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="keyword">public</span>:</div>
111
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow</a>(QWidget *parent = 0);</div>
112
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
113
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a92d8983ccdda1d49d2d9c6302e7aab52">GrayScale</a>(QImage &amp;);</div>
114
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div>
115
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a3d4e0cc1efd8a430d0a07901a9da96ae">VerticalFlip</a>(QImage &amp;);</div>
116
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div>
117
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a6827de64beb6250700e8bafc005379c4">HorizontalFlip</a>(QImage &amp;);</div>
118
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div>
119
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">ThresholdFilter</a>(QImage &amp;, QImage &amp;,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> , <span class="keywordtype">bool</span>);</div>
120
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div>
121
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    ~<a class="code" href="class_main_window.html">MainWindow</a>();</div>
122
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div>
123
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keyword">private</span> slots:</div>
124
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div>
125
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768">on_actionLoad_Image_triggered</a>();</div>
126
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div>
127
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4">on_actionSave_Image_triggered</a>();</div>
128
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div>
129
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <span class="keywordtype">void</span> on_actionClose_Window_triggered();</div>
130
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div>
131
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636">on_actionInvert_Threshold_Colors_triggered</a>();</div>
132
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div>
133
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320">on_actionFlip_Image_Horizontally_triggered</a>();</div>
134
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div>
135
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aee732b0d048591cff1432aa7992ae474">on_actionFlip_Image_Vertically_triggered</a>();</div>
136
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div>
137
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0">on_actionApply_Grey_Scale_Filter_triggered</a>();</div>
138
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div>
139
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8">on_actionRevert_Edited_Image_to_Original_triggered</a>();</div>
140
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
141
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a7a83ec2aee41b85977c9a832de61346b">on_actionInstructions_triggered</a>();</div>
142
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div>
143
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div>
144
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#ab39da572361126e8b2b47b55dd8a9f51">applyThresholdFilter</a>();</div>
145
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div>
146
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aeeabb8c67fc108c9df2b0da0d9674181">instructions</a>();</div>
147
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div>
148
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div>
149
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4">on_thresholdSlider_sliderReleased</a>();</div>
150
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div>
151
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a097fcba797448372b19307a32ced737d">on_btnLoadImage_clicked</a>();</div>
152
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div>
153
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">on_btnSaveImage_clicked</a>();</div>
154
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div>
155
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a9936e00b191c04ab938897cf13690dbe">on_chboxThreshold_clicked</a>();</div>
156
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div>
157
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40">on_btnInvertThreshold_clicked</a>();</div>
158
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div>
159
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9">on_btnFlipImageHorizontally_clicked</a>();</div>
160
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div>
161
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95">on_btnFlipImageVertically_clicked</a>();</div>
162
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div>
163
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838">on_btnGreyScaleFilter_clicked</a>();</div>
164
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div>
165
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590">on_btnRevertImage_clicked</a>();</div>
166
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div>
167
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="keyword">private</span>:</div>
168
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    Ui::MainWindow *ui;</div>
169
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    QImage originalImage;  <span class="comment">//This will hold the original image.</span></div>
170
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    QImage editedImage;    <span class="comment">//This will hold the edited image.</span></div>
171
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <span class="keywordtype">bool</span> invertColor;   <span class="comment">//Boolean value of the switch button for the threshold filter.</span></div>
172
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;};</div>
173
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div>
174
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;<span class="preprocessor">#endif // MAINWINDOW_H</span></div>
175
+<div class="ttc" id="class_main_window_html_aeb76bf75157cc088511193f8190d0d95"><div class="ttname"><a href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95">MainWindow::on_btnFlipImageVertically_clicked</a></div><div class="ttdeci">void on_btnFlipImageVertically_clicked()</div><div class="ttdoc">To call the vertical flip image filter. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:253</div></div>
176
+<div class="ttc" id="class_main_window_html_aeeabb8c67fc108c9df2b0da0d9674181"><div class="ttname"><a href="class_main_window.html#aeeabb8c67fc108c9df2b0da0d9674181">MainWindow::instructions</a></div><div class="ttdeci">void instructions()</div><div class="ttdoc">To display the instructions. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:287</div></div>
177
+<div class="ttc" id="class_main_window_html_a4fc39fdbaf9fb6a3f551eea7c4e3c9ae"><div class="ttname"><a href="class_main_window.html#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">MainWindow::ThresholdFilter</a></div><div class="ttdeci">void ThresholdFilter(QImage &amp;, QImage &amp;, unsigned int, bool)</div><div class="ttdoc">Function that applies a theshold filter to the edited image. It works by creating a black and white i...</div><div class="ttdef"><b>Definition:</b> filter.cpp:82</div></div>
178
+<div class="ttc" id="class_main_window_html_a3d4e0cc1efd8a430d0a07901a9da96ae"><div class="ttname"><a href="class_main_window.html#a3d4e0cc1efd8a430d0a07901a9da96ae">MainWindow::VerticalFlip</a></div><div class="ttdeci">void VerticalFlip(QImage &amp;)</div><div class="ttdoc">Function that applies a vertical flip to the edited image. It works by putting the pixel from the ori...</div><div class="ttdef"><b>Definition:</b> filter.cpp:30</div></div>
179
+<div class="ttc" id="class_main_window_html_a803c210fefa9d0416f1b1c6c9769aa40"><div class="ttname"><a href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40">MainWindow::on_btnInvertThreshold_clicked</a></div><div class="ttdeci">void on_btnInvertThreshold_clicked()</div><div class="ttdoc">To apply the threshold filter and load the edited image to the GUI when the threshold color is invert...</div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:197</div></div>
180
+<div class="ttc" id="class_main_window_html_a78d8ae530c062adf68cd5d5d05d13320"><div class="ttname"><a href="class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320">MainWindow::on_actionFlip_Image_Horizontally_triggered</a></div><div class="ttdeci">void on_actionFlip_Image_Horizontally_triggered()</div><div class="ttdoc">Invokes function on_btnFlipImageHorizontally_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:114</div></div>
181
+<div class="ttc" id="class_main_window_html_a4a615fae77ffcbb3ff634215be270590"><div class="ttname"><a href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590">MainWindow::on_btnRevertImage_clicked</a></div><div class="ttdeci">void on_btnRevertImage_clicked()</div><div class="ttdoc">To reset the edited image to the original image. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:275</div></div>
182
+<div class="ttc" id="class_main_window_html_aadc6d08a96c6003b94d29b254de97838"><div class="ttname"><a href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838">MainWindow::on_btnGreyScaleFilter_clicked</a></div><div class="ttdeci">void on_btnGreyScaleFilter_clicked()</div><div class="ttdoc">To call the Gray Scale image filter. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:264</div></div>
183
+<div class="ttc" id="namespace_ui_html"><div class="ttname"><a href="namespace_ui.html">Ui</a></div><div class="ttdef"><b>Definition:</b> mainwindow.h:17</div></div>
184
+<div class="ttc" id="class_main_window_html_aa2b30fce1731a2ba1818f60ee9dc45a4"><div class="ttname"><a href="class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4">MainWindow::on_thresholdSlider_sliderReleased</a></div><div class="ttdeci">void on_thresholdSlider_sliderReleased()</div><div class="ttdoc">To apply the threshold filter and load the edited image to the GUI when the GUI slider is moved...</div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:185</div></div>
185
+<div class="ttc" id="class_main_window_html_ad5d0ca46a9061f5a22f84494de29f8d9"><div class="ttname"><a href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9">MainWindow::on_btnFlipImageHorizontally_clicked</a></div><div class="ttdeci">void on_btnFlipImageHorizontally_clicked()</div><div class="ttdoc">To call the horizontal flip image filter. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:242</div></div>
186
+<div class="ttc" id="class_main_window_html_aee732b0d048591cff1432aa7992ae474"><div class="ttname"><a href="class_main_window.html#aee732b0d048591cff1432aa7992ae474">MainWindow::on_actionFlip_Image_Vertically_triggered</a></div><div class="ttdeci">void on_actionFlip_Image_Vertically_triggered()</div><div class="ttdoc">Invokes function on_btnFlipImageVertically_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:123</div></div>
187
+<div class="ttc" id="class_main_window_html_ad495b5030e61fb55b8ab95c5a3a559d6"><div class="ttname"><a href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">MainWindow::on_btnSaveImage_clicked</a></div><div class="ttdeci">void on_btnSaveImage_clicked()</div><div class="ttdoc">To save an image to the file system when the save image option is selected. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:230</div></div>
188
+<div class="ttc" id="class_main_window_html_a86de73fc655de25fc6bed09f8ee304a0"><div class="ttname"><a href="class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0">MainWindow::on_actionApply_Grey_Scale_Filter_triggered</a></div><div class="ttdeci">void on_actionApply_Grey_Scale_Filter_triggered()</div><div class="ttdoc">Invokes function on_btnGreyScaleFilter_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:132</div></div>
189
+<div class="ttc" id="class_main_window_html_a097fcba797448372b19307a32ced737d"><div class="ttname"><a href="class_main_window.html#a097fcba797448372b19307a32ced737d">MainWindow::on_btnLoadImage_clicked</a></div><div class="ttdeci">void on_btnLoadImage_clicked()</div><div class="ttdoc">To load an image to the GUI when the load image option is selected. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:210</div></div>
190
+<div class="ttc" id="class_main_window_html_a6827de64beb6250700e8bafc005379c4"><div class="ttname"><a href="class_main_window.html#a6827de64beb6250700e8bafc005379c4">MainWindow::HorizontalFlip</a></div><div class="ttdeci">void HorizontalFlip(QImage &amp;)</div><div class="ttdoc">Function that applies a horizontal flip to the edited image. It works by putting the pixel from the o...</div><div class="ttdef"><b>Definition:</b> filter.cpp:57</div></div>
191
+<div class="ttc" id="class_main_window_html_a7a83ec2aee41b85977c9a832de61346b"><div class="ttname"><a href="class_main_window.html#a7a83ec2aee41b85977c9a832de61346b">MainWindow::on_actionInstructions_triggered</a></div><div class="ttdeci">void on_actionInstructions_triggered()</div><div class="ttdoc">To display the instructions. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:150</div></div>
192
+<div class="ttc" id="class_main_window_html_aab8ca019ab84ef9c21ed9301abca6636"><div class="ttname"><a href="class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636">MainWindow::on_actionInvert_Threshold_Colors_triggered</a></div><div class="ttdeci">void on_actionInvert_Threshold_Colors_triggered()</div><div class="ttdoc">Invokes function on_btnInvertThreshold_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:105</div></div>
193
+<div class="ttc" id="class_main_window_html_a8b244be8b7b7db1b08de2a2acb9409db"><div class="ttname"><a href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow::MainWindow</a></div><div class="ttdeci">MainWindow(QWidget *parent=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:14</div></div>
194
+<div class="ttc" id="class_main_window_html_ab39da572361126e8b2b47b55dd8a9f51"><div class="ttname"><a href="class_main_window.html#ab39da572361126e8b2b47b55dd8a9f51">MainWindow::applyThresholdFilter</a></div><div class="ttdeci">void applyThresholdFilter()</div><div class="ttdoc">To apply the threshold filter. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:174</div></div>
195
+<div class="ttc" id="class_main_window_html_a92d8983ccdda1d49d2d9c6302e7aab52"><div class="ttname"><a href="class_main_window.html#a92d8983ccdda1d49d2d9c6302e7aab52">MainWindow::GrayScale</a></div><div class="ttdeci">void GrayScale(QImage &amp;)</div><div class="ttdoc">Function that applies a greyscale filter in the edited image. It works by turning each pixel into the...</div><div class="ttdef"><b>Definition:</b> filter.cpp:10</div></div>
196
+<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:21</div></div>
197
+<div class="ttc" id="class_main_window_html_a579dbaf9e4684318a252f7bc471e2db8"><div class="ttname"><a href="class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8">MainWindow::on_actionRevert_Edited_Image_to_Original_triggered</a></div><div class="ttdeci">void on_actionRevert_Edited_Image_to_Original_triggered()</div><div class="ttdoc">Invokes function on_btnRevertImage_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:141</div></div>
198
+<div class="ttc" id="class_main_window_html_a9936e00b191c04ab938897cf13690dbe"><div class="ttname"><a href="class_main_window.html#a9936e00b191c04ab938897cf13690dbe">MainWindow::on_chboxThreshold_clicked</a></div><div class="ttdeci">void on_chboxThreshold_clicked()</div><div class="ttdoc">To apply the threshold filter and load the edited image to the GUI. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:159</div></div>
199
+<div class="ttc" id="class_main_window_html_a9064a0047e3e77e6d48ebb59bd711da4"><div class="ttname"><a href="class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4">MainWindow::on_actionSave_Image_triggered</a></div><div class="ttdeci">void on_actionSave_Image_triggered()</div><div class="ttdoc">Invokes function on_btnSaveImage_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:87</div></div>
200
+<div class="ttc" id="class_main_window_html_a4ff08d0fe0eca41750440ca1f4d9c768"><div class="ttname"><a href="class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768">MainWindow::on_actionLoad_Image_triggered</a></div><div class="ttdeci">void on_actionLoad_Image_triggered()</div><div class="ttdoc">Invokes function on_btnLoadImage_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:78</div></div>
201
+</div><!-- fragment --></div><!-- contents -->
202
+<!-- start footer part -->
203
+<hr class="footer"/><address class="footer"><small>
204
+Generated on Tue Aug 11 2015 13:49:09 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
205
+<img class="footer" src="doxygen.png" alt="doxygen"/>
206
+</a> 1.8.9.1
207
+</small></address>
208
+</body>
209
+</html>

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


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


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


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


+ 26
- 0
doc/en/html/search/all_0.html Vedi 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 Vedi File

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

+ 26
- 0
doc/en/html/search/all_1.html Vedi 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 Vedi File

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

+ 26
- 0
doc/en/html/search/all_2.html Vedi 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 Vedi File

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

+ 26
- 0
doc/en/html/search/all_3.html Vedi 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>

+ 4
- 0
doc/en/html/search/all_3.js Vedi File

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

+ 26
- 0
doc/en/html/search/all_4.html Vedi 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 Vedi 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_5.html Vedi 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>

+ 20
- 0
doc/en/html/search/all_5.js Vedi File

@@ -0,0 +1,20 @@
1
+var searchData=
2
+[
3
+  ['on_5factionapply_5fgrey_5fscale_5ffilter_5ftriggered',['on_actionApply_Grey_Scale_Filter_triggered',['../class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0',1,'MainWindow']]],
4
+  ['on_5factionflip_5fimage_5fhorizontally_5ftriggered',['on_actionFlip_Image_Horizontally_triggered',['../class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320',1,'MainWindow']]],
5
+  ['on_5factionflip_5fimage_5fvertically_5ftriggered',['on_actionFlip_Image_Vertically_triggered',['../class_main_window.html#aee732b0d048591cff1432aa7992ae474',1,'MainWindow']]],
6
+  ['on_5factioninstructions_5ftriggered',['on_actionInstructions_triggered',['../class_main_window.html#a7a83ec2aee41b85977c9a832de61346b',1,'MainWindow']]],
7
+  ['on_5factioninvert_5fthreshold_5fcolors_5ftriggered',['on_actionInvert_Threshold_Colors_triggered',['../class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636',1,'MainWindow']]],
8
+  ['on_5factionload_5fimage_5ftriggered',['on_actionLoad_Image_triggered',['../class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768',1,'MainWindow']]],
9
+  ['on_5factionrevert_5fedited_5fimage_5fto_5foriginal_5ftriggered',['on_actionRevert_Edited_Image_to_Original_triggered',['../class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8',1,'MainWindow']]],
10
+  ['on_5factionsave_5fimage_5ftriggered',['on_actionSave_Image_triggered',['../class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4',1,'MainWindow']]],
11
+  ['on_5fbtnflipimagehorizontally_5fclicked',['on_btnFlipImageHorizontally_clicked',['../class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9',1,'MainWindow']]],
12
+  ['on_5fbtnflipimagevertically_5fclicked',['on_btnFlipImageVertically_clicked',['../class_main_window.html#aeb76bf75157cc088511193f8190d0d95',1,'MainWindow']]],
13
+  ['on_5fbtngreyscalefilter_5fclicked',['on_btnGreyScaleFilter_clicked',['../class_main_window.html#aadc6d08a96c6003b94d29b254de97838',1,'MainWindow']]],
14
+  ['on_5fbtninvertthreshold_5fclicked',['on_btnInvertThreshold_clicked',['../class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40',1,'MainWindow']]],
15
+  ['on_5fbtnloadimage_5fclicked',['on_btnLoadImage_clicked',['../class_main_window.html#a097fcba797448372b19307a32ced737d',1,'MainWindow']]],
16
+  ['on_5fbtnrevertimage_5fclicked',['on_btnRevertImage_clicked',['../class_main_window.html#a4a615fae77ffcbb3ff634215be270590',1,'MainWindow']]],
17
+  ['on_5fbtnsaveimage_5fclicked',['on_btnSaveImage_clicked',['../class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6',1,'MainWindow']]],
18
+  ['on_5fchboxthreshold_5fclicked',['on_chboxThreshold_clicked',['../class_main_window.html#a9936e00b191c04ab938897cf13690dbe',1,'MainWindow']]],
19
+  ['on_5fthresholdslider_5fsliderreleased',['on_thresholdSlider_sliderReleased',['../class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4',1,'MainWindow']]]
20
+];

+ 26
- 0
doc/en/html/search/all_6.html Vedi 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_6.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_6.js Vedi File

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

+ 26
- 0
doc/en/html/search/all_7.html Vedi 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_7.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_7.js Vedi File

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

+ 26
- 0
doc/en/html/search/classes_0.html Vedi 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 Vedi 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 Vedi File


+ 26
- 0
doc/en/html/search/functions_0.html Vedi 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 Vedi File

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

+ 26
- 0
doc/en/html/search/functions_1.html Vedi 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 Vedi File

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

+ 26
- 0
doc/en/html/search/functions_2.html Vedi 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>

+ 4
- 0
doc/en/html/search/functions_2.js Vedi File

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

+ 26
- 0
doc/en/html/search/functions_3.html Vedi 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 Vedi File

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

+ 26
- 0
doc/en/html/search/functions_4.html Vedi 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 Vedi 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_5.html Vedi 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_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>

+ 20
- 0
doc/en/html/search/functions_5.js Vedi File

@@ -0,0 +1,20 @@
1
+var searchData=
2
+[
3
+  ['on_5factionapply_5fgrey_5fscale_5ffilter_5ftriggered',['on_actionApply_Grey_Scale_Filter_triggered',['../class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0',1,'MainWindow']]],
4
+  ['on_5factionflip_5fimage_5fhorizontally_5ftriggered',['on_actionFlip_Image_Horizontally_triggered',['../class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320',1,'MainWindow']]],
5
+  ['on_5factionflip_5fimage_5fvertically_5ftriggered',['on_actionFlip_Image_Vertically_triggered',['../class_main_window.html#aee732b0d048591cff1432aa7992ae474',1,'MainWindow']]],
6
+  ['on_5factioninstructions_5ftriggered',['on_actionInstructions_triggered',['../class_main_window.html#a7a83ec2aee41b85977c9a832de61346b',1,'MainWindow']]],
7
+  ['on_5factioninvert_5fthreshold_5fcolors_5ftriggered',['on_actionInvert_Threshold_Colors_triggered',['../class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636',1,'MainWindow']]],
8
+  ['on_5factionload_5fimage_5ftriggered',['on_actionLoad_Image_triggered',['../class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768',1,'MainWindow']]],
9
+  ['on_5factionrevert_5fedited_5fimage_5fto_5foriginal_5ftriggered',['on_actionRevert_Edited_Image_to_Original_triggered',['../class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8',1,'MainWindow']]],
10
+  ['on_5factionsave_5fimage_5ftriggered',['on_actionSave_Image_triggered',['../class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4',1,'MainWindow']]],
11
+  ['on_5fbtnflipimagehorizontally_5fclicked',['on_btnFlipImageHorizontally_clicked',['../class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9',1,'MainWindow']]],
12
+  ['on_5fbtnflipimagevertically_5fclicked',['on_btnFlipImageVertically_clicked',['../class_main_window.html#aeb76bf75157cc088511193f8190d0d95',1,'MainWindow']]],
13
+  ['on_5fbtngreyscalefilter_5fclicked',['on_btnGreyScaleFilter_clicked',['../class_main_window.html#aadc6d08a96c6003b94d29b254de97838',1,'MainWindow']]],
14
+  ['on_5fbtninvertthreshold_5fclicked',['on_btnInvertThreshold_clicked',['../class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40',1,'MainWindow']]],
15
+  ['on_5fbtnloadimage_5fclicked',['on_btnLoadImage_clicked',['../class_main_window.html#a097fcba797448372b19307a32ced737d',1,'MainWindow']]],
16
+  ['on_5fbtnrevertimage_5fclicked',['on_btnRevertImage_clicked',['../class_main_window.html#a4a615fae77ffcbb3ff634215be270590',1,'MainWindow']]],
17
+  ['on_5fbtnsaveimage_5fclicked',['on_btnSaveImage_clicked',['../class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6',1,'MainWindow']]],
18
+  ['on_5fchboxthreshold_5fclicked',['on_chboxThreshold_clicked',['../class_main_window.html#a9936e00b191c04ab938897cf13690dbe',1,'MainWindow']]],
19
+  ['on_5fthresholdslider_5fsliderreleased',['on_thresholdSlider_sliderReleased',['../class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4',1,'MainWindow']]]
20
+];

+ 26
- 0
doc/en/html/search/functions_6.html Vedi 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_6.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_6.js Vedi File

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

+ 26
- 0
doc/en/html/search/functions_7.html Vedi 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_7.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_7.js Vedi File

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

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


+ 12
- 0
doc/en/html/search/nomatches.html Vedi 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 Vedi 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 Vedi 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 Vedi File


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


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


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

@@ -0,0 +1,21 @@
1
+var indexSectionsWithContent =
2
+{
3
+  0: "aghimotv",
4
+  1: "m",
5
+  2: "aghimotv"
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 Vedi File


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


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


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


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


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


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


+ 60
- 0
doc/en/html/tabs.css Vedi 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 Vedi 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

+ 4
- 0
doc/en/latex/annotated.tex Vedi File

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

+ 203
- 0
doc/en/latex/class_main_window.eps Vedi File

@@ -0,0 +1,203 @@
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 196.078431
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 2.550000 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 2 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
+(QMainWindow) cw
179
+/boxwidth boxwidth marginwidth 2 mul add def
180
+/xspacing boxwidth distx add def
181
+/yspacing boxheight disty add def
182
+/scalefactor 
183
+  boxwidth cols mul distx cols 1 sub mul add
184
+  boxheight rows mul disty rows 1 sub mul add boundaspect mul 
185
+  max def
186
+boundx scalefactor div boundy scalefactor div scale
187
+
188
+% ----- classes -----
189
+
190
+ (MainWindow) 0.500000 0.000000 box
191
+ (QMainWindow) 0.000000 1.000000 box
192
+ (QMainWindow) 1.000000 1.000000 box
193
+
194
+% ----- relations -----
195
+
196
+solid
197
+0 0.500000 0.000000 out
198
+solid
199
+0.000000 1.000000 1.000000 conn
200
+solid
201
+1 0.000000 1.000000 in
202
+solid
203
+1 1.000000 1.000000 in

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


+ 309
- 0
doc/en/latex/class_main_window.tex Vedi File

@@ -0,0 +1,309 @@
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_a92d8983ccdda1d49d2d9c6302e7aab52}{Gray\+Scale} (Q\+Image \&)
15
+\begin{DoxyCompactList}\small\item\em Function that applies a greyscale filter in the edited image. It works by turning each pixel into the color grey. \end{DoxyCompactList}\item 
16
+void \hyperlink{class_main_window_a3d4e0cc1efd8a430d0a07901a9da96ae}{Vertical\+Flip} (Q\+Image \&)
17
+\begin{DoxyCompactList}\small\item\em Function that applies a vertical flip to the edited image. It works by putting the pixel from the original image in the heigth-\/1-\/j position of the edited image. \end{DoxyCompactList}\item 
18
+void \hyperlink{class_main_window_a6827de64beb6250700e8bafc005379c4}{Horizontal\+Flip} (Q\+Image \&)
19
+\begin{DoxyCompactList}\small\item\em Function that applies a horizontal flip to the edited image. It works by putting the pixel from the original image in the width-\/1-\/i position of the edited image. \end{DoxyCompactList}\item 
20
+void \hyperlink{class_main_window_a4fc39fdbaf9fb6a3f551eea7c4e3c9ae}{Threshold\+Filter} (Q\+Image \&, Q\+Image \&, unsigned int, bool)
21
+\begin{DoxyCompactList}\small\item\em Function that applies a theshold filter to the edited image. It works by creating a black and white image where the color of the new pixel is white or black depending on a threshold value and the average of the colors of the pixel of the original image. \end{DoxyCompactList}\item 
22
+\hypertarget{class_main_window_a8b244be8b7b7db1b08de2a2acb9409db}{}{\bfseries Main\+Window} (Q\+Widget $\ast$parent=0)\label{class_main_window_a8b244be8b7b7db1b08de2a2acb9409db}
23
+
24
+\item 
25
+\hypertarget{class_main_window_a92d8983ccdda1d49d2d9c6302e7aab52}{}void {\bfseries Gray\+Scale} (Q\+Image \&)\label{class_main_window_a92d8983ccdda1d49d2d9c6302e7aab52}
26
+
27
+\item 
28
+\hypertarget{class_main_window_a3d4e0cc1efd8a430d0a07901a9da96ae}{}void {\bfseries Vertical\+Flip} (Q\+Image \&)\label{class_main_window_a3d4e0cc1efd8a430d0a07901a9da96ae}
29
+
30
+\item 
31
+\hypertarget{class_main_window_a6827de64beb6250700e8bafc005379c4}{}void {\bfseries Horizontal\+Flip} (Q\+Image \&)\label{class_main_window_a6827de64beb6250700e8bafc005379c4}
32
+
33
+\item 
34
+\hypertarget{class_main_window_a4fc39fdbaf9fb6a3f551eea7c4e3c9ae}{}void {\bfseries Threshold\+Filter} (Q\+Image \&, Q\+Image \&, unsigned int, bool)\label{class_main_window_a4fc39fdbaf9fb6a3f551eea7c4e3c9ae}
35
+
36
+\end{DoxyCompactItemize}
37
+\subsection*{Private Slots}
38
+\begin{DoxyCompactItemize}
39
+\item 
40
+void \hyperlink{class_main_window_a4ff08d0fe0eca41750440ca1f4d9c768}{on\+\_\+action\+Load\+\_\+\+Image\+\_\+triggered} ()
41
+\begin{DoxyCompactList}\small\item\em Invokes function \hyperlink{class_main_window_a097fcba797448372b19307a32ced737d}{on\+\_\+btn\+Load\+Image\+\_\+clicked()} \end{DoxyCompactList}\item 
42
+\hypertarget{class_main_window_a9064a0047e3e77e6d48ebb59bd711da4}{}void \hyperlink{class_main_window_a9064a0047e3e77e6d48ebb59bd711da4}{on\+\_\+action\+Save\+\_\+\+Image\+\_\+triggered} ()\label{class_main_window_a9064a0047e3e77e6d48ebb59bd711da4}
43
+
44
+\begin{DoxyCompactList}\small\item\em Invokes function \hyperlink{class_main_window_ad495b5030e61fb55b8ab95c5a3a559d6}{on\+\_\+btn\+Save\+Image\+\_\+clicked()} \end{DoxyCompactList}\item 
45
+\hypertarget{class_main_window_addb3dd1ec7fe84f4d8a7b63bc7431b5a}{}void {\bfseries on\+\_\+action\+Close\+\_\+\+Window\+\_\+triggered} ()\label{class_main_window_addb3dd1ec7fe84f4d8a7b63bc7431b5a}
46
+
47
+\item 
48
+\hypertarget{class_main_window_aab8ca019ab84ef9c21ed9301abca6636}{}void \hyperlink{class_main_window_aab8ca019ab84ef9c21ed9301abca6636}{on\+\_\+action\+Invert\+\_\+\+Threshold\+\_\+\+Colors\+\_\+triggered} ()\label{class_main_window_aab8ca019ab84ef9c21ed9301abca6636}
49
+
50
+\begin{DoxyCompactList}\small\item\em Invokes function \hyperlink{class_main_window_a803c210fefa9d0416f1b1c6c9769aa40}{on\+\_\+btn\+Invert\+Threshold\+\_\+clicked()} \end{DoxyCompactList}\item 
51
+\hypertarget{class_main_window_a78d8ae530c062adf68cd5d5d05d13320}{}void \hyperlink{class_main_window_a78d8ae530c062adf68cd5d5d05d13320}{on\+\_\+action\+Flip\+\_\+\+Image\+\_\+\+Horizontally\+\_\+triggered} ()\label{class_main_window_a78d8ae530c062adf68cd5d5d05d13320}
52
+
53
+\begin{DoxyCompactList}\small\item\em Invokes function \hyperlink{class_main_window_ad5d0ca46a9061f5a22f84494de29f8d9}{on\+\_\+btn\+Flip\+Image\+Horizontally\+\_\+clicked()} \end{DoxyCompactList}\item 
54
+\hypertarget{class_main_window_aee732b0d048591cff1432aa7992ae474}{}void \hyperlink{class_main_window_aee732b0d048591cff1432aa7992ae474}{on\+\_\+action\+Flip\+\_\+\+Image\+\_\+\+Vertically\+\_\+triggered} ()\label{class_main_window_aee732b0d048591cff1432aa7992ae474}
55
+
56
+\begin{DoxyCompactList}\small\item\em Invokes function \hyperlink{class_main_window_aeb76bf75157cc088511193f8190d0d95}{on\+\_\+btn\+Flip\+Image\+Vertically\+\_\+clicked()} \end{DoxyCompactList}\item 
57
+\hypertarget{class_main_window_a86de73fc655de25fc6bed09f8ee304a0}{}void \hyperlink{class_main_window_a86de73fc655de25fc6bed09f8ee304a0}{on\+\_\+action\+Apply\+\_\+\+Grey\+\_\+\+Scale\+\_\+\+Filter\+\_\+triggered} ()\label{class_main_window_a86de73fc655de25fc6bed09f8ee304a0}
58
+
59
+\begin{DoxyCompactList}\small\item\em Invokes function \hyperlink{class_main_window_aadc6d08a96c6003b94d29b254de97838}{on\+\_\+btn\+Grey\+Scale\+Filter\+\_\+clicked()} \end{DoxyCompactList}\item 
60
+\hypertarget{class_main_window_a579dbaf9e4684318a252f7bc471e2db8}{}void \hyperlink{class_main_window_a579dbaf9e4684318a252f7bc471e2db8}{on\+\_\+action\+Revert\+\_\+\+Edited\+\_\+\+Image\+\_\+to\+\_\+\+Original\+\_\+triggered} ()\label{class_main_window_a579dbaf9e4684318a252f7bc471e2db8}
61
+
62
+\begin{DoxyCompactList}\small\item\em Invokes function \hyperlink{class_main_window_a4a615fae77ffcbb3ff634215be270590}{on\+\_\+btn\+Revert\+Image\+\_\+clicked()} \end{DoxyCompactList}\item 
63
+\hypertarget{class_main_window_a7a83ec2aee41b85977c9a832de61346b}{}void \hyperlink{class_main_window_a7a83ec2aee41b85977c9a832de61346b}{on\+\_\+action\+Instructions\+\_\+triggered} ()\label{class_main_window_a7a83ec2aee41b85977c9a832de61346b}
64
+
65
+\begin{DoxyCompactList}\small\item\em To display the instructions. \end{DoxyCompactList}\item 
66
+\hypertarget{class_main_window_ab39da572361126e8b2b47b55dd8a9f51}{}void \hyperlink{class_main_window_ab39da572361126e8b2b47b55dd8a9f51}{apply\+Threshold\+Filter} ()\label{class_main_window_ab39da572361126e8b2b47b55dd8a9f51}
67
+
68
+\begin{DoxyCompactList}\small\item\em To apply the threshold filter. \end{DoxyCompactList}\item 
69
+\hypertarget{class_main_window_aeeabb8c67fc108c9df2b0da0d9674181}{}void \hyperlink{class_main_window_aeeabb8c67fc108c9df2b0da0d9674181}{instructions} ()\label{class_main_window_aeeabb8c67fc108c9df2b0da0d9674181}
70
+
71
+\begin{DoxyCompactList}\small\item\em To display the instructions. \end{DoxyCompactList}\item 
72
+\hypertarget{class_main_window_aa2b30fce1731a2ba1818f60ee9dc45a4}{}void \hyperlink{class_main_window_aa2b30fce1731a2ba1818f60ee9dc45a4}{on\+\_\+threshold\+Slider\+\_\+slider\+Released} ()\label{class_main_window_aa2b30fce1731a2ba1818f60ee9dc45a4}
73
+
74
+\begin{DoxyCompactList}\small\item\em To apply the threshold filter and load the edited image to the G\+U\+I when the G\+U\+I slider is moved. \end{DoxyCompactList}\item 
75
+\hypertarget{class_main_window_a097fcba797448372b19307a32ced737d}{}void \hyperlink{class_main_window_a097fcba797448372b19307a32ced737d}{on\+\_\+btn\+Load\+Image\+\_\+clicked} ()\label{class_main_window_a097fcba797448372b19307a32ced737d}
76
+
77
+\begin{DoxyCompactList}\small\item\em To load an image to the G\+U\+I when the load image option is selected. \end{DoxyCompactList}\item 
78
+\hypertarget{class_main_window_ad495b5030e61fb55b8ab95c5a3a559d6}{}void \hyperlink{class_main_window_ad495b5030e61fb55b8ab95c5a3a559d6}{on\+\_\+btn\+Save\+Image\+\_\+clicked} ()\label{class_main_window_ad495b5030e61fb55b8ab95c5a3a559d6}
79
+
80
+\begin{DoxyCompactList}\small\item\em To save an image to the file system when the save image option is selected. \end{DoxyCompactList}\item 
81
+\hypertarget{class_main_window_a9936e00b191c04ab938897cf13690dbe}{}void \hyperlink{class_main_window_a9936e00b191c04ab938897cf13690dbe}{on\+\_\+chbox\+Threshold\+\_\+clicked} ()\label{class_main_window_a9936e00b191c04ab938897cf13690dbe}
82
+
83
+\begin{DoxyCompactList}\small\item\em To apply the threshold filter and load the edited image to the G\+U\+I. \end{DoxyCompactList}\item 
84
+\hypertarget{class_main_window_a803c210fefa9d0416f1b1c6c9769aa40}{}void \hyperlink{class_main_window_a803c210fefa9d0416f1b1c6c9769aa40}{on\+\_\+btn\+Invert\+Threshold\+\_\+clicked} ()\label{class_main_window_a803c210fefa9d0416f1b1c6c9769aa40}
85
+
86
+\begin{DoxyCompactList}\small\item\em To apply the threshold filter and load the edited image to the G\+U\+I when the threshold color is inverted. \end{DoxyCompactList}\item 
87
+\hypertarget{class_main_window_ad5d0ca46a9061f5a22f84494de29f8d9}{}void \hyperlink{class_main_window_ad5d0ca46a9061f5a22f84494de29f8d9}{on\+\_\+btn\+Flip\+Image\+Horizontally\+\_\+clicked} ()\label{class_main_window_ad5d0ca46a9061f5a22f84494de29f8d9}
88
+
89
+\begin{DoxyCompactList}\small\item\em To call the horizontal flip image filter. \end{DoxyCompactList}\item 
90
+\hypertarget{class_main_window_aeb76bf75157cc088511193f8190d0d95}{}void \hyperlink{class_main_window_aeb76bf75157cc088511193f8190d0d95}{on\+\_\+btn\+Flip\+Image\+Vertically\+\_\+clicked} ()\label{class_main_window_aeb76bf75157cc088511193f8190d0d95}
91
+
92
+\begin{DoxyCompactList}\small\item\em To call the vertical flip image filter. \end{DoxyCompactList}\item 
93
+\hypertarget{class_main_window_aadc6d08a96c6003b94d29b254de97838}{}void \hyperlink{class_main_window_aadc6d08a96c6003b94d29b254de97838}{on\+\_\+btn\+Grey\+Scale\+Filter\+\_\+clicked} ()\label{class_main_window_aadc6d08a96c6003b94d29b254de97838}
94
+
95
+\begin{DoxyCompactList}\small\item\em To call the Gray Scale image filter. \end{DoxyCompactList}\item 
96
+\hypertarget{class_main_window_a4a615fae77ffcbb3ff634215be270590}{}void \hyperlink{class_main_window_a4a615fae77ffcbb3ff634215be270590}{on\+\_\+btn\+Revert\+Image\+\_\+clicked} ()\label{class_main_window_a4a615fae77ffcbb3ff634215be270590}
97
+
98
+\begin{DoxyCompactList}\small\item\em To reset the edited image to the original image. \end{DoxyCompactList}\item 
99
+\hypertarget{class_main_window_a4ff08d0fe0eca41750440ca1f4d9c768}{}void {\bfseries on\+\_\+action\+Load\+\_\+\+Image\+\_\+triggered} ()\label{class_main_window_a4ff08d0fe0eca41750440ca1f4d9c768}
100
+
101
+\item 
102
+\hypertarget{class_main_window_a9064a0047e3e77e6d48ebb59bd711da4}{}void {\bfseries on\+\_\+action\+Save\+\_\+\+Image\+\_\+triggered} ()\label{class_main_window_a9064a0047e3e77e6d48ebb59bd711da4}
103
+
104
+\item 
105
+\hypertarget{class_main_window_addb3dd1ec7fe84f4d8a7b63bc7431b5a}{}void {\bfseries on\+\_\+action\+Close\+\_\+\+Window\+\_\+triggered} ()\label{class_main_window_addb3dd1ec7fe84f4d8a7b63bc7431b5a}
106
+
107
+\item 
108
+\hypertarget{class_main_window_aab8ca019ab84ef9c21ed9301abca6636}{}void {\bfseries on\+\_\+action\+Invert\+\_\+\+Threshold\+\_\+\+Colors\+\_\+triggered} ()\label{class_main_window_aab8ca019ab84ef9c21ed9301abca6636}
109
+
110
+\item 
111
+\hypertarget{class_main_window_a78d8ae530c062adf68cd5d5d05d13320}{}void {\bfseries on\+\_\+action\+Flip\+\_\+\+Image\+\_\+\+Horizontally\+\_\+triggered} ()\label{class_main_window_a78d8ae530c062adf68cd5d5d05d13320}
112
+
113
+\item 
114
+\hypertarget{class_main_window_aee732b0d048591cff1432aa7992ae474}{}void {\bfseries on\+\_\+action\+Flip\+\_\+\+Image\+\_\+\+Vertically\+\_\+triggered} ()\label{class_main_window_aee732b0d048591cff1432aa7992ae474}
115
+
116
+\item 
117
+\hypertarget{class_main_window_a86de73fc655de25fc6bed09f8ee304a0}{}void {\bfseries on\+\_\+action\+Apply\+\_\+\+Grey\+\_\+\+Scale\+\_\+\+Filter\+\_\+triggered} ()\label{class_main_window_a86de73fc655de25fc6bed09f8ee304a0}
118
+
119
+\item 
120
+\hypertarget{class_main_window_a579dbaf9e4684318a252f7bc471e2db8}{}void {\bfseries on\+\_\+action\+Revert\+\_\+\+Edited\+\_\+\+Image\+\_\+to\+\_\+\+Original\+\_\+triggered} ()\label{class_main_window_a579dbaf9e4684318a252f7bc471e2db8}
121
+
122
+\item 
123
+\hypertarget{class_main_window_a7a83ec2aee41b85977c9a832de61346b}{}void {\bfseries on\+\_\+action\+Instructions\+\_\+triggered} ()\label{class_main_window_a7a83ec2aee41b85977c9a832de61346b}
124
+
125
+\item 
126
+\hypertarget{class_main_window_ab39da572361126e8b2b47b55dd8a9f51}{}void {\bfseries apply\+Threshold\+Filter} ()\label{class_main_window_ab39da572361126e8b2b47b55dd8a9f51}
127
+
128
+\item 
129
+\hypertarget{class_main_window_aeeabb8c67fc108c9df2b0da0d9674181}{}void {\bfseries instructions} ()\label{class_main_window_aeeabb8c67fc108c9df2b0da0d9674181}
130
+
131
+\item 
132
+\hypertarget{class_main_window_aa2b30fce1731a2ba1818f60ee9dc45a4}{}void {\bfseries on\+\_\+threshold\+Slider\+\_\+slider\+Released} ()\label{class_main_window_aa2b30fce1731a2ba1818f60ee9dc45a4}
133
+
134
+\item 
135
+\hypertarget{class_main_window_a097fcba797448372b19307a32ced737d}{}void {\bfseries on\+\_\+btn\+Load\+Image\+\_\+clicked} ()\label{class_main_window_a097fcba797448372b19307a32ced737d}
136
+
137
+\item 
138
+\hypertarget{class_main_window_ad495b5030e61fb55b8ab95c5a3a559d6}{}void {\bfseries on\+\_\+btn\+Save\+Image\+\_\+clicked} ()\label{class_main_window_ad495b5030e61fb55b8ab95c5a3a559d6}
139
+
140
+\item 
141
+\hypertarget{class_main_window_a9936e00b191c04ab938897cf13690dbe}{}void {\bfseries on\+\_\+chbox\+Threshold\+\_\+clicked} ()\label{class_main_window_a9936e00b191c04ab938897cf13690dbe}
142
+
143
+\item 
144
+\hypertarget{class_main_window_a803c210fefa9d0416f1b1c6c9769aa40}{}void {\bfseries on\+\_\+btn\+Invert\+Threshold\+\_\+clicked} ()\label{class_main_window_a803c210fefa9d0416f1b1c6c9769aa40}
145
+
146
+\item 
147
+\hypertarget{class_main_window_ad5d0ca46a9061f5a22f84494de29f8d9}{}void {\bfseries on\+\_\+btn\+Flip\+Image\+Horizontally\+\_\+clicked} ()\label{class_main_window_ad5d0ca46a9061f5a22f84494de29f8d9}
148
+
149
+\item 
150
+\hypertarget{class_main_window_aeb76bf75157cc088511193f8190d0d95}{}void {\bfseries on\+\_\+btn\+Flip\+Image\+Vertically\+\_\+clicked} ()\label{class_main_window_aeb76bf75157cc088511193f8190d0d95}
151
+
152
+\item 
153
+\hypertarget{class_main_window_aadc6d08a96c6003b94d29b254de97838}{}void {\bfseries on\+\_\+btn\+Grey\+Scale\+Filter\+\_\+clicked} ()\label{class_main_window_aadc6d08a96c6003b94d29b254de97838}
154
+
155
+\item 
156
+\hypertarget{class_main_window_a4a615fae77ffcbb3ff634215be270590}{}void {\bfseries on\+\_\+btn\+Revert\+Image\+\_\+clicked} ()\label{class_main_window_a4a615fae77ffcbb3ff634215be270590}
157
+
158
+\end{DoxyCompactItemize}
159
+\subsection*{Private Attributes}
160
+\begin{DoxyCompactItemize}
161
+\item 
162
+\hypertarget{class_main_window_a43606649aeaf9e561328935fca0cd1bf}{}Ui\+::\+Main\+Window $\ast$ {\bfseries ui}\label{class_main_window_a43606649aeaf9e561328935fca0cd1bf}
163
+
164
+\item 
165
+\hypertarget{class_main_window_a4e3a604a9d31eae583a1935b5694af3b}{}Q\+Image {\bfseries original\+Image}\label{class_main_window_a4e3a604a9d31eae583a1935b5694af3b}
166
+
167
+\item 
168
+\hypertarget{class_main_window_a958e3bd8b0adbd5675083198a25d35ab}{}Q\+Image {\bfseries edited\+Image}\label{class_main_window_a958e3bd8b0adbd5675083198a25d35ab}
169
+
170
+\item 
171
+\hypertarget{class_main_window_a81fc322ea9d4bf48c690011789e7badf}{}bool {\bfseries invert\+Color}\label{class_main_window_a81fc322ea9d4bf48c690011789e7badf}
172
+
173
+\end{DoxyCompactItemize}
174
+
175
+
176
+\subsection{Constructor \& Destructor Documentation}
177
+\hypertarget{class_main_window_a8b244be8b7b7db1b08de2a2acb9409db}{}\index{Main\+Window@{Main\+Window}!Main\+Window@{Main\+Window}}
178
+\index{Main\+Window@{Main\+Window}!Main\+Window@{Main\+Window}}
179
+\subsubsection[{Main\+Window}]{\setlength{\rightskip}{0pt plus 5cm}Main\+Window\+::\+Main\+Window (
180
+\begin{DoxyParamCaption}
181
+\item[{Q\+Widget $\ast$}]{parent = {\ttfamily 0}}
182
+\end{DoxyParamCaption}
183
+)\hspace{0.3cm}{\ttfamily [explicit]}}\label{class_main_window_a8b244be8b7b7db1b08de2a2acb9409db}
184
+
185
+
186
+Constructor. 
187
+
188
+Destructor. K\+E\+Y\+B\+O\+A\+R\+D S\+H\+O\+R\+T\+C\+U\+T\+S Loads a image with cmd + o Carga una imagen con cmd + o
189
+
190
+Saves a image with cmd + s Guarda una imagen con cmd + s
191
+
192
+Closes window with cmd + w Cierra la ventana con cmd + w
193
+
194
+Inverts threshold color with cmd + t Invierte el color umbral con cmd + t
195
+
196
+Flips horizontally a image with cmd + f Rota horizontalmente una imagen con cmd + f
197
+
198
+Flips vertically a image with cmd + v Rota verticalmente una imagen con cmd + v
199
+
200
+Applies greyscale filter to a image with cmd + g Aplica el filtro de tonos grises a una imagen con cmd + g
201
+
202
+Resets an edited image to the orignal one to a image with cmd + r Devuelve la imagen editada a su estado original con cmd + r
203
+
204
+Display the instructions with cmd + i Despliega las instrucciones con cmd + i 
205
+
206
+\subsection{Member Function Documentation}
207
+\hypertarget{class_main_window_a92d8983ccdda1d49d2d9c6302e7aab52}{}\index{Main\+Window@{Main\+Window}!Gray\+Scale@{Gray\+Scale}}
208
+\index{Gray\+Scale@{Gray\+Scale}!Main\+Window@{Main\+Window}}
209
+\subsubsection[{Gray\+Scale}]{\setlength{\rightskip}{0pt plus 5cm}void Main\+Window\+::\+Gray\+Scale (
210
+\begin{DoxyParamCaption}
211
+\item[{Q\+Image \&}]{edited\+Image}
212
+\end{DoxyParamCaption}
213
+)}\label{class_main_window_a92d8983ccdda1d49d2d9c6302e7aab52}
214
+
215
+
216
+Function that applies a greyscale filter in the edited image. It works by turning each pixel into the color grey. 
217
+
218
+Function that applies a greyscale filter to the edited image. It works by turning each pixel into the color grey. For this we use two for loops to access the pixels of the edited image.
219
+
220
+
221
+\begin{DoxyParams}{Parameters}
222
+{\em original\+Image} & Reference to the original image (no filter) \\
223
+\hline
224
+{\em edited\+Image} & Reference to the destination image with the filter applied. \\
225
+\hline
226
+\end{DoxyParams}
227
+\hypertarget{class_main_window_a6827de64beb6250700e8bafc005379c4}{}\index{Main\+Window@{Main\+Window}!Horizontal\+Flip@{Horizontal\+Flip}}
228
+\index{Horizontal\+Flip@{Horizontal\+Flip}!Main\+Window@{Main\+Window}}
229
+\subsubsection[{Horizontal\+Flip}]{\setlength{\rightskip}{0pt plus 5cm}void Main\+Window\+::\+Horizontal\+Flip (
230
+\begin{DoxyParamCaption}
231
+\item[{Q\+Image \&}]{edited\+Image}
232
+\end{DoxyParamCaption}
233
+)}\label{class_main_window_a6827de64beb6250700e8bafc005379c4}
234
+
235
+
236
+Function that applies a horizontal flip to the edited image. It works by putting the pixel from the original image in the width-\/1-\/i position of the edited image. 
237
+
238
+Function that applies a horizontal flip to the edited image For this we use two for loops to access the pixels of the images. In the first loop we go through the x axis and in the second we go through the y axis and inside of it we put the pixel from the original image in the width-\/1-\/i position of the edited image.
239
+
240
+
241
+\begin{DoxyParams}{Parameters}
242
+{\em original\+Image} & Reference to the original image (no filter) \\
243
+\hline
244
+{\em edited\+Image} & Reference to the destination image with the filter applied. \\
245
+\hline
246
+\end{DoxyParams}
247
+\hypertarget{class_main_window_a4ff08d0fe0eca41750440ca1f4d9c768}{}\index{Main\+Window@{Main\+Window}!on\+\_\+action\+Load\+\_\+\+Image\+\_\+triggered@{on\+\_\+action\+Load\+\_\+\+Image\+\_\+triggered}}
248
+\index{on\+\_\+action\+Load\+\_\+\+Image\+\_\+triggered@{on\+\_\+action\+Load\+\_\+\+Image\+\_\+triggered}!Main\+Window@{Main\+Window}}
249
+\subsubsection[{on\+\_\+action\+Load\+\_\+\+Image\+\_\+triggered}]{\setlength{\rightskip}{0pt plus 5cm}void Main\+Window\+::on\+\_\+action\+Load\+\_\+\+Image\+\_\+triggered (
250
+\begin{DoxyParamCaption}
251
+{}
252
+\end{DoxyParamCaption}
253
+)\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}\label{class_main_window_a4ff08d0fe0eca41750440ca1f4d9c768}
254
+
255
+
256
+Invokes function \hyperlink{class_main_window_a097fcba797448372b19307a32ced737d}{on\+\_\+btn\+Load\+Image\+\_\+clicked()} 
257
+
258
+A\+C\+T\+I\+O\+N F\+U\+N\+C\+T\+I\+O\+N\+S \hypertarget{class_main_window_a4fc39fdbaf9fb6a3f551eea7c4e3c9ae}{}\index{Main\+Window@{Main\+Window}!Threshold\+Filter@{Threshold\+Filter}}
259
+\index{Threshold\+Filter@{Threshold\+Filter}!Main\+Window@{Main\+Window}}
260
+\subsubsection[{Threshold\+Filter}]{\setlength{\rightskip}{0pt plus 5cm}void Main\+Window\+::\+Threshold\+Filter (
261
+\begin{DoxyParamCaption}
262
+\item[{Q\+Image \&}]{original\+Image, }
263
+\item[{Q\+Image \&}]{edited\+Image, }
264
+\item[{unsigned int}]{threshold, }
265
+\item[{bool}]{color}
266
+\end{DoxyParamCaption}
267
+)}\label{class_main_window_a4fc39fdbaf9fb6a3f551eea7c4e3c9ae}
268
+
269
+
270
+Function that applies a theshold filter to the edited image. It works by creating a black and white image where the color of the new pixel is white or black depending on a threshold value and the average of the colors of the pixel of the original image. 
271
+
272
+
273
+\begin{DoxyParams}{Parameters}
274
+{\em original\+Image} & Reference to the original image (no filter) \\
275
+\hline
276
+{\em edited\+Image} & Reference to the destination image with the filter applied. \\
277
+\hline
278
+{\em threshold} & Integer value that serves as a black or white color threshold \\
279
+\hline
280
+{\em color} & boolean value to select which color white or black if the color average is under or over the threshold.\\
281
+\hline
282
+\end{DoxyParams}
283
+Function that applies a threshold filter to the edited image. For this we use two for loops to access the pixels of the images. In the first loop we go through the x axis and in the second we go through the y axis. \hypertarget{class_main_window_a3d4e0cc1efd8a430d0a07901a9da96ae}{}\index{Main\+Window@{Main\+Window}!Vertical\+Flip@{Vertical\+Flip}}
284
+\index{Vertical\+Flip@{Vertical\+Flip}!Main\+Window@{Main\+Window}}
285
+\subsubsection[{Vertical\+Flip}]{\setlength{\rightskip}{0pt plus 5cm}void Main\+Window\+::\+Vertical\+Flip (
286
+\begin{DoxyParamCaption}
287
+\item[{Q\+Image \&}]{edited\+Image}
288
+\end{DoxyParamCaption}
289
+)}\label{class_main_window_a3d4e0cc1efd8a430d0a07901a9da96ae}
290
+
291
+
292
+Function that applies a vertical flip to the edited image. It works by putting the pixel from the original image in the heigth-\/1-\/j position of the edited image. 
293
+
294
+Function that applies a vertical flip to the edited image. For this we use two for loops to access the pixels of the images. In the first loop we go through the x axis and in the second we go through the y axis and inside of it we put the pixel from the original image in the heigth-\/1-\/j position of the edited image.
295
+
296
+
297
+\begin{DoxyParams}{Parameters}
298
+{\em original\+Image} & Reference to the original image (no filter) \\
299
+\hline
300
+{\em edited\+Image} & Reference to the destination image with the filter applied. \\
301
+\hline
302
+\end{DoxyParams}
303
+
304
+
305
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
306
+\item 
307
+bk/mainwindow.\+h\item 
308
+bk/mainwindow.\+cpp\item 
309
+filter.\+cpp\end{DoxyCompactItemize}

+ 11
- 0
doc/en/latex/dir_cf6ae5303f77eb2b244aeafbd603daac.tex Vedi File

@@ -0,0 +1,11 @@
1
+\hypertarget{dir_cf6ae5303f77eb2b244aeafbd603daac}{}\section{bk Directory Reference}
2
+\label{dir_cf6ae5303f77eb2b244aeafbd603daac}\index{bk Directory Reference@{bk Directory Reference}}
3
+\subsection*{Files}
4
+\begin{DoxyCompactItemize}
5
+\item 
6
+file {\bfseries main.\+cpp}
7
+\item 
8
+file {\bfseries mainwindow.\+cpp}
9
+\item 
10
+file {\bfseries mainwindow.\+h}
11
+\end{DoxyCompactItemize}

+ 480
- 0
doc/en/latex/doxygen.sty Vedi 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}

+ 7
- 0
doc/en/latex/hierarchy.tex Vedi File

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

+ 157
- 0
doc/en/latex/refman.tex Vedi File

@@ -0,0 +1,157 @@
1
+\documentclass[twoside]{book}
2
+
3
+% Packages required by doxygen
4
+\usepackage{fixltx2e}
5
+\usepackage{calc}
6
+\usepackage{doxygen}
7
+\usepackage[export]{adjustbox} % also loads graphicx
8
+\usepackage{graphicx}
9
+\usepackage[utf8]{inputenc}
10
+\usepackage{makeidx}
11
+\usepackage{multicol}
12
+\usepackage{multirow}
13
+\PassOptionsToPackage{warn}{textcomp}
14
+\usepackage{textcomp}
15
+\usepackage[nointegrals]{wasysym}
16
+\usepackage[table]{xcolor}
17
+
18
+% Font selection
19
+\usepackage[T1]{fontenc}
20
+\usepackage[scaled=.90]{helvet}
21
+\usepackage{courier}
22
+\usepackage{amssymb}
23
+\usepackage{sectsty}
24
+\renewcommand{\familydefault}{\sfdefault}
25
+\allsectionsfont{%
26
+  \fontseries{bc}\selectfont%
27
+  \color{darkgray}%
28
+}
29
+\renewcommand{\DoxyLabelFont}{%
30
+  \fontseries{bc}\selectfont%
31
+  \color{darkgray}%
32
+}
33
+\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
34
+
35
+% Page & text layout
36
+\usepackage{geometry}
37
+\geometry{%
38
+  a4paper,%
39
+  top=2.5cm,%
40
+  bottom=2.5cm,%
41
+  left=2.5cm,%
42
+  right=2.5cm%
43
+}
44
+\tolerance=750
45
+\hfuzz=15pt
46
+\hbadness=750
47
+\setlength{\emergencystretch}{15pt}
48
+\setlength{\parindent}{0cm}
49
+\setlength{\parskip}{0.2cm}
50
+\makeatletter
51
+\renewcommand{\paragraph}{%
52
+  \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
53
+    \normalfont\normalsize\bfseries\SS@parafont%
54
+  }%
55
+}
56
+\renewcommand{\subparagraph}{%
57
+  \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
58
+    \normalfont\normalsize\bfseries\SS@subparafont%
59
+  }%
60
+}
61
+\makeatother
62
+
63
+% Headers & footers
64
+\usepackage{fancyhdr}
65
+\pagestyle{fancyplain}
66
+\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
67
+\fancyhead[CE]{\fancyplain{}{}}
68
+\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
69
+\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
70
+\fancyhead[CO]{\fancyplain{}{}}
71
+\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
72
+\fancyfoot[LE]{\fancyplain{}{}}
73
+\fancyfoot[CE]{\fancyplain{}{}}
74
+\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Aug 11 2015 13\+:49\+:09 for My Project by Doxygen }}
75
+\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated on Tue Aug 11 2015 13\+:49\+:09 for My Project by Doxygen }}
76
+\fancyfoot[CO]{\fancyplain{}{}}
77
+\fancyfoot[RO]{\fancyplain{}{}}
78
+\renewcommand{\footrulewidth}{0.4pt}
79
+\renewcommand{\chaptermark}[1]{%
80
+  \markboth{#1}{}%
81
+}
82
+\renewcommand{\sectionmark}[1]{%
83
+  \markright{\thesection\ #1}%
84
+}
85
+
86
+% Indices & bibliography
87
+\usepackage{natbib}
88
+\usepackage[titles]{tocloft}
89
+\setcounter{tocdepth}{3}
90
+\setcounter{secnumdepth}{5}
91
+\makeindex
92
+
93
+% Hyperlinks (required, but should be loaded last)
94
+\usepackage{ifpdf}
95
+\ifpdf
96
+  \usepackage[pdftex,pagebackref=true]{hyperref}
97
+\else
98
+  \usepackage[ps2pdf,pagebackref=true]{hyperref}
99
+\fi
100
+\hypersetup{%
101
+  colorlinks=true,%
102
+  linkcolor=blue,%
103
+  citecolor=blue,%
104
+  unicode%
105
+}
106
+
107
+% Custom commands
108
+\newcommand{\clearemptydoublepage}{%
109
+  \newpage{\pagestyle{empty}\cleardoublepage}%
110
+}
111
+
112
+
113
+%===== C O N T E N T S =====
114
+
115
+\begin{document}
116
+
117
+% Titlepage & ToC
118
+\hypersetup{pageanchor=false,
119
+             bookmarks=true,
120
+             bookmarksnumbered=true,
121
+             pdfencoding=unicode
122
+            }
123
+\pagenumbering{roman}
124
+\begin{titlepage}
125
+\vspace*{7cm}
126
+\begin{center}%
127
+{\Large My Project }\\
128
+\vspace*{1cm}
129
+{\large Generated by Doxygen 1.8.9.1}\\
130
+\vspace*{0.5cm}
131
+{\small Tue Aug 11 2015 13:49:09}\\
132
+\end{center}
133
+\end{titlepage}
134
+\clearemptydoublepage
135
+\tableofcontents
136
+\clearemptydoublepage
137
+\pagenumbering{arabic}
138
+\hypersetup{pageanchor=true}
139
+
140
+%--- Begin generated contents ---
141
+\chapter{Hierarchical Index}
142
+\input{hierarchy}
143
+\chapter{Class Index}
144
+\input{annotated}
145
+\chapter{Class Documentation}
146
+\input{class_main_window}
147
+%--- End generated contents ---
148
+
149
+% Index
150
+\backmatter
151
+\newpage
152
+\phantomsection
153
+\clearemptydoublepage
154
+\addcontentsline{toc}{chapter}{Index}
155
+\printindex
156
+
157
+\end{document}

+ 102
- 0
doc/es/html/annotated.html Vedi File

@@ -0,0 +1,102 @@
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: Lista de clases</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
+<!-- Generado por Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Buscar');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Página&#160;principal</span></a></li>
41
+      <li class="current"><a href="annotated.html"><span>Clases</span></a></li>
42
+      <li><a href="files.html"><span>Archivos</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="Buscar" 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>Lista&#160;de&#160;clases</span></a></li>
64
+      <li><a href="classes.html"><span>Índice&#160;de&#160;clases</span></a></li>
65
+      <li><a href="hierarchy.html"><span>Jerarquía&#160;de&#160;la&#160;clase</span></a></li>
66
+      <li><a href="functions.html"><span>Miembros&#160;de&#160;las&#160;clases</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">Lista de clases</div>  </div>
87
+</div><!--header-->
88
+<div class="contents">
89
+<div class="textblock">Lista de las clases, estructuras, uniones e interfaces con una breve descripción:</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_main_window.html" target="_self">MainWindow</a></td><td class="desc"></td></tr>
92
+</table>
93
+</div><!-- directory -->
94
+</div><!-- contents -->
95
+<!-- start footer part -->
96
+<hr class="footer"/><address class="footer"><small>
97
+Generado el Martes, 11 de Agosto de 2015 13:49:11 para My Project por &#160;<a href="http://www.doxygen.org/index.html">
98
+<img class="footer" src="doxygen.png" alt="doxygen"/>
99
+</a> 1.8.9.1
100
+</small></address>
101
+</body>
102
+</html>

BIN
doc/es/html/arrowdown.png Vedi File


BIN
doc/es/html/arrowright.png Vedi File


BIN
doc/es/html/bc_s.png Vedi File


BIN
doc/es/html/bdwn.png Vedi File


+ 213
- 0
doc/es/html/bk_2mainwindow_8h_source.html Vedi File

@@ -0,0 +1,213 @@
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: Fichero Fuente bk/mainwindow.h</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
+<!-- Generado por Doxygen 1.8.9.1 -->
35
+<script type="text/javascript">
36
+var searchBox = new SearchBox("searchBox", "search",false,'Buscar');
37
+</script>
38
+  <div id="navrow1" class="tabs">
39
+    <ul class="tablist">
40
+      <li><a href="index.html"><span>Página&#160;principal</span></a></li>
41
+      <li><a href="annotated.html"><span>Clases</span></a></li>
42
+      <li class="current"><a href="files.html"><span>Archivos</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="Buscar" 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>Lista&#160;de&#160;archivos</span></a></li>
64
+    </ul>
65
+  </div>
66
+<!-- window showing the filter options -->
67
+<div id="MSearchSelectWindow"
68
+     onmouseover="return searchBox.OnSearchSelectShow()"
69
+     onmouseout="return searchBox.OnSearchSelectHide()"
70
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
71
+</div>
72
+
73
+<!-- iframe showing the search results (closed by default) -->
74
+<div id="MSearchResultsWindow">
75
+<iframe src="javascript:void(0)" frameborder="0" 
76
+        name="MSearchResults" id="MSearchResults">
77
+</iframe>
78
+</div>
79
+
80
+<div id="nav-path" class="navpath">
81
+  <ul>
82
+<li class="navelem"><a class="el" href="dir_cf6ae5303f77eb2b244aeafbd603daac.html">bk</a></li>  </ul>
83
+</div>
84
+</div><!-- top -->
85
+<div class="header">
86
+  <div class="headertitle">
87
+<div class="title">mainwindow.h</div>  </div>
88
+</div><!--header-->
89
+<div class="contents">
90
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">// RAN 2015-07-03 - Moved some prototypes to filter.h</span></div>
91
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;</div>
92
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor">#ifndef MAINWINDOW_H</span></div>
93
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#define MAINWINDOW_H</span></div>
94
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div>
95
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;QMainWindow&gt;</span></div>
96
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;QFileDialog&gt;</span></div>
97
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;QDir&gt;</span></div>
98
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;QMessageBox&gt;</span></div>
99
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="preprocessor">#include &lt;QSlider&gt;</span></div>
100
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &lt;QShortcut&gt;</span></div>
101
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &lt;QMessageBox&gt;</span></div>
102
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div>
103
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#define WHITE 0xffffffff</span></div>
104
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="preprocessor">#define BLACK 0xff000000</span></div>
105
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;</div>
106
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_ui.html">Ui</a> {</div>
107
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">class </span><a class="code" href="class_main_window.html">MainWindow</a>;</div>
108
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;}</div>
109
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div>
110
+<div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="class_main_window.html">   21</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>
111
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;{</div>
112
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;    Q_OBJECT</div>
113
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div>
114
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="keyword">public</span>:</div>
115
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow</a>(QWidget *parent = 0);</div>
116
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div>
117
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a92d8983ccdda1d49d2d9c6302e7aab52">GrayScale</a>(QImage &amp;);</div>
118
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div>
119
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a3d4e0cc1efd8a430d0a07901a9da96ae">VerticalFlip</a>(QImage &amp;);</div>
120
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;</div>
121
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a6827de64beb6250700e8bafc005379c4">HorizontalFlip</a>(QImage &amp;);</div>
122
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div>
123
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">ThresholdFilter</a>(QImage &amp;, QImage &amp;,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> , <span class="keywordtype">bool</span>);</div>
124
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;</div>
125
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    ~<a class="code" href="class_main_window.html">MainWindow</a>();</div>
126
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;</div>
127
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keyword">private</span> slots:</div>
128
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div>
129
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768">on_actionLoad_Image_triggered</a>();</div>
130
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;</div>
131
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4">on_actionSave_Image_triggered</a>();</div>
132
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div>
133
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;    <span class="keywordtype">void</span> on_actionClose_Window_triggered();</div>
134
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div>
135
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636">on_actionInvert_Threshold_Colors_triggered</a>();</div>
136
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;</div>
137
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320">on_actionFlip_Image_Horizontally_triggered</a>();</div>
138
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div>
139
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aee732b0d048591cff1432aa7992ae474">on_actionFlip_Image_Vertically_triggered</a>();</div>
140
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;</div>
141
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0">on_actionApply_Grey_Scale_Filter_triggered</a>();</div>
142
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div>
143
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8">on_actionRevert_Edited_Image_to_Original_triggered</a>();</div>
144
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;</div>
145
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a7a83ec2aee41b85977c9a832de61346b">on_actionInstructions_triggered</a>();</div>
146
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div>
147
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div>
148
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#ab39da572361126e8b2b47b55dd8a9f51">applyThresholdFilter</a>();</div>
149
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div>
150
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aeeabb8c67fc108c9df2b0da0d9674181">instructions</a>();</div>
151
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div>
152
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div>
153
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4">on_thresholdSlider_sliderReleased</a>();</div>
154
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div>
155
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a097fcba797448372b19307a32ced737d">on_btnLoadImage_clicked</a>();</div>
156
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div>
157
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">on_btnSaveImage_clicked</a>();</div>
158
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div>
159
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a9936e00b191c04ab938897cf13690dbe">on_chboxThreshold_clicked</a>();</div>
160
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div>
161
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40">on_btnInvertThreshold_clicked</a>();</div>
162
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div>
163
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9">on_btnFlipImageHorizontally_clicked</a>();</div>
164
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;</div>
165
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95">on_btnFlipImageVertically_clicked</a>();</div>
166
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div>
167
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838">on_btnGreyScaleFilter_clicked</a>();</div>
168
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div>
169
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590">on_btnRevertImage_clicked</a>();</div>
170
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div>
171
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="keyword">private</span>:</div>
172
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    Ui::MainWindow *ui;</div>
173
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    QImage originalImage;  <span class="comment">//This will hold the original image.</span></div>
174
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;    QImage editedImage;    <span class="comment">//This will hold the edited image.</span></div>
175
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <span class="keywordtype">bool</span> invertColor;   <span class="comment">//Boolean value of the switch button for the threshold filter.</span></div>
176
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;};</div>
177
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div>
178
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;<span class="preprocessor">#endif // MAINWINDOW_H</span></div>
179
+<div class="ttc" id="class_main_window_html_aeb76bf75157cc088511193f8190d0d95"><div class="ttname"><a href="class_main_window.html#aeb76bf75157cc088511193f8190d0d95">MainWindow::on_btnFlipImageVertically_clicked</a></div><div class="ttdeci">void on_btnFlipImageVertically_clicked()</div><div class="ttdoc">Para llamar al filtro de imagen flip vertical. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:253</div></div>
180
+<div class="ttc" id="class_main_window_html_aeeabb8c67fc108c9df2b0da0d9674181"><div class="ttname"><a href="class_main_window.html#aeeabb8c67fc108c9df2b0da0d9674181">MainWindow::instructions</a></div><div class="ttdeci">void instructions()</div><div class="ttdoc">Para desplegar las instrucciones. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:287</div></div>
181
+<div class="ttc" id="class_main_window_html_a4fc39fdbaf9fb6a3f551eea7c4e3c9ae"><div class="ttname"><a href="class_main_window.html#a4fc39fdbaf9fb6a3f551eea7c4e3c9ae">MainWindow::ThresholdFilter</a></div><div class="ttdeci">void ThresholdFilter(QImage &amp;, QImage &amp;, unsigned int, bool)</div><div class="ttdoc">Funcion que aplica un filtro de umbral en la imagen editada. Funciona creando una imagen en blanco y ...</div><div class="ttdef"><b>Definition:</b> filter.cpp:82</div></div>
182
+<div class="ttc" id="class_main_window_html_a3d4e0cc1efd8a430d0a07901a9da96ae"><div class="ttname"><a href="class_main_window.html#a3d4e0cc1efd8a430d0a07901a9da96ae">MainWindow::VerticalFlip</a></div><div class="ttdeci">void VerticalFlip(QImage &amp;)</div><div class="ttdoc">Funcion que aplica un filtro de flip vertical en la imagen editada. Funciona poniendo el pixel de la ...</div><div class="ttdef"><b>Definition:</b> filter.cpp:30</div></div>
183
+<div class="ttc" id="class_main_window_html_a803c210fefa9d0416f1b1c6c9769aa40"><div class="ttname"><a href="class_main_window.html#a803c210fefa9d0416f1b1c6c9769aa40">MainWindow::on_btnInvertThreshold_clicked</a></div><div class="ttdeci">void on_btnInvertThreshold_clicked()</div><div class="ttdoc">Para aplicar el filtro de umbral y cargar la imagen editada al GUI cuando el color del umbral es inve...</div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:197</div></div>
184
+<div class="ttc" id="class_main_window_html_a78d8ae530c062adf68cd5d5d05d13320"><div class="ttname"><a href="class_main_window.html#a78d8ae530c062adf68cd5d5d05d13320">MainWindow::on_actionFlip_Image_Horizontally_triggered</a></div><div class="ttdeci">void on_actionFlip_Image_Horizontally_triggered()</div><div class="ttdoc">Invoca la funcion on_btnFlipImageHorizontally_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:114</div></div>
185
+<div class="ttc" id="class_main_window_html_a4a615fae77ffcbb3ff634215be270590"><div class="ttname"><a href="class_main_window.html#a4a615fae77ffcbb3ff634215be270590">MainWindow::on_btnRevertImage_clicked</a></div><div class="ttdeci">void on_btnRevertImage_clicked()</div><div class="ttdoc">Para reajustar la imagen editada a la imagen original. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:275</div></div>
186
+<div class="ttc" id="class_main_window_html_aadc6d08a96c6003b94d29b254de97838"><div class="ttname"><a href="class_main_window.html#aadc6d08a96c6003b94d29b254de97838">MainWindow::on_btnGreyScaleFilter_clicked</a></div><div class="ttdeci">void on_btnGreyScaleFilter_clicked()</div><div class="ttdoc">Para llamar al filtro de imagen de escalas grises. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:264</div></div>
187
+<div class="ttc" id="namespace_ui_html"><div class="ttname"><a href="namespace_ui.html">Ui</a></div><div class="ttdef"><b>Definition:</b> mainwindow.h:17</div></div>
188
+<div class="ttc" id="class_main_window_html_aa2b30fce1731a2ba1818f60ee9dc45a4"><div class="ttname"><a href="class_main_window.html#aa2b30fce1731a2ba1818f60ee9dc45a4">MainWindow::on_thresholdSlider_sliderReleased</a></div><div class="ttdeci">void on_thresholdSlider_sliderReleased()</div><div class="ttdoc">Para aplicar el filtro de umbral y cargar la imagen editada al GUI cuando el deslizador del GUI es mo...</div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:185</div></div>
189
+<div class="ttc" id="class_main_window_html_ad5d0ca46a9061f5a22f84494de29f8d9"><div class="ttname"><a href="class_main_window.html#ad5d0ca46a9061f5a22f84494de29f8d9">MainWindow::on_btnFlipImageHorizontally_clicked</a></div><div class="ttdeci">void on_btnFlipImageHorizontally_clicked()</div><div class="ttdoc">Para llamar al filtro de imagen flip horizontal. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:242</div></div>
190
+<div class="ttc" id="class_main_window_html_aee732b0d048591cff1432aa7992ae474"><div class="ttname"><a href="class_main_window.html#aee732b0d048591cff1432aa7992ae474">MainWindow::on_actionFlip_Image_Vertically_triggered</a></div><div class="ttdeci">void on_actionFlip_Image_Vertically_triggered()</div><div class="ttdoc">Invoca la funcion on_btnFlipImageVertically_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:123</div></div>
191
+<div class="ttc" id="class_main_window_html_ad495b5030e61fb55b8ab95c5a3a559d6"><div class="ttname"><a href="class_main_window.html#ad495b5030e61fb55b8ab95c5a3a559d6">MainWindow::on_btnSaveImage_clicked</a></div><div class="ttdeci">void on_btnSaveImage_clicked()</div><div class="ttdoc">Para guardar una imagen al sistema de archivos cuando se marca opcion de guardar imagen. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:230</div></div>
192
+<div class="ttc" id="class_main_window_html_a86de73fc655de25fc6bed09f8ee304a0"><div class="ttname"><a href="class_main_window.html#a86de73fc655de25fc6bed09f8ee304a0">MainWindow::on_actionApply_Grey_Scale_Filter_triggered</a></div><div class="ttdeci">void on_actionApply_Grey_Scale_Filter_triggered()</div><div class="ttdoc">Invoca la funcion on_btnGreyScaleFilter_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:132</div></div>
193
+<div class="ttc" id="class_main_window_html_a097fcba797448372b19307a32ced737d"><div class="ttname"><a href="class_main_window.html#a097fcba797448372b19307a32ced737d">MainWindow::on_btnLoadImage_clicked</a></div><div class="ttdeci">void on_btnLoadImage_clicked()</div><div class="ttdoc">Para cargar una imagen al GUI cuando se marca opcion de cargar imagen. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:210</div></div>
194
+<div class="ttc" id="class_main_window_html_a6827de64beb6250700e8bafc005379c4"><div class="ttname"><a href="class_main_window.html#a6827de64beb6250700e8bafc005379c4">MainWindow::HorizontalFlip</a></div><div class="ttdeci">void HorizontalFlip(QImage &amp;)</div><div class="ttdoc">Funcion que aplica un filtro de flip horizontal en la imagen editada. Funciona poniendo el pixel de l...</div><div class="ttdef"><b>Definition:</b> filter.cpp:57</div></div>
195
+<div class="ttc" id="class_main_window_html_a7a83ec2aee41b85977c9a832de61346b"><div class="ttname"><a href="class_main_window.html#a7a83ec2aee41b85977c9a832de61346b">MainWindow::on_actionInstructions_triggered</a></div><div class="ttdeci">void on_actionInstructions_triggered()</div><div class="ttdoc">Para desplegar las instrucciones. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:150</div></div>
196
+<div class="ttc" id="class_main_window_html_aab8ca019ab84ef9c21ed9301abca6636"><div class="ttname"><a href="class_main_window.html#aab8ca019ab84ef9c21ed9301abca6636">MainWindow::on_actionInvert_Threshold_Colors_triggered</a></div><div class="ttdeci">void on_actionInvert_Threshold_Colors_triggered()</div><div class="ttdoc">Invoca la funcion on_btnInvertThreshold_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:105</div></div>
197
+<div class="ttc" id="class_main_window_html_a8b244be8b7b7db1b08de2a2acb9409db"><div class="ttname"><a href="class_main_window.html#a8b244be8b7b7db1b08de2a2acb9409db">MainWindow::MainWindow</a></div><div class="ttdeci">MainWindow(QWidget *parent=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:14</div></div>
198
+<div class="ttc" id="class_main_window_html_ab39da572361126e8b2b47b55dd8a9f51"><div class="ttname"><a href="class_main_window.html#ab39da572361126e8b2b47b55dd8a9f51">MainWindow::applyThresholdFilter</a></div><div class="ttdeci">void applyThresholdFilter()</div><div class="ttdoc">Para aplicar el filtro de umbral. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:174</div></div>
199
+<div class="ttc" id="class_main_window_html_a92d8983ccdda1d49d2d9c6302e7aab52"><div class="ttname"><a href="class_main_window.html#a92d8983ccdda1d49d2d9c6302e7aab52">MainWindow::GrayScale</a></div><div class="ttdeci">void GrayScale(QImage &amp;)</div><div class="ttdoc">Funcion que aplica un filtro de escala gris en la imagen editada. Funciona cambiando cada pixel a un ...</div><div class="ttdef"><b>Definition:</b> filter.cpp:10</div></div>
200
+<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:21</div></div>
201
+<div class="ttc" id="class_main_window_html_a579dbaf9e4684318a252f7bc471e2db8"><div class="ttname"><a href="class_main_window.html#a579dbaf9e4684318a252f7bc471e2db8">MainWindow::on_actionRevert_Edited_Image_to_Original_triggered</a></div><div class="ttdeci">void on_actionRevert_Edited_Image_to_Original_triggered()</div><div class="ttdoc">Invoca la funcion on_btnRevertImage_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:141</div></div>
202
+<div class="ttc" id="class_main_window_html_a9936e00b191c04ab938897cf13690dbe"><div class="ttname"><a href="class_main_window.html#a9936e00b191c04ab938897cf13690dbe">MainWindow::on_chboxThreshold_clicked</a></div><div class="ttdeci">void on_chboxThreshold_clicked()</div><div class="ttdoc">Para aplicar el filtro de umbral y cargar la imagen editada al GUI. </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:159</div></div>
203
+<div class="ttc" id="class_main_window_html_a9064a0047e3e77e6d48ebb59bd711da4"><div class="ttname"><a href="class_main_window.html#a9064a0047e3e77e6d48ebb59bd711da4">MainWindow::on_actionSave_Image_triggered</a></div><div class="ttdeci">void on_actionSave_Image_triggered()</div><div class="ttdoc">Invoca la funcion on_btnSaveImage_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:87</div></div>
204
+<div class="ttc" id="class_main_window_html_a4ff08d0fe0eca41750440ca1f4d9c768"><div class="ttname"><a href="class_main_window.html#a4ff08d0fe0eca41750440ca1f4d9c768">MainWindow::on_actionLoad_Image_triggered</a></div><div class="ttdeci">void on_actionLoad_Image_triggered()</div><div class="ttdoc">Invoca la funcion on_btnLoadImage_clicked() </div><div class="ttdef"><b>Definition:</b> mainwindow.cpp:78</div></div>
205
+</div><!-- fragment --></div><!-- contents -->
206
+<!-- start footer part -->
207
+<hr class="footer"/><address class="footer"><small>
208
+Generado el Martes, 11 de Agosto de 2015 13:49:11 para My Project por &#160;<a href="http://www.doxygen.org/index.html">
209
+<img class="footer" src="doxygen.png" alt="doxygen"/>
210
+</a> 1.8.9.1
211
+</small></address>
212
+</body>
213
+</html>

+ 0
- 0
doc/es/html/class_main_window-members.html Vedi File


Dato che sono stati cambiati molti file in questo diff, alcuni di essi non verranno mostrati