Rafael Arce Nazario 8 years ago
commit
32b6b004df
100 changed files with 9046 additions and 0 deletions
  1. BIN
      .DS_Store
  2. 96
    0
      Filter.cpp
  3. 144
    0
      ImageScrambler.cpp
  4. 157
    0
      ImageScrambler.h
  5. 28
    0
      ImageScrambler.pro
  6. 352
    0
      ImageScrambler.ui
  7. 222
    0
      README.md
  8. 165
    0
      doc/en/html/_image_scrambler_8h_source.html
  9. 102
    0
      doc/en/html/annotated.html
  10. BIN
      doc/en/html/arrowdown.png
  11. BIN
      doc/en/html/arrowright.png
  12. BIN
      doc/en/html/bc_s.png
  13. BIN
      doc/en/html/bdwn.png
  14. 116
    0
      doc/en/html/class_image_scrambler-members.html
  15. 379
    0
      doc/en/html/class_image_scrambler.html
  16. BIN
      doc/en/html/class_image_scrambler.png
  17. 106
    0
      doc/en/html/classes.html
  18. BIN
      doc/en/html/closed.png
  19. BIN
      doc/en/html/doc.png
  20. 1449
    0
      doc/en/html/doxygen.css
  21. BIN
      doc/en/html/doxygen.png
  22. 97
    0
      doc/en/html/dynsections.js
  23. 99
    0
      doc/en/html/files.html
  24. BIN
      doc/en/html/folderclosed.png
  25. BIN
      doc/en/html/folderopen.png
  26. 147
    0
      doc/en/html/functions.html
  27. 138
    0
      doc/en/html/functions_func.html
  28. 111
    0
      doc/en/html/functions_vars.html
  29. 103
    0
      doc/en/html/hierarchy.html
  30. 87
    0
      doc/en/html/index.html
  31. 68
    0
      doc/en/html/jquery.js
  32. BIN
      doc/en/html/nav_f.png
  33. BIN
      doc/en/html/nav_g.png
  34. BIN
      doc/en/html/nav_h.png
  35. BIN
      doc/en/html/open.png
  36. 26
    0
      doc/en/html/search/all_0.html
  37. 4
    0
      doc/en/html/search/all_0.js
  38. 26
    0
      doc/en/html/search/all_1.html
  39. 4
    0
      doc/en/html/search/all_1.js
  40. 26
    0
      doc/en/html/search/all_2.html
  41. 12
    0
      doc/en/html/search/all_2.js
  42. 26
    0
      doc/en/html/search/all_3.html
  43. 6
    0
      doc/en/html/search/all_3.js
  44. 26
    0
      doc/en/html/search/all_4.html
  45. 4
    0
      doc/en/html/search/all_4.js
  46. 26
    0
      doc/en/html/search/classes_0.html
  47. 4
    0
      doc/en/html/search/classes_0.js
  48. BIN
      doc/en/html/search/close.png
  49. 26
    0
      doc/en/html/search/functions_0.html
  50. 4
    0
      doc/en/html/search/functions_0.js
  51. 26
    0
      doc/en/html/search/functions_1.html
  52. 4
    0
      doc/en/html/search/functions_1.js
  53. 26
    0
      doc/en/html/search/functions_2.html
  54. 11
    0
      doc/en/html/search/functions_2.js
  55. 26
    0
      doc/en/html/search/functions_3.html
  56. 4
    0
      doc/en/html/search/functions_3.js
  57. 26
    0
      doc/en/html/search/functions_4.html
  58. 4
    0
      doc/en/html/search/functions_4.js
  59. BIN
      doc/en/html/search/mag_sel.png
  60. 12
    0
      doc/en/html/search/nomatches.html
  61. 271
    0
      doc/en/html/search/search.css
  62. 791
    0
      doc/en/html/search/search.js
  63. BIN
      doc/en/html/search/search_l.png
  64. BIN
      doc/en/html/search/search_m.png
  65. BIN
      doc/en/html/search/search_r.png
  66. 12
    0
      doc/en/html/search/searchdata.js
  67. 26
    0
      doc/en/html/search/variables_0.html
  68. 4
    0
      doc/en/html/search/variables_0.js
  69. 26
    0
      doc/en/html/search/variables_1.html
  70. 5
    0
      doc/en/html/search/variables_1.js
  71. BIN
      doc/en/html/splitbar.png
  72. BIN
      doc/en/html/sync_off.png
  73. BIN
      doc/en/html/sync_on.png
  74. BIN
      doc/en/html/tab_a.png
  75. BIN
      doc/en/html/tab_b.png
  76. BIN
      doc/en/html/tab_h.png
  77. BIN
      doc/en/html/tab_s.png
  78. 60
    0
      doc/en/html/tabs.css
  79. 21
    0
      doc/en/latex/Makefile
  80. 4
    0
      doc/en/latex/annotated.tex
  81. 197
    0
      doc/en/latex/class_image_scrambler.eps
  82. BIN
      doc/en/latex/class_image_scrambler.pdf
  83. 150
    0
      doc/en/latex/class_image_scrambler.tex
  84. 480
    0
      doc/en/latex/doxygen.sty
  85. 6
    0
      doc/en/latex/hierarchy.tex
  86. 151
    0
      doc/en/latex/refman.tex
  87. 165
    0
      doc/es/html/_image_scrambler_8h_source.html
  88. 102
    0
      doc/es/html/annotated.html
  89. BIN
      doc/es/html/arrowdown.png
  90. BIN
      doc/es/html/arrowright.png
  91. BIN
      doc/es/html/bc_s.png
  92. BIN
      doc/es/html/bdwn.png
  93. 116
    0
      doc/es/html/class_image_scrambler-members.html
  94. 379
    0
      doc/es/html/class_image_scrambler.html
  95. BIN
      doc/es/html/class_image_scrambler.png
  96. 106
    0
      doc/es/html/classes.html
  97. BIN
      doc/es/html/closed.png
  98. BIN
      doc/es/html/doc.png
  99. 1449
    0
      doc/es/html/doxygen.css
  100. 0
    0
      doc/es/html/doxygen.png

BIN
.DS_Store View File


+ 96
- 0
Filter.cpp View File

@@ -0,0 +1,96 @@
1
+#include "ImageScrambler.h"
2
+#include <qdebug.h>
3
+
4
+
5
+// Given an image and two rectangles defined by the x,y locations of their
6
+// upperleft pixels and their height, width, swaps the pixels in those rectangles.
7
+// For example, for an image I with height and width of 100. The following invocation
8
+// swaps the top and bottom halves of the image:
9
+// cropSwap(I, 0, 0, 0, 50, 100, 50)
10
+
11
+void ImageScrambler::cropSwap(QImage &img, int x0, int y0, int x1, int y1, int width, int height ) {
12
+    QRgb p;
13
+
14
+    // For each of the pixels of the square with starting coord (x0,y0)
15
+    // Por cada pixel del cuadrado con coordenada inicial (x0,y0)
16
+    for (int dx = 0; dx < width; dx++) {
17
+        for (int dy = 0; dy < height; dy++) {
18
+            // extract the pixel
19
+            // extrae el pixel
20
+            p = img.pixel(x0 + dx , y0 + dy);
21
+            // swap the pixel with the square starting coord (x1,y1)
22
+            // intercabia el pixel con el cuadrado con coodenada inicial (x1,y1)
23
+            img.setPixel(x0 + dx , y0 + dy, img.pixel(x1 + dx , y1 + dy));
24
+            img.setPixel(x1 + dx , y1 + dy, p);
25
+        }
26
+    }
27
+}
28
+
29
+// This is the function you will code. Given the image, the level of recursion, 
30
+// the x, y, width and height of the topleft corner of the rectangle that you'd 
31
+// like to scramble, this function scrambles that part of the image.
32
+// For example, for an image of height and width 100, to scramble the whole image
33
+// two levels, you would invoke:
34
+// ScrambleFilter(I, 2, 0, 0, 100, 100); 
35
+
36
+QImage ImageScrambler::ScrambleFilter(QImage image, int level, int sx, int sy, int width, int height){
37
+
38
+    // Compute half the width and half the height to obtain the sub images
39
+    // Computa la mitad del ancho y la mitad de la altura para obtener la sub imagen.
40
+    int w = width  / 2;
41
+    int h = height / 2;
42
+
43
+    // Condition to stop the recursion
44
+    // Condicion para parar la recursion
45
+    if ( level > 0 ) {
46
+
47
+        if ( level % 2 ) {
48
+
49
+            // Assume an image with the following quadrants:
50
+            //     1  2
51
+            //     3  4
52
+            // When N is odd, we will divide the image in
53
+            // four quadrants and swap quadrants 1 <-> 4, and 3 <-> 2.
54
+            //     1  2     =>   4 3
55
+            //     3  4          2 1
56
+            //
57
+            // Asume una imagen con los siguentes cuadrantes:
58
+            //     1  2
59
+            //     3  4
60
+            // Cuando N es impar, divide la imagen en
61
+            // cuatro cuadrantes e intercambia los cuadrantes 1 <-> 4, and 3 <-> 2.
62
+            //     1  2     =>   4 3
63
+            //     3  4          2 1
64
+            cropSwap(image, sx,      sy, sx + w, sy + h, w, h);
65
+            cropSwap(image, sx + w , sy, sx    , sy + h, w, h);
66
+        }
67
+        else
68
+            // Assume an image with the following quadrants:
69
+            //     1  2
70
+            // When N is even, we will divide the image in
71
+            // two quadrants and swap quadrants 1 <-> 2.
72
+            //     1  2     =>   2  1
73
+            // Note that in this case the given width is half the width
74
+            // and the full height is given to the cropSwap function.
75
+            //
76
+            // Asume una imagen con los siguientes cuadrantes:
77
+            //     1  2
78
+            // Cuando N es par, dividiremos la imagen en
79
+            // dos cuadrantes e intercambiar cuadrantes 1 <-> 2.
80
+            //     1  2     =>   2  1
81
+            // Note que en este caso el ancho dado es la mitad del ancho
82
+            // y la altura dada es la altura completa en la funcion cropSwap.
83
+            cropSwap(image, sx,      sy, sx + w, sy,     w, height);
84
+
85
+        // Call the function recursively dividing the imagen on 4 quadrants
86
+        // Invoca la funcion recursivamente dividiendo la imagen en 4 cuadrantes
87
+
88
+        image = ScrambleFilter(image, level-1, sx,     sy    , w, h); //upper left / arriba izq
89
+        image = ScrambleFilter(image, level-1, sx + w, sy    , w, h); //upper right / arriba derecha
90
+        image = ScrambleFilter(image, level-1, sx    , sy + h, w, h); //lower left / abajo izq
91
+        image = ScrambleFilter(image, level-1, sx + w, sy + h, w, h); //lower right / abajo derecha
92
+    }
93
+    return image;
94
+}
95
+
96
+

+ 144
- 0
ImageScrambler.cpp View File

@@ -0,0 +1,144 @@
1
+#include "ImageScrambler.h"
2
+#include "ui_ImageScrambler.h"
3
+
4
+
5
+/// \fn ImageScrambler::ImageScrambler(QWidget *parent)
6
+/// \~English
7
+/// \brief Constructor
8
+/// \~Spanish
9
+/// \brief Constructor
10
+ImageScrambler::ImageScrambler(QWidget *parent) :
11
+    QMainWindow(parent),
12
+    ui(new Ui::ImageScrambler)
13
+{
14
+    ui->setupUi(this);
15
+
16
+    scrambleDepth = 1 ;
17
+
18
+    // KEYBOARD SHORTCUTS
19
+    // ATAJOS DEL KEYBOARD
20
+
21
+    // Loads a image with cmd + o
22
+    // Carga una imagen con cmd + o
23
+    new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_O), this, SLOT(on_btnLoadNewImage_clicked()));
24
+    // Saves a image with cmd + s
25
+    // Guarda una imagen con cmd + s
26
+    new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_S), this, SLOT(on_btnSave_clicked()));
27
+    // Closes window with cmd + w
28
+    // Cierra la ventana con cmd + w
29
+    new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this, SLOT(close()));
30
+    // Scramble a image with cmd + e
31
+    // Revuelve una imagen con cmd + e
32
+    new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_E), this, SLOT(on_btnScrambleImage_clicked()));
33
+    // Restore the image with cmd + d
34
+    // Restaura la imagen con cmd + d
35
+    new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_D), this, SLOT(on_btnDescrambleImage_clicked()));
36
+    ui->btnDescrambleImage->setEnabled(false);
37
+
38
+}
39
+
40
+/// \fn ImageScrambler::~ImageScrambler(QWidget *parent)
41
+/// \~English
42
+/// \brief Destructor
43
+/// \~Spanish
44
+/// \brief Destructor
45
+ImageScrambler::~ImageScrambler()
46
+{
47
+    delete ui;
48
+}
49
+
50
+/// \fn void ImageScrambler::on_btnLoadNewImage_clicked()
51
+/// \~English
52
+/// \brief Function display a file browsing window to load an image into the GUI
53
+/// \~Spanish
54
+/// \brief Funcion que despliega una ventana de busqueda de archivos para cargar
55
+/// una imagen en el GUI.
56
+void ImageScrambler::on_btnLoadNewImage_clicked(){
57
+    QString fname = QFileDialog::getOpenFileName(this, tr("Choose an image"), QDir::homePath());
58
+        if (!fname.isEmpty()){
59
+            QImage image(fname);
60
+            if (image.isNull())
61
+                QMessageBox::information(this, tr("Choose an image"),tr("Cannot load %1.").arg(fname));
62
+            originalImage=image;
63
+            scrambledImage=image;
64
+            ui->lblOriginalImage->setPixmap(QPixmap::fromImage(originalImage));
65
+            ui->lblScrambleImage->setPixmap(QPixmap::fromImage(scrambledImage));
66
+            ui->btnDescrambleImage->setEnabled(false);
67
+        }
68
+}
69
+
70
+/// \fn void ImageScrambler::on_btnSave_clicked()
71
+/// \~English
72
+/// \brief Function that saves the scrambled image in the computer.
73
+/// \~Spanish
74
+/// \brief Funcion que guarda la imagen revuelta en la computadora.
75
+void ImageScrambler::on_btnSave_clicked(){
76
+    QPixmap out = QPixmap::grabWidget(this,361,10,481,481);
77
+    QString fname = QFileDialog::getSaveFileName(this, tr("Save Edited Image"), (""), tr("PNG (*.png)" ));
78
+    scrambledImage.save(fname, "PNG");
79
+}
80
+
81
+
82
+/// \fn void ImageScrambler::on_btnScrambleImage_clicked()
83
+/// \~English
84
+/// \brief Function invokes the ScrambleFilter function to scramble the image and
85
+/// load it in the GUI.
86
+/// \~Spanish
87
+/// \brief Funcion que invoca la funcion ScrambleFilter para revolver la imagen y
88
+/// cargarla en el GUI.
89
+void ImageScrambler::on_btnScrambleImage_clicked(){
90
+
91
+    //Call Scramble to scramble the image
92
+    scrambleDepth = ui->scrambleDepth->value() ;
93
+    scrambledImage = ScrambleFilter(originalImage, scrambleDepth, 0, 0, originalImage.width(),originalImage.height());
94
+    ui->lblScrambleImage->setPixmap(QPixmap::fromImage(scrambledImage));
95
+    ui->btnDescrambleImage->setEnabled(true);
96
+
97
+}
98
+
99
+/// \fn void ImageScrambler::on_btnDescrambleImage_clicked()
100
+/// \~English
101
+/// \brief Function that restore the scrambled image to the original image.
102
+/// \~Spanish
103
+/// \brief Funcion que restaura la imagen revuelta a la imagen original.
104
+void ImageScrambler::on_btnDescrambleImage_clicked(){
105
+    scrambledImage = originalImage;
106
+    ui->lblScrambleImage->setPixmap(QPixmap::fromImage(scrambledImage));
107
+}
108
+
109
+/// \fn void ImageScrambler::on_actionLoad_Image_triggered()
110
+/// \~English
111
+/// \brief Function that invokes the on_btnLoadNewImage_clicked() function.
112
+/// \~Spanish
113
+/// \brief Funcion que invoca la funcion on_btnLoadNewImage_clicked().
114
+void ImageScrambler::on_actionLoad_Image_triggered(){
115
+    on_btnLoadNewImage_clicked();
116
+}
117
+
118
+/// \fn void ImageScrambler::on_actionSave_Image_triggered()
119
+/// \~English
120
+/// \brief Function that invokes the on_btnSave_clicked() function.
121
+/// \~Spanish
122
+/// \brief Funcion que invoca la funcion on_btnSave_clicked().
123
+void ImageScrambler::on_actionSave_Image_triggered(){
124
+    on_btnSave_clicked();
125
+}
126
+
127
+/// \fn void ImageScrambler::on_actionScramble_Image_triggered()
128
+/// \~English
129
+/// \brief Function that invokes the on_btnScrambleImage_clicked() function.
130
+/// \~Spanish
131
+/// \brief Funcion que invoca la funcion on_btnScrambleImage_clicked().
132
+void ImageScrambler::on_actionScramble_Image_triggered(){
133
+    on_btnScrambleImage_clicked();
134
+}
135
+
136
+/// \fn void ImageScrambler::on_actionDescramble_Image_triggered()
137
+/// \~English
138
+/// \brief Function that invokes the on_btnDescrambleImage_clicked() function.
139
+/// \~Spanish
140
+/// \brief Funcion que invoca la funcion on_btnDescrambleImage_clicked().
141
+void ImageScrambler::on_actionDescramble_Image_triggered(){
142
+    on_btnDescrambleImage_clicked();
143
+}
144
+

+ 157
- 0
ImageScrambler.h View File

@@ -0,0 +1,157 @@
1
+#ifndef IMAGESCRAMBLER_H
2
+#define IMAGESCRAMBLER_H
3
+
4
+#include <QMainWindow>
5
+#include <QFileDialog>
6
+#include <QDir>
7
+#include <QMessageBox>
8
+#include <QShortcut>
9
+#include <QImage>
10
+
11
+namespace Ui {
12
+    class ImageScrambler;
13
+}
14
+
15
+class ImageScrambler : public QMainWindow
16
+{
17
+    Q_OBJECT
18
+
19
+public:
20
+
21
+    /// \fn ImageScrambler::ImageScrambler(QWidget *parent)
22
+    /// \~English
23
+    /// \brief Constructor
24
+    /// \~Spanish
25
+    /// \brief Constructor
26
+    explicit ImageScrambler(QWidget *parent = 0);
27
+
28
+    /// \fn ImageScrambler::~ImageScrambler(QWidget *parent)
29
+    /// \~English
30
+    /// \brief Destructor
31
+    /// \~Spanish
32
+    /// \brief Destructor
33
+    ~ImageScrambler();
34
+
35
+    /// \fn void ImageScrambler::cropSwap(QImage &img, int x0, int y0, int x1, int y1, int width, int height )
36
+    /// \~English
37
+    /// \brief Funtion that crop two squares of equal size of an image or sub image and swaps them.
38
+    /// The funtion receives two coords (x0, y0) and (x1, y1)  and a width and a height. Then swaps pixel
39
+    /// by pixel the square formed from the top left coordinate (x0, y0) to the bottom right coordinate (x0+width, y0+height)
40
+    /// with the square formed from the top left coordinate (x1, y1) to the bottom right (x1+width, y1+height).
41
+    /// \param image Reference to the image to swap the squares.
42
+    /// \param x0    The top left x coordinate of the first square in the image.
43
+    /// \param y0    The top left y coordinate of the first square in the image.
44
+    /// \param x1    The top left x coordinate of the second square in the image.
45
+    /// \param y1    The top left y coordinate of the second square in the image.
46
+    /// \param width Width of the squares
47
+    /// \param height Height of the squares
48
+    /// \~Spanish
49
+    /// \brief Function que corta dos cuadrados del mismo tamano de una imagen o sub imagen y luego los intercambia.
50
+    /// La funcion recibe dos coordenadas (x0,y0) y (x1,y1) y un ancho y un alto.  Entonces intercambia
51
+    /// pixel por pixel el cuadrado que se forma desde la coordenada en el tope a la izquierda (x0,y0) a la coordenada abajo derecha (x0+ancho, y0+alto)
52
+    /// con el cuadrado formado desde la coordenada en el tope izquierda (x1, y1) hasta la coordenada abajo derecha (x1+width, y1+height).
53
+    /// \param image Referencia a la imagen a la que se le van a intercambiar los cuadros.
54
+    /// \param x0    La coordenada arriba izquierda x del primer cuadrado en la imagen.
55
+    /// \param y0    La coordenada arriba izquierda y del primer cuadrado en la imagen.
56
+    /// \param x1    La coordenada arriba izquierda x del segundo cuadrado en la imagen.
57
+    /// \param y1    La coordenada arriba izquierda y del segundo cuadrado en la imagen.
58
+    /// \param width ancho de los cuadrados
59
+    /// \param height altura de los cuadrados
60
+    void cropSwap(QImage &img, int x0, int y0, int x1, int y1, int width, int height );
61
+
62
+    /// \fn QImage ImageScrambler::ScrambleFilter(QImage image, int N, int sw, int sh, int width, int height)
63
+    /// \~English
64
+    /// \brief Funtion that recursively scrambles an images by dividing the image in squares (sub images)
65
+    /// and then swapping them.  The first step the program does is divide the image in two or four squares
66
+    /// and swap the squares, the resulting image is divided in four squares and then the same steps are applied
67
+    /// recursively to each of the four squares.
68
+    /// \param image The image to scramble
69
+    /// \param level The depth of the recursion. The image will be scrambled in 4^n squares.
70
+    /// \param sx Starting left top x coordinate of the image or sub image to divide
71
+    /// \param sy Starting left top y coodinate of the image or sub image to divide
72
+    /// \param width Width of the received image
73
+    /// \param height Height of the received image
74
+    /// \return the scrambled image
75
+    /// \~Spanish
76
+    /// \brief Funcion que recursivamente revuelve una imagen dividiendola en cuadrados (sub imagenes)
77
+    /// y luego intercambiandolas.  El primer paso que el programa hace es dividir la imagen en two o cuatro cuadrados
78
+    /// e intercambia los cuadrados, el resultado de la imagen se divide en cuatros cuadros y cada uno de los cuadros
79
+    /// se le aplican los mismos pasos recursivamente.
80
+    /// \param image The image a revolver
81
+    /// \param level La profundidad de la recursion. La imagen se revolvera en 4^N cuadrados.
82
+    /// \param sx La coordenada arriba izquierda x inicial de la imagen o sub imagen a dividir.
83
+    /// \param sy La coordenada arriba izquierda y inicial de la imagen o sub imagen a dividir.
84
+    /// \param width Ancho de la imagen recibida
85
+    /// \param height Altura de la imagen recibida
86
+    /// \return la imagen revuelta
87
+    QImage ScrambleFilter(QImage image, int level, int sx, int sy, int width, int height);
88
+
89
+private slots:
90
+
91
+    /// \fn void ImageScrambler::on_btnLoadNewImage_clicked()
92
+    /// \~English
93
+    /// \brief Function display a file browsing window to load an image into the GUI
94
+    /// \~Spanish
95
+    /// \brief Funcion que despliega una ventana de busqueda de archivos para cargar
96
+    /// una imagen en el GUI.
97
+    void on_btnLoadNewImage_clicked();
98
+
99
+    /// \fn void ImageScrambler::on_btnSave_clicked()
100
+    /// \~English
101
+    /// \brief Function that saves the scrambled image in the computer.
102
+    /// \~Spanish
103
+    /// \brief Funcion que guarda la imagen revuelta en la computadora.
104
+    void on_btnSave_clicked();
105
+
106
+    /// \fn void ImageScrambler::on_btnScrambleImage_clicked()
107
+    /// \~English
108
+    /// \brief Function invokes the ScrambleFilter function to scramble the image and
109
+    /// load it in the GUI.
110
+    /// \~Spanish
111
+    /// \brief Funcion que invoca la funcion ScrambleFilter para revolver la imagen y
112
+    /// cargarla en el GUI.
113
+    void on_btnScrambleImage_clicked();
114
+
115
+    /// \fn void ImageScrambler::on_btnDescrambleImage_clicked()
116
+    /// \~English
117
+    /// \brief Function that restore the scrambled image to the original image.
118
+    /// \~Spanish
119
+    /// \brief Funcion que restaura la imagen revuelta a la imagen original.
120
+    void on_btnDescrambleImage_clicked();
121
+
122
+    /// \fn void ImageScrambler::on_actionLoad_Image_triggered()
123
+    /// \~English
124
+    /// \brief Function that invokes the on_btnLoadNewImage_clicked() function.
125
+    /// \~Spanish
126
+    /// \brief Funcion que invoca la funcion on_btnLoadNewImage_clicked().
127
+    void on_actionLoad_Image_triggered();
128
+
129
+    /// \fn void ImageScrambler::on_actionSave_Image_triggered()
130
+    /// \~English
131
+    /// \brief Function that invokes the on_btnSave_clicked() function.
132
+    /// \~Spanish
133
+    /// \brief Funcion que invoca la funcion on_btnSave_clicked().
134
+    void on_actionSave_Image_triggered();
135
+
136
+    /// \fn void ImageScrambler::on_actionScramble_Image_triggered()
137
+    /// \~English
138
+    /// \brief Function that invokes the on_btnScrambleImage_clicked() function.
139
+    /// \~Spanish
140
+    /// \brief Funcion que invoca la funcion on_btnScrambleImage_clicked().
141
+    void on_actionScramble_Image_triggered();
142
+
143
+    /// \fn void ImageScrambler::on_actionDescramble_Image_triggered()
144
+    /// \~English
145
+    /// \brief Function that invokes the on_btnDescrambleImage_clicked() function.
146
+    /// \~Spanish
147
+    /// \brief Funcion que invoca la funcion on_btnDescrambleImage_clicked().
148
+    void on_actionDescramble_Image_triggered();
149
+
150
+private:
151
+    Ui::ImageScrambler *ui;
152
+    QImage originalImage;  //This will hold the original image.
153
+    QImage scrambledImage; //This will hold the encrypted image.
154
+    int scrambleDepth ;
155
+};
156
+
157
+#endif // MAINWINDOW_H

+ 28
- 0
ImageScrambler.pro View File

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

+ 352
- 0
ImageScrambler.ui View File

@@ -0,0 +1,352 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<ui version="4.0">
3
+ <class>ImageScrambler</class>
4
+ <widget class="QMainWindow" name="ImageScrambler">
5
+  <property name="geometry">
6
+   <rect>
7
+    <x>0</x>
8
+    <y>0</y>
9
+    <width>1023</width>
10
+    <height>583</height>
11
+   </rect>
12
+  </property>
13
+  <property name="minimumSize">
14
+   <size>
15
+    <width>500</width>
16
+    <height>500</height>
17
+   </size>
18
+  </property>
19
+  <property name="maximumSize">
20
+   <size>
21
+    <width>1100</width>
22
+    <height>1000</height>
23
+   </size>
24
+  </property>
25
+  <property name="windowTitle">
26
+   <string>Image Scrambler</string>
27
+  </property>
28
+  <widget class="QWidget" name="centralWidget">
29
+   <widget class="QWidget" name="layoutWidget">
30
+    <property name="geometry">
31
+     <rect>
32
+      <x>241</x>
33
+      <y>104</y>
34
+      <width>402</width>
35
+      <height>431</height>
36
+     </rect>
37
+    </property>
38
+    <layout class="QVBoxLayout" name="verticalLayout">
39
+     <item>
40
+      <widget class="QLabel" name="label">
41
+       <property name="text">
42
+        <string>Original Image:</string>
43
+       </property>
44
+       <property name="alignment">
45
+        <set>Qt::AlignCenter</set>
46
+       </property>
47
+      </widget>
48
+     </item>
49
+     <item>
50
+      <widget class="QLabel" name="lblOriginalImage">
51
+       <property name="minimumSize">
52
+        <size>
53
+         <width>400</width>
54
+         <height>400</height>
55
+        </size>
56
+       </property>
57
+       <property name="maximumSize">
58
+        <size>
59
+         <width>400</width>
60
+         <height>400</height>
61
+        </size>
62
+       </property>
63
+       <property name="frameShape">
64
+        <enum>QFrame::Box</enum>
65
+       </property>
66
+       <property name="frameShadow">
67
+        <enum>QFrame::Sunken</enum>
68
+       </property>
69
+       <property name="text">
70
+        <string/>
71
+       </property>
72
+       <property name="scaledContents">
73
+        <bool>true</bool>
74
+       </property>
75
+      </widget>
76
+     </item>
77
+    </layout>
78
+   </widget>
79
+   <widget class="QWidget" name="layoutWidget1">
80
+    <property name="geometry">
81
+     <rect>
82
+      <x>610</x>
83
+      <y>104</y>
84
+      <width>402</width>
85
+      <height>431</height>
86
+     </rect>
87
+    </property>
88
+    <layout class="QVBoxLayout" name="verticalLayout_2">
89
+     <item>
90
+      <widget class="QLabel" name="label_2">
91
+       <property name="text">
92
+        <string>Encrypted Image:</string>
93
+       </property>
94
+       <property name="alignment">
95
+        <set>Qt::AlignCenter</set>
96
+       </property>
97
+      </widget>
98
+     </item>
99
+     <item>
100
+      <widget class="QLabel" name="lblScrambleImage">
101
+       <property name="minimumSize">
102
+        <size>
103
+         <width>400</width>
104
+         <height>400</height>
105
+        </size>
106
+       </property>
107
+       <property name="maximumSize">
108
+        <size>
109
+         <width>400</width>
110
+         <height>400</height>
111
+        </size>
112
+       </property>
113
+       <property name="frameShape">
114
+        <enum>QFrame::Box</enum>
115
+       </property>
116
+       <property name="frameShadow">
117
+        <enum>QFrame::Sunken</enum>
118
+       </property>
119
+       <property name="text">
120
+        <string/>
121
+       </property>
122
+       <property name="scaledContents">
123
+        <bool>true</bool>
124
+       </property>
125
+      </widget>
126
+     </item>
127
+    </layout>
128
+   </widget>
129
+   <widget class="QPushButton" name="btnLoadNewImage">
130
+    <property name="geometry">
131
+     <rect>
132
+      <x>30</x>
133
+      <y>100</y>
134
+      <width>184</width>
135
+      <height>41</height>
136
+     </rect>
137
+    </property>
138
+    <property name="styleSheet">
139
+     <string notr="true"/>
140
+    </property>
141
+    <property name="text">
142
+     <string>Load New Image</string>
143
+    </property>
144
+   </widget>
145
+   <widget class="QLabel" name="label_4">
146
+    <property name="geometry">
147
+     <rect>
148
+      <x>30</x>
149
+      <y>149</y>
150
+      <width>172</width>
151
+      <height>18</height>
152
+     </rect>
153
+    </property>
154
+    <property name="text">
155
+     <string>Scramble depth:</string>
156
+    </property>
157
+   </widget>
158
+   <widget class="QSpinBox" name="scrambleDepth">
159
+    <property name="geometry">
160
+     <rect>
161
+      <x>30</x>
162
+      <y>179</y>
163
+      <width>181</width>
164
+      <height>31</height>
165
+     </rect>
166
+    </property>
167
+    <property name="minimum">
168
+     <number>1</number>
169
+    </property>
170
+    <property name="maximum">
171
+     <number>10</number>
172
+    </property>
173
+   </widget>
174
+   <widget class="QFrame" name="LogoFrame">
175
+    <property name="geometry">
176
+     <rect>
177
+      <x>20</x>
178
+      <y>480</y>
179
+      <width>201</width>
180
+      <height>61</height>
181
+     </rect>
182
+    </property>
183
+    <property name="styleSheet">
184
+     <string notr="true"/>
185
+    </property>
186
+    <property name="frameShape">
187
+     <enum>QFrame::StyledPanel</enum>
188
+    </property>
189
+    <property name="frameShadow">
190
+     <enum>QFrame::Raised</enum>
191
+    </property>
192
+   </widget>
193
+   <widget class="QPushButton" name="btnSave">
194
+    <property name="geometry">
195
+     <rect>
196
+      <x>30</x>
197
+      <y>329</y>
198
+      <width>185</width>
199
+      <height>41</height>
200
+     </rect>
201
+    </property>
202
+    <property name="styleSheet">
203
+     <string notr="true"/>
204
+    </property>
205
+    <property name="text">
206
+     <string>Save Scrambled  Image</string>
207
+    </property>
208
+   </widget>
209
+   <widget class="QPushButton" name="btnDescrambleImage">
210
+    <property name="geometry">
211
+     <rect>
212
+      <x>30</x>
213
+      <y>279</y>
214
+      <width>185</width>
215
+      <height>41</height>
216
+     </rect>
217
+    </property>
218
+    <property name="styleSheet">
219
+     <string notr="true"/>
220
+    </property>
221
+    <property name="text">
222
+     <string>Descramble Image</string>
223
+    </property>
224
+   </widget>
225
+   <widget class="QPushButton" name="btnScrambleImage">
226
+    <property name="geometry">
227
+     <rect>
228
+      <x>30</x>
229
+      <y>225</y>
230
+      <width>185</width>
231
+      <height>41</height>
232
+     </rect>
233
+    </property>
234
+    <property name="styleSheet">
235
+     <string notr="true"/>
236
+    </property>
237
+    <property name="text">
238
+     <string>Scramble Image</string>
239
+    </property>
240
+   </widget>
241
+   <widget class="QLabel" name="lblFinalImageTitle_3">
242
+    <property name="geometry">
243
+     <rect>
244
+      <x>20</x>
245
+      <y>380</y>
246
+      <width>201</width>
247
+      <height>91</height>
248
+     </rect>
249
+    </property>
250
+    <property name="text">
251
+     <string>Program Shortcuts: 
252
+Load Images (⌘O) 
253
+Scramble Images (⌘E) 
254
+Descramble Image (⌘D) 
255
+Save Scrambled Image(⌘S)</string>
256
+    </property>
257
+    <property name="alignment">
258
+     <set>Qt::AlignCenter</set>
259
+    </property>
260
+   </widget>
261
+   <widget class="QFrame" name="Banner">
262
+    <property name="geometry">
263
+     <rect>
264
+      <x>-10</x>
265
+      <y>-10</y>
266
+      <width>1061</width>
267
+      <height>91</height>
268
+     </rect>
269
+    </property>
270
+    <property name="styleSheet">
271
+     <string notr="true"/>
272
+    </property>
273
+    <property name="frameShape">
274
+     <enum>QFrame::StyledPanel</enum>
275
+    </property>
276
+    <property name="frameShadow">
277
+     <enum>QFrame::Raised</enum>
278
+    </property>
279
+    <widget class="QLabel" name="HeaderLabel">
280
+     <property name="geometry">
281
+      <rect>
282
+       <x>370</x>
283
+       <y>20</y>
284
+       <width>321</width>
285
+       <height>61</height>
286
+      </rect>
287
+     </property>
288
+     <property name="font">
289
+      <font>
290
+       <pointsize>25</pointsize>
291
+      </font>
292
+     </property>
293
+     <property name="styleSheet">
294
+      <string notr="true"/>
295
+     </property>
296
+     <property name="text">
297
+      <string>Image Scrambler</string>
298
+     </property>
299
+    </widget>
300
+   </widget>
301
+  </widget>
302
+  <widget class="QMenuBar" name="menuBar">
303
+   <property name="geometry">
304
+    <rect>
305
+     <x>0</x>
306
+     <y>0</y>
307
+     <width>1023</width>
308
+     <height>22</height>
309
+    </rect>
310
+   </property>
311
+   <widget class="QMenu" name="menuFile">
312
+    <property name="title">
313
+     <string>File</string>
314
+    </property>
315
+    <addaction name="actionLoad_Image"/>
316
+    <addaction name="actionSave_Image"/>
317
+   </widget>
318
+   <widget class="QMenu" name="menuEdit">
319
+    <property name="title">
320
+     <string>Edit</string>
321
+    </property>
322
+    <addaction name="actionScramble_Image"/>
323
+    <addaction name="actionDescramble_Image"/>
324
+   </widget>
325
+   <addaction name="menuFile"/>
326
+   <addaction name="menuEdit"/>
327
+  </widget>
328
+  <action name="actionLoad_Image">
329
+   <property name="text">
330
+    <string>Load Image (⌘O)</string>
331
+   </property>
332
+  </action>
333
+  <action name="actionSave_Image">
334
+   <property name="text">
335
+    <string>Save Image (⌘S)</string>
336
+   </property>
337
+  </action>
338
+  <action name="actionScramble_Image">
339
+   <property name="text">
340
+    <string>Encrypt Image (⌘E)</string>
341
+   </property>
342
+  </action>
343
+  <action name="actionDescramble_Image">
344
+   <property name="text">
345
+    <string>Decrypt Image (⌘D)</string>
346
+   </property>
347
+  </action>
348
+ </widget>
349
+ <layoutdefault spacing="6" margin="11"/>
350
+ <resources/>
351
+ <connections/>
352
+</ui>

+ 222
- 0
README.md View File

@@ -0,0 +1,222 @@
1
+[English](#markdown-header-recursion-image-scrambler) | [Español](#markdown-header-recursion-revolvedor-de-imagenes)
2
+
3
+#Recursión - Revolvedor de imágenes
4
+
5
+![main1-small.png](images/main1-small.png)
6
+![main2-small.png](images/main2-small.png)
7
+![main3-small.png](images/main3-small.png)
8
+
9
+
10
+La recursión es una técnica muy utilizada en programación. Con esta técnica se resuelven problemas resolviendo un problema similar pero para casos más pequeños. Podemos construir conjuntos de objetos o procesos utilizando *reglas recursivas* y *valores iniciales*. Las *funciones recursivas* son funciones que se auto-invocan, utilizando cada vez conjuntos o elementos más pequeños,  hasta llegar a un punto en donde se utiliza la condición inicial en lugar de auto-invocarse. En esta experiencia de laboratorio practicarás la definición e implementación de funciones recursivas para revolver una imagen y hacerla incomprensible.
11
+
12
+## Objetivos:
13
+
14
+1. Definir e implementar funciones recursivas.
15
+2. Practicar el procesamiento de imágenes.
16
+3. Practicar el uso de estructuras de control y repetición.
17
+
18
+
19
+## Pre-Lab:
20
+
21
+Antes de llegar al laboratorio debes haber:
22
+
23
+1. Repasado los conceptos relacionados a funciones recursivas.
24
+
25
+2. Haber estudiado los conceptos e instrucciones para la sesión de laboratorio.
26
+
27
+3. Haber tomado el quiz Pre-Lab que se encuentra en Moodle.
28
+
29
+
30
+---
31
+
32
+---
33
+
34
+
35
+## Revolver imágenes digitalmente
36
+
37
+Al revolver las imágenes digitalmente reordenamos los píxeles de las imágenes para romper la relación entre píxeles adyacentes y así hacer que la imagen original sea incomprensible. Esta técnica se usa mucho para cifrar imágenes y esconder datos. [1]
38
+
39
+---
40
+
41
+![figure1.png](images/figure1.png)
42
+
43
+**Figura 1.** La imagen de la izquierda fue cifrada utilizando la técnica de revolver la imagen y se obtuvo la imagen de la derecha. Tomada de [2].
44
+
45
+---
46
+
47
+Existen muchos métodos que han sido propuestos para revolver imágenes. En esta experiencia de laboratorio utilizarás un método muy simple que tiene una implementación natural usando funciones recursivas.
48
+
49
+### ¡Revuélvela!
50
+
51
+El método que utilizarás para revolver las imágenes funciona intercambiando  rectángulos de una imagen un cierto número de veces, según lo establezca el *nivel*. La Figura 2 ilustra  un  revoltillo de *nivel 1* de una imagen: se intercambian los cuadrantes diagonales. Observa también la Figura 6.
52
+
53
+---
54
+
55
+![figure2.png](images/figure2.png)
56
+
57
+**Figura 2.** Revoltillo de nivel 1: (a) es la imagen original dividida en cuadrantes, (b) es la imagen luego de revolverla el primer nivel intercambiando cuadrantes diagonales.
58
+
59
+---
60
+
61
+El revoltillo del siguiente nivel, *nivel 2*, primero intercambia las mitades izquierda y derecha de la imagen. Luego le aplica un revoltillo de *nivel 1* a cada cuadrante. Observa que el revoltillo de nivel 1 es aplicado a cada uno de los cuatro cuadrantes de la imagen original.
62
+
63
+---
64
+
65
+![figure3.png](images/figure3.png)
66
+
67
+**Figura 3.** Revoltillo de nivel 2: (a) es la imagen original, (b) es la imagen luego de intercambiar las mitades izquierda y derecha, (c) es la imagen luego de aplicar revoltillo de nivel 1 a cada cuadrante.
68
+
69
+---
70
+
71
+**Pregunta:**  ¿Cuál de las figuras (a), (b), (c), (d) representa el resultado de hacerle un revoltillo de *nivel 2* al siguiente dibujo de un pingüino?
72
+
73
+---
74
+
75
+![figure4.png](images/figure4.png)
76
+
77
+
78
+![figure5.png](images/figure5.png)
79
+
80
+---
81
+
82
+Si continuamos el patrón, un revoltillo de *nivel 3* comienza intercambiando los cuadrantes diagonales. Luego le aplica un revoltillo de *nivel 2* a cada cuadrante: intercambia las mitades izquierda y derecha y aplica el revoltillo de *nivel 1* a cada nuevo cuadrante. La Figura 8 muestra el proceso de hacer un revoltillo de nivel 3.
83
+
84
+Para revolver una imagen hacemos este proceso para un cierto *nivel N*. ¿Cuál es el patrón? ¿Cómo comenzaría el revoltillo de *nivel 4*? ¿En cuántos cuadrantes habremos dividido la figura original al completar el revoltillo?
85
+
86
+El algoritmo para revolver que se acaba de describir es su propio inverso. Esto es, si le aplicas el mismo algoritmo a la imagen revuelta debes obtener la imagen original.
87
+
88
+
89
+
90
+Las siguientes figuras ilustran los intercambios que hacen los revoltillos de nivel 1, 2 y 3.
91
+
92
+---
93
+
94
+![figure6.png](images/figure6.png)
95
+
96
+**Figura 6.** Revoltillo de nivel 1: se intercambian los cuadrantes diagonales.
97
+
98
+---
99
+
100
+
101
+![figure7.png](images/figure7.png)
102
+
103
+**Figura 7.** Revoltillo de nivel 2: (a) se intercambian las mitades izquierda y derecha, (b)  se aplica un revoltillo de nivel 1 a cada cuadrante.
104
+
105
+
106
+---
107
+
108
+![figure8.png](images/figure8.png)
109
+
110
+**Figura 8.** Revoltillo de nivel 3: (a) se intercambian los cuadrantes diagonales para luego aplicar revoltillo de nivel 2 a cada cuadrante (b) se intercambian mitades izquierda y derecha en cada cuadrante, (c) se aplica un revoltillo de nivel 1 a cada nuevo cuadrante.
111
+
112
+
113
+---
114
+
115
+---
116
+
117
+
118
+## Funciones adicionales provistas en el proyecto
119
+
120
+El proyecto en el que trabajarás hoy contiene la función `cropSwap` que implementa la funcionalidad de intercambiar los píxeles contenidos en dos rectángulos congruentes dentro de una imagen. Su prototipo es:
121
+
122
+```
123
+void ImageScrambler::cropSwap(QImage &img, int x0, int y0, int x1, int y1, int width, int height );
124
+```
125
+
126
+Sus parámetros son:
127
+`img`: referencia a la imagen que se desea modificar (un objeto de clase `QImage`)
128
+`x0`, `y0`,`x0`, `y0`: coordenadas de las esquinas superior izquierda del los rectángulos.
129
+`width`, `height`: ancho y altura (en píxeles) de los rectángulos.
130
+
131
+Por ejemplo, si deseamos intercambiar los píxeles de la mitad superior e inferior de una imagen *P* de ancho 100 y alto 150, invocamos la función así:
132
+
133
+```
134
+cropSwap(P, 0, 0, 0, 75, 100, 75 );  
135
+```
136
+
137
+
138
+----
139
+
140
+----
141
+
142
+
143
+
144
+## Sesión de laboratorio:
145
+
146
+
147
+El proyecto `ImageScrambler` contiene el esqueleto de una aplicación para revolver y "des-revolver" imágenes. En la experiencia de laboratorio de hoy trabajarás con el archivo `Filter.cpp` para completar la aplicación.
148
+
149
+
150
+
151
+
152
+### Ejercicio 1: Pseudocódigo de la función para revolver
153
+
154
+Escribe el pseudocódigo para expresar el algoritmo de revolver descrito arriba como una función recursiva.
155
+
156
+
157
+
158
+### Ejercicio 2: Función recursiva para revolver la imagen
159
+
160
+#### Instrucciones
161
+
162
+1. Carga a QtCreator el proyecto `ImageScrambler`  haciendo doble "click" en el archivo `ImageScrambler.pro` en el directorio `Documents/eip/Recursion-ImageScrambler` de tu computadora. También puedes ir a `http://bitbucket.org/eip-uprrp/recursion-imagescrambler` para descargar la carpeta `Recursion-ImageScrambler` a tu computadora.
163
+
164
+2. El código que te proveemos crea la interfaz de la Figura 9.
165
+
166
+    ---
167
+
168
+    ![figure9.png](images/figure9.png)
169
+
170
+    **Figura 9.** Interfaz del proyecto `Image Scrambler`.
171
+
172
+    ---
173
+
174
+    El botón que dice `Scramble Image` se programó para que invoque una función llamada `ScrambleFilter`.
175
+
176
+3. Completa la función `ScrambleFilter` contenida en el archivo `Filter.cpp` de modo que implemente el algoritmo recursivo de revolver imágenes. La función tiene el siguiente formato:
177
+
178
+ ```cpp
179
+QImage ImageScrambler::ScrambleFilter(QImage image, int N, int sx, int sy, int width, int height);
180
+```
181
+
182
+4. Baja la imagen contenida en http://i.imgur.com/ZiJ61Gk.png para que valides la función que implementaste.
183
+
184
+---
185
+
186
+---
187
+
188
+
189
+## Entregas
190
+
191
+1. Utiliza "Entrega 1" en Moodle para entregar el archivo con el pseudocódigo de la función para revolver.
192
+
193
+2. Utiliza "Entrega 2" en Moodle para entregar el archivo `Filter.cpp` que contiene las funciones  que implementaste en esta experiencia de laboratorio. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
194
+
195
+---
196
+
197
+---
198
+
199
+##Referencias
200
+
201
+[1]  F. Maleki et al., ‘‘An Image Encryption System by
202
+Cellular Automata with Memory,’’ Proc. 3rd Int’l
203
+Conf. Availability, Reliability, and Security, IEEE CS
204
+Press, 2008, pp. 12661271.
205
+
206
+[2] Dalhoum, Abdel Latif Abu, et al. "Digital Image Scrambling Using 2 D Cellular Automata." IEEE MultiMedia 19.4 (2012): 28-36.
207
+
208
+[3] http://www.instructables.com/id/Python-Programming-recursion/
209
+
210
+---
211
+
212
+---
213
+
214
+---
215
+
216
+[English](#markdown-header-recursion-image-scrambler) | [Español](#markdown-header-recursion-revolvedor-de-imagenes)
217
+
218
+#Recursion - Image Scrambler
219
+
220
+![main1.png](images/main1-small.png)
221
+![main2.png](images/main2-small.png)
222
+![main3.png](images/main3-small.png)

+ 165
- 0
doc/en/html/_image_scrambler_8h_source.html View File

@@ -0,0 +1,165 @@
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: ImageScrambler.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">ImageScrambler.h</div>  </div>
84
+</div><!--header-->
85
+<div class="contents">
86
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef IMAGESCRAMBLER_H</span></div>
87
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define IMAGESCRAMBLER_H</span></div>
88
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;</div>
89
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;QMainWindow&gt;</span></div>
90
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;QFileDialog&gt;</span></div>
91
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;QDir&gt;</span></div>
92
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;QMessageBox&gt;</span></div>
93
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;QShortcut&gt;</span></div>
94
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;QImage&gt;</span></div>
95
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div>
96
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_ui.html">Ui</a> {</div>
97
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;    <span class="keyword">class </span><a class="code" href="class_image_scrambler.html">ImageScrambler</a>;</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;</div>
100
+<div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="class_image_scrambler.html">   15</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_image_scrambler.html">ImageScrambler</a> : <span class="keyword">public</span> QMainWindow</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;    Q_OBJECT</div>
103
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div>
104
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="keyword">public</span>:</div>
105
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div>
106
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a">ImageScrambler</a>(QWidget *parent = 0);</div>
107
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div>
108
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <a class="code" href="class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657">~ImageScrambler</a>();</div>
109
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
110
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26">cropSwap</a>(QImage &amp;, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>);</div>
111
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div>
112
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    QImage <a class="code" href="class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698">ScrambleFilter</a>(QImage image, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>);</div>
113
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div>
114
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="keyword">private</span> slots:</div>
115
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div>
116
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4">on_btnLoadNewImage_clicked</a>();</div>
117
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div>
118
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e">on_btnSave_clicked</a>();</div>
119
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div>
120
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7">on_btnScrambleImage_clicked</a>();</div>
121
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div>
122
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e">on_btnDescrambleImage_clicked</a>();</div>
123
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div>
124
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3">on_actionLoad_Image_triggered</a>();</div>
125
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div>
126
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3">on_actionSave_Image_triggered</a>();</div>
127
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div>
128
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74">on_actionScramble_Image_triggered</a>();</div>
129
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div>
130
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed">on_actionDescramble_Image_triggered</a>();</div>
131
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div>
132
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="keyword">private</span>:</div>
133
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    Ui::ImageScrambler *ui;</div>
134
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">  152</a></span>&#160;    QImage <a class="code" href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">originalImage</a>;  </div>
135
+<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">  153</a></span>&#160;    QImage <a class="code" href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">scrambledImage</a>; </div>
136
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">  154</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">scrambleDepth</a> ; </div>
137
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;};</div>
138
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div>
139
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="preprocessor">#endif // MAINWINDOW_H</span></div>
140
+<div class="ttc" id="class_image_scrambler_html_aa0ad5b405d49d1769d7e794f391f8657"><div class="ttname"><a href="class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657">ImageScrambler::~ImageScrambler</a></div><div class="ttdeci">~ImageScrambler()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:45</div></div>
141
+<div class="ttc" id="namespace_ui_html"><div class="ttname"><a href="namespace_ui.html">Ui</a></div><div class="ttdef"><b>Definition:</b> ImageScrambler.h:11</div></div>
142
+<div class="ttc" id="class_image_scrambler_html_a2a548be139a62d30dea82e2797d51ec7"><div class="ttname"><a href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7">ImageScrambler::on_btnScrambleImage_clicked</a></div><div class="ttdeci">void on_btnScrambleImage_clicked()</div><div class="ttdoc">Function invokes the ScrambleFilter function to scramble the image and load it in the GUI...</div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:89</div></div>
143
+<div class="ttc" id="class_image_scrambler_html_aba8b3a0f8d406c9e48e1d0e9e429a60e"><div class="ttname"><a href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e">ImageScrambler::on_btnSave_clicked</a></div><div class="ttdeci">void on_btnSave_clicked()</div><div class="ttdoc">Function that saves the scrambled image in the computer. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:75</div></div>
144
+<div class="ttc" id="class_image_scrambler_html"><div class="ttname"><a href="class_image_scrambler.html">ImageScrambler</a></div><div class="ttdef"><b>Definition:</b> ImageScrambler.h:15</div></div>
145
+<div class="ttc" id="class_image_scrambler_html_a691bd6839008b2ec5dc3bc2933328cc2"><div class="ttname"><a href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">ImageScrambler::scrambledImage</a></div><div class="ttdeci">QImage scrambledImage</div><div class="ttdef"><b>Definition:</b> ImageScrambler.h:153</div></div>
146
+<div class="ttc" id="class_image_scrambler_html_a7eb90242d1779b98f48f9abe5ed7d698"><div class="ttname"><a href="class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698">ImageScrambler::ScrambleFilter</a></div><div class="ttdeci">QImage ScrambleFilter(QImage image, int, int, int, int, int)</div><div class="ttdoc">Funtion that recursively scrambles an images by dividing the image in squares (sub images) and then s...</div><div class="ttdef"><b>Definition:</b> Filter.cpp:72</div></div>
147
+<div class="ttc" id="class_image_scrambler_html_a7c3ef8d29bfc424d296e95c6acdb427e"><div class="ttname"><a href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e">ImageScrambler::on_btnDescrambleImage_clicked</a></div><div class="ttdeci">void on_btnDescrambleImage_clicked()</div><div class="ttdoc">Function that restore the scrambled image to the original image. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:104</div></div>
148
+<div class="ttc" id="class_image_scrambler_html_aef30dcfeee03fa8aee60fd7ba89815b3"><div class="ttname"><a href="class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3">ImageScrambler::on_actionSave_Image_triggered</a></div><div class="ttdeci">void on_actionSave_Image_triggered()</div><div class="ttdoc">Function that invokes the on_btnSave_clicked() function. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:123</div></div>
149
+<div class="ttc" id="class_image_scrambler_html_afa24bbf9d4f71fd0853478a66d74d5f4"><div class="ttname"><a href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4">ImageScrambler::on_btnLoadNewImage_clicked</a></div><div class="ttdeci">void on_btnLoadNewImage_clicked()</div><div class="ttdoc">Function display a file browsing window to load an image into the GUI. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:56</div></div>
150
+<div class="ttc" id="class_image_scrambler_html_a80b3b6e575f0b24290d71d202d910fed"><div class="ttname"><a href="class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed">ImageScrambler::on_actionDescramble_Image_triggered</a></div><div class="ttdeci">void on_actionDescramble_Image_triggered()</div><div class="ttdoc">Function that invokes the on_btnDescrambleImage_clicked() function. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:141</div></div>
151
+<div class="ttc" id="class_image_scrambler_html_a90f0c2de88b3d790ab25460dc2222a60"><div class="ttname"><a href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">ImageScrambler::originalImage</a></div><div class="ttdeci">QImage originalImage</div><div class="ttdef"><b>Definition:</b> ImageScrambler.h:152</div></div>
152
+<div class="ttc" id="class_image_scrambler_html_add8fe476a0557f10a1fdae5b2b8e576a"><div class="ttname"><a href="class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a">ImageScrambler::ImageScrambler</a></div><div class="ttdeci">ImageScrambler(QWidget *parent=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:10</div></div>
153
+<div class="ttc" id="class_image_scrambler_html_a7199f376e7dc4fc4b61145be2dcaaad3"><div class="ttname"><a href="class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3">ImageScrambler::on_actionLoad_Image_triggered</a></div><div class="ttdeci">void on_actionLoad_Image_triggered()</div><div class="ttdoc">Function that invokes the on_btnLoadNewImage_clicked() function. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:114</div></div>
154
+<div class="ttc" id="class_image_scrambler_html_afe4e275f55ee362ea7ce13fcec6f0b26"><div class="ttname"><a href="class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26">ImageScrambler::cropSwap</a></div><div class="ttdeci">void cropSwap(QImage &amp;, int, int, int, int, int, int)</div><div class="ttdoc">Funtion that crop two squares of equal size of an image or sub image and swaps them. The funtion receives two coords (x0, y0) and (x1, y1) and a width and a height. Then swaps pixel by pixel the square formed from the top left coordinate (x0, y0) to the bottom right coordinate (x0+width, y0+height) with the square formed from the top left coordinate (x1, y1) to the bottom right (x1+width, y1+height). </div><div class="ttdef"><b>Definition:</b> Filter.cpp:29</div></div>
155
+<div class="ttc" id="class_image_scrambler_html_ac7514d09c9ee2b021d803375eba95f74"><div class="ttname"><a href="class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74">ImageScrambler::on_actionScramble_Image_triggered</a></div><div class="ttdeci">void on_actionScramble_Image_triggered()</div><div class="ttdoc">Function that invokes the on_btnScrambleImage_clicked() function. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:132</div></div>
156
+<div class="ttc" id="class_image_scrambler_html_a4d5951c83206c8cf7bad2c6a9f7387d8"><div class="ttname"><a href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">ImageScrambler::scrambleDepth</a></div><div class="ttdeci">int scrambleDepth</div><div class="ttdef"><b>Definition:</b> ImageScrambler.h:154</div></div>
157
+</div><!-- fragment --></div><!-- contents -->
158
+<!-- start footer part -->
159
+<hr class="footer"/><address class="footer"><small>
160
+Generated on Tue Jun 16 2015 20:51:15 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
161
+<img class="footer" src="doxygen.png" alt="doxygen"/>
162
+</a> 1.8.9.1
163
+</small></address>
164
+</body>
165
+</html>

+ 102
- 0
doc/en/html/annotated.html View 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_image_scrambler.html" target="_self">ImageScrambler</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 Jun 16 2015 20:51:16 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 View File


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


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


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


+ 116
- 0
doc/en/html/class_image_scrambler-members.html View File

@@ -0,0 +1,116 @@
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">ImageScrambler 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_image_scrambler.html">ImageScrambler</a>, including all inherited members.</p>
91
+<table class="directory">
92
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26">cropSwap</a>(QImage &amp;, int, int, int, int, int, int)</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"></td></tr>
93
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a">ImageScrambler</a>(QWidget *parent=0)</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
94
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed">on_actionDescramble_Image_triggered</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
95
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3">on_actionLoad_Image_triggered</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
96
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3">on_actionSave_Image_triggered</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
97
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74">on_actionScramble_Image_triggered</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
98
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e">on_btnDescrambleImage_clicked</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
99
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4">on_btnLoadNewImage_clicked</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
100
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e">on_btnSave_clicked</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
101
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7">on_btnScrambleImage_clicked</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
102
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">originalImage</a></td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
103
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">scrambleDepth</a></td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
104
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">scrambledImage</a></td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
105
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698">ScrambleFilter</a>(QImage image, int, int, int, int, int)</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"></td></tr>
106
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ui</b> (defined in <a class="el" href="class_image_scrambler.html">ImageScrambler</a>)</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
107
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657">~ImageScrambler</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"></td></tr>
108
+</table></div><!-- contents -->
109
+<!-- start footer part -->
110
+<hr class="footer"/><address class="footer"><small>
111
+Generated on Tue Jun 16 2015 20:51:16 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
112
+<img class="footer" src="doxygen.png" alt="doxygen"/>
113
+</a> 1.8.9.1
114
+</small></address>
115
+</body>
116
+</html>

+ 379
- 0
doc/en/html/class_image_scrambler.html View File

@@ -0,0 +1,379 @@
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: ImageScrambler 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_image_scrambler-members.html">List of all members</a>  </div>
90
+  <div class="headertitle">
91
+<div class="title">ImageScrambler Class Reference</div>  </div>
92
+</div><!--header-->
93
+<div class="contents">
94
+<div class="dynheader">
95
+Inheritance diagram for ImageScrambler:</div>
96
+<div class="dyncontent">
97
+ <div class="center">
98
+  <img src="class_image_scrambler.png" usemap="#ImageScrambler_map" alt=""/>
99
+  <map id="ImageScrambler_map" name="ImageScrambler_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:add8fe476a0557f10a1fdae5b2b8e576a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add8fe476a0557f10a1fdae5b2b8e576a"></a>
106
+&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a">ImageScrambler</a> (QWidget *parent=0)</td></tr>
107
+<tr class="memdesc:add8fe476a0557f10a1fdae5b2b8e576a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
108
+<tr class="separator:add8fe476a0557f10a1fdae5b2b8e576a"><td class="memSeparator" colspan="2">&#160;</td></tr>
109
+<tr class="memitem:aa0ad5b405d49d1769d7e794f391f8657"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0ad5b405d49d1769d7e794f391f8657"></a>
110
+&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657">~ImageScrambler</a> ()</td></tr>
111
+<tr class="memdesc:aa0ad5b405d49d1769d7e794f391f8657"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
112
+<tr class="separator:aa0ad5b405d49d1769d7e794f391f8657"><td class="memSeparator" colspan="2">&#160;</td></tr>
113
+<tr class="memitem:afe4e275f55ee362ea7ce13fcec6f0b26"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26">cropSwap</a> (QImage &amp;, int, int, int, int, int, int)</td></tr>
114
+<tr class="memdesc:afe4e275f55ee362ea7ce13fcec6f0b26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funtion that crop two squares of equal size of an image or sub image and swaps them. The funtion receives two coords (x0, y0) and (x1, y1) and a width and a height. Then swaps pixel by pixel the square formed from the top left coordinate (x0, y0) to the bottom right coordinate (x0+width, y0+height) with the square formed from the top left coordinate (x1, y1) to the bottom right (x1+width, y1+height).  <a href="#afe4e275f55ee362ea7ce13fcec6f0b26">More...</a><br /></td></tr>
115
+<tr class="separator:afe4e275f55ee362ea7ce13fcec6f0b26"><td class="memSeparator" colspan="2">&#160;</td></tr>
116
+<tr class="memitem:a7eb90242d1779b98f48f9abe5ed7d698"><td class="memItemLeft" align="right" valign="top">QImage&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698">ScrambleFilter</a> (QImage image, int, int, int, int, int)</td></tr>
117
+<tr class="memdesc:a7eb90242d1779b98f48f9abe5ed7d698"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funtion that recursively scrambles an images by dividing the image in squares (sub images) and then swapping them. The first step the program does is divide the image in two or four squares and swap the squares, the resulting image is divided in four squares and then the same steps are applied recursively to each of the four squares.  <a href="#a7eb90242d1779b98f48f9abe5ed7d698">More...</a><br /></td></tr>
118
+<tr class="separator:a7eb90242d1779b98f48f9abe5ed7d698"><td class="memSeparator" colspan="2">&#160;</td></tr>
119
+</table><table class="memberdecls">
120
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-slots"></a>
121
+Private Slots</h2></td></tr>
122
+<tr class="memitem:afa24bbf9d4f71fd0853478a66d74d5f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa24bbf9d4f71fd0853478a66d74d5f4"></a>
123
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4">on_btnLoadNewImage_clicked</a> ()</td></tr>
124
+<tr class="memdesc:afa24bbf9d4f71fd0853478a66d74d5f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function display a file browsing window to load an image into the GUI. <br /></td></tr>
125
+<tr class="separator:afa24bbf9d4f71fd0853478a66d74d5f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
126
+<tr class="memitem:aba8b3a0f8d406c9e48e1d0e9e429a60e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba8b3a0f8d406c9e48e1d0e9e429a60e"></a>
127
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e">on_btnSave_clicked</a> ()</td></tr>
128
+<tr class="memdesc:aba8b3a0f8d406c9e48e1d0e9e429a60e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that saves the scrambled image in the computer. <br /></td></tr>
129
+<tr class="separator:aba8b3a0f8d406c9e48e1d0e9e429a60e"><td class="memSeparator" colspan="2">&#160;</td></tr>
130
+<tr class="memitem:a2a548be139a62d30dea82e2797d51ec7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a548be139a62d30dea82e2797d51ec7"></a>
131
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7">on_btnScrambleImage_clicked</a> ()</td></tr>
132
+<tr class="memdesc:a2a548be139a62d30dea82e2797d51ec7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function invokes the ScrambleFilter function to scramble the image and load it in the GUI. <br /></td></tr>
133
+<tr class="separator:a2a548be139a62d30dea82e2797d51ec7"><td class="memSeparator" colspan="2">&#160;</td></tr>
134
+<tr class="memitem:a7c3ef8d29bfc424d296e95c6acdb427e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c3ef8d29bfc424d296e95c6acdb427e"></a>
135
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e">on_btnDescrambleImage_clicked</a> ()</td></tr>
136
+<tr class="memdesc:a7c3ef8d29bfc424d296e95c6acdb427e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that restore the scrambled image to the original image. <br /></td></tr>
137
+<tr class="separator:a7c3ef8d29bfc424d296e95c6acdb427e"><td class="memSeparator" colspan="2">&#160;</td></tr>
138
+<tr class="memitem:a7199f376e7dc4fc4b61145be2dcaaad3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7199f376e7dc4fc4b61145be2dcaaad3"></a>
139
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3">on_actionLoad_Image_triggered</a> ()</td></tr>
140
+<tr class="memdesc:a7199f376e7dc4fc4b61145be2dcaaad3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that invokes the <a class="el" href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4" title="Function display a file browsing window to load an image into the GUI. ">on_btnLoadNewImage_clicked()</a> function. <br /></td></tr>
141
+<tr class="separator:a7199f376e7dc4fc4b61145be2dcaaad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
142
+<tr class="memitem:aef30dcfeee03fa8aee60fd7ba89815b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef30dcfeee03fa8aee60fd7ba89815b3"></a>
143
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3">on_actionSave_Image_triggered</a> ()</td></tr>
144
+<tr class="memdesc:aef30dcfeee03fa8aee60fd7ba89815b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that invokes the <a class="el" href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e" title="Function that saves the scrambled image in the computer. ">on_btnSave_clicked()</a> function. <br /></td></tr>
145
+<tr class="separator:aef30dcfeee03fa8aee60fd7ba89815b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
146
+<tr class="memitem:ac7514d09c9ee2b021d803375eba95f74"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7514d09c9ee2b021d803375eba95f74"></a>
147
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74">on_actionScramble_Image_triggered</a> ()</td></tr>
148
+<tr class="memdesc:ac7514d09c9ee2b021d803375eba95f74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that invokes the <a class="el" href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7" title="Function invokes the ScrambleFilter function to scramble the image and load it in the GUI...">on_btnScrambleImage_clicked()</a> function. <br /></td></tr>
149
+<tr class="separator:ac7514d09c9ee2b021d803375eba95f74"><td class="memSeparator" colspan="2">&#160;</td></tr>
150
+<tr class="memitem:a80b3b6e575f0b24290d71d202d910fed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80b3b6e575f0b24290d71d202d910fed"></a>
151
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed">on_actionDescramble_Image_triggered</a> ()</td></tr>
152
+<tr class="memdesc:a80b3b6e575f0b24290d71d202d910fed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function that invokes the <a class="el" href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e" title="Function that restore the scrambled image to the original image. ">on_btnDescrambleImage_clicked()</a> function. <br /></td></tr>
153
+<tr class="separator:a80b3b6e575f0b24290d71d202d910fed"><td class="memSeparator" colspan="2">&#160;</td></tr>
154
+</table><table class="memberdecls">
155
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
156
+Private Attributes</h2></td></tr>
157
+<tr class="memitem:a9bdaf498f7f4d2b6143aae8ff59ddff3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bdaf498f7f4d2b6143aae8ff59ddff3"></a>
158
+Ui::ImageScrambler *&#160;</td><td class="memItemRight" valign="bottom"><b>ui</b></td></tr>
159
+<tr class="separator:a9bdaf498f7f4d2b6143aae8ff59ddff3"><td class="memSeparator" colspan="2">&#160;</td></tr>
160
+<tr class="memitem:a90f0c2de88b3d790ab25460dc2222a60"><td class="memItemLeft" align="right" valign="top">QImage&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">originalImage</a></td></tr>
161
+<tr class="separator:a90f0c2de88b3d790ab25460dc2222a60"><td class="memSeparator" colspan="2">&#160;</td></tr>
162
+<tr class="memitem:a691bd6839008b2ec5dc3bc2933328cc2"><td class="memItemLeft" align="right" valign="top">QImage&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">scrambledImage</a></td></tr>
163
+<tr class="separator:a691bd6839008b2ec5dc3bc2933328cc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
164
+<tr class="memitem:a4d5951c83206c8cf7bad2c6a9f7387d8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">scrambleDepth</a></td></tr>
165
+<tr class="separator:a4d5951c83206c8cf7bad2c6a9f7387d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
166
+</table>
167
+<h2 class="groupheader">Member Function Documentation</h2>
168
+<a class="anchor" id="afe4e275f55ee362ea7ce13fcec6f0b26"></a>
169
+<div class="memitem">
170
+<div class="memproto">
171
+      <table class="memname">
172
+        <tr>
173
+          <td class="memname">void ImageScrambler::cropSwap </td>
174
+          <td>(</td>
175
+          <td class="paramtype">QImage &amp;&#160;</td>
176
+          <td class="paramname"><em>img</em>, </td>
177
+        </tr>
178
+        <tr>
179
+          <td class="paramkey"></td>
180
+          <td></td>
181
+          <td class="paramtype">int&#160;</td>
182
+          <td class="paramname"><em>x0</em>, </td>
183
+        </tr>
184
+        <tr>
185
+          <td class="paramkey"></td>
186
+          <td></td>
187
+          <td class="paramtype">int&#160;</td>
188
+          <td class="paramname"><em>y0</em>, </td>
189
+        </tr>
190
+        <tr>
191
+          <td class="paramkey"></td>
192
+          <td></td>
193
+          <td class="paramtype">int&#160;</td>
194
+          <td class="paramname"><em>x1</em>, </td>
195
+        </tr>
196
+        <tr>
197
+          <td class="paramkey"></td>
198
+          <td></td>
199
+          <td class="paramtype">int&#160;</td>
200
+          <td class="paramname"><em>y1</em>, </td>
201
+        </tr>
202
+        <tr>
203
+          <td class="paramkey"></td>
204
+          <td></td>
205
+          <td class="paramtype">int&#160;</td>
206
+          <td class="paramname"><em>width</em>, </td>
207
+        </tr>
208
+        <tr>
209
+          <td class="paramkey"></td>
210
+          <td></td>
211
+          <td class="paramtype">int&#160;</td>
212
+          <td class="paramname"><em>height</em>&#160;</td>
213
+        </tr>
214
+        <tr>
215
+          <td></td>
216
+          <td>)</td>
217
+          <td></td><td></td>
218
+        </tr>
219
+      </table>
220
+</div><div class="memdoc">
221
+
222
+<p>Funtion that crop two squares of equal size of an image or sub image and swaps them. The funtion receives two coords (x0, y0) and (x1, y1) and a width and a height. Then swaps pixel by pixel the square formed from the top left coordinate (x0, y0) to the bottom right coordinate (x0+width, y0+height) with the square formed from the top left coordinate (x1, y1) to the bottom right (x1+width, y1+height). </p>
223
+<dl class="params"><dt>Parameters</dt><dd>
224
+  <table class="params">
225
+    <tr><td class="paramname">img</td><td>Reference to the image to swap the squares. </td></tr>
226
+    <tr><td class="paramname">x0</td><td>The top left x coordinate of the first square in the image. </td></tr>
227
+    <tr><td class="paramname">y0</td><td>The top left y coordinate of the first square in the image. </td></tr>
228
+    <tr><td class="paramname">x1</td><td>The top left x coordinate of the second square in the image. </td></tr>
229
+    <tr><td class="paramname">y1</td><td>The top left y coordinate of the second square in the image. </td></tr>
230
+    <tr><td class="paramname">width</td><td>Width of the squares </td></tr>
231
+    <tr><td class="paramname">height</td><td>Height of the squares </td></tr>
232
+  </table>
233
+  </dd>
234
+</dl>
235
+
236
+</div>
237
+</div>
238
+<a class="anchor" id="a7eb90242d1779b98f48f9abe5ed7d698"></a>
239
+<div class="memitem">
240
+<div class="memproto">
241
+      <table class="memname">
242
+        <tr>
243
+          <td class="memname">QImage ImageScrambler::ScrambleFilter </td>
244
+          <td>(</td>
245
+          <td class="paramtype">QImage&#160;</td>
246
+          <td class="paramname"><em>image</em>, </td>
247
+        </tr>
248
+        <tr>
249
+          <td class="paramkey"></td>
250
+          <td></td>
251
+          <td class="paramtype">int&#160;</td>
252
+          <td class="paramname"><em>N</em>, </td>
253
+        </tr>
254
+        <tr>
255
+          <td class="paramkey"></td>
256
+          <td></td>
257
+          <td class="paramtype">int&#160;</td>
258
+          <td class="paramname"><em>sx</em>, </td>
259
+        </tr>
260
+        <tr>
261
+          <td class="paramkey"></td>
262
+          <td></td>
263
+          <td class="paramtype">int&#160;</td>
264
+          <td class="paramname"><em>sy</em>, </td>
265
+        </tr>
266
+        <tr>
267
+          <td class="paramkey"></td>
268
+          <td></td>
269
+          <td class="paramtype">int&#160;</td>
270
+          <td class="paramname"><em>width</em>, </td>
271
+        </tr>
272
+        <tr>
273
+          <td class="paramkey"></td>
274
+          <td></td>
275
+          <td class="paramtype">int&#160;</td>
276
+          <td class="paramname"><em>height</em>&#160;</td>
277
+        </tr>
278
+        <tr>
279
+          <td></td>
280
+          <td>)</td>
281
+          <td></td><td></td>
282
+        </tr>
283
+      </table>
284
+</div><div class="memdoc">
285
+
286
+<p>Funtion that recursively scrambles an images by dividing the image in squares (sub images) and then swapping them. The first step the program does is divide the image in two or four squares and swap the squares, the resulting image is divided in four squares and then the same steps are applied recursively to each of the four squares. </p>
287
+<dl class="params"><dt>Parameters</dt><dd>
288
+  <table class="params">
289
+    <tr><td class="paramname">image</td><td>The image to scramble </td></tr>
290
+    <tr><td class="paramname">N</td><td>The depth of the recursion. The image will be scrambled in 4^n squares. </td></tr>
291
+    <tr><td class="paramname">sx</td><td>Starting left top x coordinate of the image or sub image to divide </td></tr>
292
+    <tr><td class="paramname">sy</td><td>Starting left top y coodinate of the image or sub image to divide </td></tr>
293
+    <tr><td class="paramname">width</td><td>Width of the received image </td></tr>
294
+    <tr><td class="paramname">height</td><td>Height of the received image </td></tr>
295
+  </table>
296
+  </dd>
297
+</dl>
298
+<dl class="section return"><dt>Returns</dt><dd>the scrambled image </dd></dl>
299
+
300
+</div>
301
+</div>
302
+<h2 class="groupheader">Member Data Documentation</h2>
303
+<a class="anchor" id="a90f0c2de88b3d790ab25460dc2222a60"></a>
304
+<div class="memitem">
305
+<div class="memproto">
306
+<table class="mlabels">
307
+  <tr>
308
+  <td class="mlabels-left">
309
+      <table class="memname">
310
+        <tr>
311
+          <td class="memname">QImage ImageScrambler::originalImage</td>
312
+        </tr>
313
+      </table>
314
+  </td>
315
+  <td class="mlabels-right">
316
+<span class="mlabels"><span class="mlabel">private</span></span>  </td>
317
+  </tr>
318
+</table>
319
+</div><div class="memdoc">
320
+<p>the original image (imagen original) </p>
321
+
322
+</div>
323
+</div>
324
+<a class="anchor" id="a4d5951c83206c8cf7bad2c6a9f7387d8"></a>
325
+<div class="memitem">
326
+<div class="memproto">
327
+<table class="mlabels">
328
+  <tr>
329
+  <td class="mlabels-left">
330
+      <table class="memname">
331
+        <tr>
332
+          <td class="memname">int ImageScrambler::scrambleDepth</td>
333
+        </tr>
334
+      </table>
335
+  </td>
336
+  <td class="mlabels-right">
337
+<span class="mlabels"><span class="mlabel">private</span></span>  </td>
338
+  </tr>
339
+</table>
340
+</div><div class="memdoc">
341
+<p>recursive depth (profundidad de la recursion) </p>
342
+
343
+</div>
344
+</div>
345
+<a class="anchor" id="a691bd6839008b2ec5dc3bc2933328cc2"></a>
346
+<div class="memitem">
347
+<div class="memproto">
348
+<table class="mlabels">
349
+  <tr>
350
+  <td class="mlabels-left">
351
+      <table class="memname">
352
+        <tr>
353
+          <td class="memname">QImage ImageScrambler::scrambledImage</td>
354
+        </tr>
355
+      </table>
356
+  </td>
357
+  <td class="mlabels-right">
358
+<span class="mlabels"><span class="mlabel">private</span></span>  </td>
359
+  </tr>
360
+</table>
361
+</div><div class="memdoc">
362
+<p>scrambled image (imagen revuelta) </p>
363
+
364
+</div>
365
+</div>
366
+<hr/>The documentation for this class was generated from the following files:<ul>
367
+<li><a class="el" href="_image_scrambler_8h_source.html">ImageScrambler.h</a></li>
368
+<li>Filter.cpp</li>
369
+<li>ImageScrambler.cpp</li>
370
+</ul>
371
+</div><!-- contents -->
372
+<!-- start footer part -->
373
+<hr class="footer"/><address class="footer"><small>
374
+Generated on Tue Jun 16 2015 20:51:16 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
375
+<img class="footer" src="doxygen.png" alt="doxygen"/>
376
+</a> 1.8.9.1
377
+</small></address>
378
+</body>
379
+</html>

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


+ 106
- 0
doc/en/html/classes.html View 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_I">I</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_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;I&#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_image_scrambler.html">ImageScrambler</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_I">I</a></div>
98
+</div><!-- contents -->
99
+<!-- start footer part -->
100
+<hr class="footer"/><address class="footer"><small>
101
+Generated on Tue Jun 16 2015 20:51:16 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 View File


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


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


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


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

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

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

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

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


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


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

@@ -0,0 +1,147 @@
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
+      <li><a href="functions_vars.html"><span>Variables</span></a></li>
74
+    </ul>
75
+  </div>
76
+</div><!-- top -->
77
+<!-- window showing the filter options -->
78
+<div id="MSearchSelectWindow"
79
+     onmouseover="return searchBox.OnSearchSelectShow()"
80
+     onmouseout="return searchBox.OnSearchSelectHide()"
81
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
82
+</div>
83
+
84
+<!-- iframe showing the search results (closed by default) -->
85
+<div id="MSearchResultsWindow">
86
+<iframe src="javascript:void(0)" frameborder="0" 
87
+        name="MSearchResults" id="MSearchResults">
88
+</iframe>
89
+</div>
90
+
91
+<div class="contents">
92
+<div class="textblock">Here is a list of all documented class members with links to the class documentation for each member:</div><ul>
93
+<li>cropSwap()
94
+: <a class="el" href="class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26">ImageScrambler</a>
95
+</li>
96
+<li>ImageScrambler()
97
+: <a class="el" href="class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a">ImageScrambler</a>
98
+</li>
99
+<li>on_actionDescramble_Image_triggered()
100
+: <a class="el" href="class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed">ImageScrambler</a>
101
+</li>
102
+<li>on_actionLoad_Image_triggered()
103
+: <a class="el" href="class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3">ImageScrambler</a>
104
+</li>
105
+<li>on_actionSave_Image_triggered()
106
+: <a class="el" href="class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3">ImageScrambler</a>
107
+</li>
108
+<li>on_actionScramble_Image_triggered()
109
+: <a class="el" href="class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74">ImageScrambler</a>
110
+</li>
111
+<li>on_btnDescrambleImage_clicked()
112
+: <a class="el" href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e">ImageScrambler</a>
113
+</li>
114
+<li>on_btnLoadNewImage_clicked()
115
+: <a class="el" href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4">ImageScrambler</a>
116
+</li>
117
+<li>on_btnSave_clicked()
118
+: <a class="el" href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e">ImageScrambler</a>
119
+</li>
120
+<li>on_btnScrambleImage_clicked()
121
+: <a class="el" href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7">ImageScrambler</a>
122
+</li>
123
+<li>originalImage
124
+: <a class="el" href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">ImageScrambler</a>
125
+</li>
126
+<li>scrambleDepth
127
+: <a class="el" href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">ImageScrambler</a>
128
+</li>
129
+<li>scrambledImage
130
+: <a class="el" href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">ImageScrambler</a>
131
+</li>
132
+<li>ScrambleFilter()
133
+: <a class="el" href="class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698">ImageScrambler</a>
134
+</li>
135
+<li>~ImageScrambler()
136
+: <a class="el" href="class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657">ImageScrambler</a>
137
+</li>
138
+</ul>
139
+</div><!-- contents -->
140
+<!-- start footer part -->
141
+<hr class="footer"/><address class="footer"><small>
142
+Generated on Tue Jun 16 2015 20:51:16 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
143
+<img class="footer" src="doxygen.png" alt="doxygen"/>
144
+</a> 1.8.9.1
145
+</small></address>
146
+</body>
147
+</html>

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

@@ -0,0 +1,138 @@
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
+      <li><a href="functions_vars.html"><span>Variables</span></a></li>
74
+    </ul>
75
+  </div>
76
+</div><!-- top -->
77
+<!-- window showing the filter options -->
78
+<div id="MSearchSelectWindow"
79
+     onmouseover="return searchBox.OnSearchSelectShow()"
80
+     onmouseout="return searchBox.OnSearchSelectHide()"
81
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
82
+</div>
83
+
84
+<!-- iframe showing the search results (closed by default) -->
85
+<div id="MSearchResultsWindow">
86
+<iframe src="javascript:void(0)" frameborder="0" 
87
+        name="MSearchResults" id="MSearchResults">
88
+</iframe>
89
+</div>
90
+
91
+<div class="contents">
92
+&#160;<ul>
93
+<li>cropSwap()
94
+: <a class="el" href="class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26">ImageScrambler</a>
95
+</li>
96
+<li>ImageScrambler()
97
+: <a class="el" href="class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a">ImageScrambler</a>
98
+</li>
99
+<li>on_actionDescramble_Image_triggered()
100
+: <a class="el" href="class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed">ImageScrambler</a>
101
+</li>
102
+<li>on_actionLoad_Image_triggered()
103
+: <a class="el" href="class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3">ImageScrambler</a>
104
+</li>
105
+<li>on_actionSave_Image_triggered()
106
+: <a class="el" href="class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3">ImageScrambler</a>
107
+</li>
108
+<li>on_actionScramble_Image_triggered()
109
+: <a class="el" href="class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74">ImageScrambler</a>
110
+</li>
111
+<li>on_btnDescrambleImage_clicked()
112
+: <a class="el" href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e">ImageScrambler</a>
113
+</li>
114
+<li>on_btnLoadNewImage_clicked()
115
+: <a class="el" href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4">ImageScrambler</a>
116
+</li>
117
+<li>on_btnSave_clicked()
118
+: <a class="el" href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e">ImageScrambler</a>
119
+</li>
120
+<li>on_btnScrambleImage_clicked()
121
+: <a class="el" href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7">ImageScrambler</a>
122
+</li>
123
+<li>ScrambleFilter()
124
+: <a class="el" href="class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698">ImageScrambler</a>
125
+</li>
126
+<li>~ImageScrambler()
127
+: <a class="el" href="class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657">ImageScrambler</a>
128
+</li>
129
+</ul>
130
+</div><!-- contents -->
131
+<!-- start footer part -->
132
+<hr class="footer"/><address class="footer"><small>
133
+Generated on Tue Jun 16 2015 20:51:16 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
134
+<img class="footer" src="doxygen.png" alt="doxygen"/>
135
+</a> 1.8.9.1
136
+</small></address>
137
+</body>
138
+</html>

+ 111
- 0
doc/en/html/functions_vars.html View File

@@ -0,0 +1,111 @@
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 - Variables</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><a href="functions_func.html"><span>Functions</span></a></li>
73
+      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
74
+    </ul>
75
+  </div>
76
+</div><!-- top -->
77
+<!-- window showing the filter options -->
78
+<div id="MSearchSelectWindow"
79
+     onmouseover="return searchBox.OnSearchSelectShow()"
80
+     onmouseout="return searchBox.OnSearchSelectHide()"
81
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
82
+</div>
83
+
84
+<!-- iframe showing the search results (closed by default) -->
85
+<div id="MSearchResultsWindow">
86
+<iframe src="javascript:void(0)" frameborder="0" 
87
+        name="MSearchResults" id="MSearchResults">
88
+</iframe>
89
+</div>
90
+
91
+<div class="contents">
92
+&#160;<ul>
93
+<li>originalImage
94
+: <a class="el" href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">ImageScrambler</a>
95
+</li>
96
+<li>scrambleDepth
97
+: <a class="el" href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">ImageScrambler</a>
98
+</li>
99
+<li>scrambledImage
100
+: <a class="el" href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">ImageScrambler</a>
101
+</li>
102
+</ul>
103
+</div><!-- contents -->
104
+<!-- start footer part -->
105
+<hr class="footer"/><address class="footer"><small>
106
+Generated on Tue Jun 16 2015 20:51:16 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
107
+<img class="footer" src="doxygen.png" alt="doxygen"/>
108
+</a> 1.8.9.1
109
+</small></address>
110
+</body>
111
+</html>

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

@@ -0,0 +1,103 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html xmlns="http://www.w3.org/1999/xhtml">
3
+<head>
4
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+<meta name="generator" content="Doxygen 1.8.9.1"/>
7
+<title>My Project: Class 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_image_scrambler.html" target="_self">ImageScrambler</a></td><td class="desc"></td></tr>
93
+</table>
94
+</div><!-- directory -->
95
+</div><!-- contents -->
96
+<!-- start footer part -->
97
+<hr class="footer"/><address class="footer"><small>
98
+Generated on Tue Jun 16 2015 20:51:16 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>

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

@@ -0,0 +1,87 @@
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>
42
+        <div id="MSearchBox" class="MSearchBoxInactive">
43
+        <span class="left">
44
+          <img id="MSearchSelect" src="search/mag_sel.png"
45
+               onmouseover="return searchBox.OnSearchSelectShow()"
46
+               onmouseout="return searchBox.OnSearchSelectHide()"
47
+               alt=""/>
48
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
49
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
50
+               onblur="searchBox.OnSearchFieldFocus(false)" 
51
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
52
+          </span><span class="right">
53
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
54
+          </span>
55
+        </div>
56
+      </li>
57
+    </ul>
58
+  </div>
59
+</div><!-- top -->
60
+<!-- window showing the filter options -->
61
+<div id="MSearchSelectWindow"
62
+     onmouseover="return searchBox.OnSearchSelectShow()"
63
+     onmouseout="return searchBox.OnSearchSelectHide()"
64
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
65
+</div>
66
+
67
+<!-- iframe showing the search results (closed by default) -->
68
+<div id="MSearchResultsWindow">
69
+<iframe src="javascript:void(0)" frameborder="0" 
70
+        name="MSearchResults" id="MSearchResults">
71
+</iframe>
72
+</div>
73
+
74
+<div class="header">
75
+  <div class="headertitle">
76
+<div class="title">My Project Documentation</div>  </div>
77
+</div><!--header-->
78
+<div class="contents">
79
+</div><!-- contents -->
80
+<!-- start footer part -->
81
+<hr class="footer"/><address class="footer"><small>
82
+Generated on Thu Jun 18 2015 10:26:23 for My Project by &#160;<a href="http://www.doxygen.org/index.html">
83
+<img class="footer" src="doxygen.png" alt="doxygen"/>
84
+</a> 1.8.9.1
85
+</small></address>
86
+</body>
87
+</html>

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


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


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


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


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


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

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

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

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['cropswap',['cropSwap',['../class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26',1,'ImageScrambler']]]
4
+];

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

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

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

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['imagescrambler',['ImageScrambler',['../class_image_scrambler.html',1,'ImageScrambler'],['../class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a',1,'ImageScrambler::ImageScrambler()']]]
4
+];

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

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

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

@@ -0,0 +1,12 @@
1
+var searchData=
2
+[
3
+  ['on_5factiondescramble_5fimage_5ftriggered',['on_actionDescramble_Image_triggered',['../class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed',1,'ImageScrambler']]],
4
+  ['on_5factionload_5fimage_5ftriggered',['on_actionLoad_Image_triggered',['../class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3',1,'ImageScrambler']]],
5
+  ['on_5factionsave_5fimage_5ftriggered',['on_actionSave_Image_triggered',['../class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3',1,'ImageScrambler']]],
6
+  ['on_5factionscramble_5fimage_5ftriggered',['on_actionScramble_Image_triggered',['../class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74',1,'ImageScrambler']]],
7
+  ['on_5fbtndescrambleimage_5fclicked',['on_btnDescrambleImage_clicked',['../class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e',1,'ImageScrambler']]],
8
+  ['on_5fbtnloadnewimage_5fclicked',['on_btnLoadNewImage_clicked',['../class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4',1,'ImageScrambler']]],
9
+  ['on_5fbtnsave_5fclicked',['on_btnSave_clicked',['../class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e',1,'ImageScrambler']]],
10
+  ['on_5fbtnscrambleimage_5fclicked',['on_btnScrambleImage_clicked',['../class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7',1,'ImageScrambler']]],
11
+  ['originalimage',['originalImage',['../class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60',1,'ImageScrambler']]]
12
+];

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

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

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

@@ -0,0 +1,6 @@
1
+var searchData=
2
+[
3
+  ['scrambledepth',['scrambleDepth',['../class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8',1,'ImageScrambler']]],
4
+  ['scrambledimage',['scrambledImage',['../class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2',1,'ImageScrambler']]],
5
+  ['scramblefilter',['ScrambleFilter',['../class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698',1,'ImageScrambler']]]
6
+];

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

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

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

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['_7eimagescrambler',['~ImageScrambler',['../class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657',1,'ImageScrambler']]]
4
+];

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

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

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

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['imagescrambler',['ImageScrambler',['../class_image_scrambler.html',1,'']]]
4
+];

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


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

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

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

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['cropswap',['cropSwap',['../class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26',1,'ImageScrambler']]]
4
+];

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

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

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

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['imagescrambler',['ImageScrambler',['../class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a',1,'ImageScrambler']]]
4
+];

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

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

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

@@ -0,0 +1,11 @@
1
+var searchData=
2
+[
3
+  ['on_5factiondescramble_5fimage_5ftriggered',['on_actionDescramble_Image_triggered',['../class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed',1,'ImageScrambler']]],
4
+  ['on_5factionload_5fimage_5ftriggered',['on_actionLoad_Image_triggered',['../class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3',1,'ImageScrambler']]],
5
+  ['on_5factionsave_5fimage_5ftriggered',['on_actionSave_Image_triggered',['../class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3',1,'ImageScrambler']]],
6
+  ['on_5factionscramble_5fimage_5ftriggered',['on_actionScramble_Image_triggered',['../class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74',1,'ImageScrambler']]],
7
+  ['on_5fbtndescrambleimage_5fclicked',['on_btnDescrambleImage_clicked',['../class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e',1,'ImageScrambler']]],
8
+  ['on_5fbtnloadnewimage_5fclicked',['on_btnLoadNewImage_clicked',['../class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4',1,'ImageScrambler']]],
9
+  ['on_5fbtnsave_5fclicked',['on_btnSave_clicked',['../class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e',1,'ImageScrambler']]],
10
+  ['on_5fbtnscrambleimage_5fclicked',['on_btnScrambleImage_clicked',['../class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7',1,'ImageScrambler']]]
11
+];

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

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

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

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['scramblefilter',['ScrambleFilter',['../class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698',1,'ImageScrambler']]]
4
+];

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

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

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

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['_7eimagescrambler',['~ImageScrambler',['../class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657',1,'ImageScrambler']]]
4
+];

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


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

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

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

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

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

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

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


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


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


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

@@ -0,0 +1,12 @@
1
+var indexSectionsWithContent =
2
+{
3
+};
4
+
5
+var indexSectionNames =
6
+{
7
+};
8
+
9
+var indexSectionLabels =
10
+{
11
+};
12
+

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

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="variables_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/variables_0.js View File

@@ -0,0 +1,4 @@
1
+var searchData=
2
+[
3
+  ['originalimage',['originalImage',['../class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60',1,'ImageScrambler']]]
4
+];

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

@@ -0,0 +1,26 @@
1
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+<html><head><title></title>
3
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
4
+<meta name="generator" content="Doxygen 1.8.9.1"/>
5
+<link rel="stylesheet" type="text/css" href="search.css"/>
6
+<script type="text/javascript" src="variables_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>

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

@@ -0,0 +1,5 @@
1
+var searchData=
2
+[
3
+  ['scrambledepth',['scrambleDepth',['../class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8',1,'ImageScrambler']]],
4
+  ['scrambledimage',['scrambledImage',['../class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2',1,'ImageScrambler']]]
5
+];

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


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


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


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


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


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


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


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

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

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

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

+ 4
- 0
doc/en/latex/annotated.tex View 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_image_scrambler}{Image\+Scrambler} }{\pageref{class_image_scrambler}}{}
4
+\end{DoxyCompactList}

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

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

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


+ 150
- 0
doc/en/latex/class_image_scrambler.tex View File

@@ -0,0 +1,150 @@
1
+\hypertarget{class_image_scrambler}{}\section{Image\+Scrambler Class Reference}
2
+\label{class_image_scrambler}\index{Image\+Scrambler@{Image\+Scrambler}}
3
+Inheritance diagram for Image\+Scrambler\+:\begin{figure}[H]
4
+\begin{center}
5
+\leavevmode
6
+\includegraphics[height=2.000000cm]{class_image_scrambler}
7
+\end{center}
8
+\end{figure}
9
+\subsection*{Public Member Functions}
10
+\begin{DoxyCompactItemize}
11
+\item 
12
+\hypertarget{class_image_scrambler_add8fe476a0557f10a1fdae5b2b8e576a}{}\hyperlink{class_image_scrambler_add8fe476a0557f10a1fdae5b2b8e576a}{Image\+Scrambler} (Q\+Widget $\ast$parent=0)\label{class_image_scrambler_add8fe476a0557f10a1fdae5b2b8e576a}
13
+
14
+\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
15
+\hypertarget{class_image_scrambler_aa0ad5b405d49d1769d7e794f391f8657}{}\hyperlink{class_image_scrambler_aa0ad5b405d49d1769d7e794f391f8657}{$\sim$\+Image\+Scrambler} ()\label{class_image_scrambler_aa0ad5b405d49d1769d7e794f391f8657}
16
+
17
+\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
18
+void \hyperlink{class_image_scrambler_afe4e275f55ee362ea7ce13fcec6f0b26}{crop\+Swap} (Q\+Image \&, int, int, int, int, int, int)
19
+\begin{DoxyCompactList}\small\item\em Funtion that crop two squares of equal size of an image or sub image and swaps them. The funtion receives two coords (x0, y0) and (x1, y1) and a width and a height. Then swaps pixel by pixel the square formed from the top left coordinate (x0, y0) to the bottom right coordinate (x0+width, y0+height) with the square formed from the top left coordinate (x1, y1) to the bottom right (x1+width, y1+height). \end{DoxyCompactList}\item 
20
+Q\+Image \hyperlink{class_image_scrambler_a7eb90242d1779b98f48f9abe5ed7d698}{Scramble\+Filter} (Q\+Image image, int, int, int, int, int)
21
+\begin{DoxyCompactList}\small\item\em Funtion that recursively scrambles an images by dividing the image in squares (sub images) and then swapping them. The first step the program does is divide the image in two or four squares and swap the squares, the resulting image is divided in four squares and then the same steps are applied recursively to each of the four squares. \end{DoxyCompactList}\end{DoxyCompactItemize}
22
+\subsection*{Private Slots}
23
+\begin{DoxyCompactItemize}
24
+\item 
25
+\hypertarget{class_image_scrambler_afa24bbf9d4f71fd0853478a66d74d5f4}{}void \hyperlink{class_image_scrambler_afa24bbf9d4f71fd0853478a66d74d5f4}{on\+\_\+btn\+Load\+New\+Image\+\_\+clicked} ()\label{class_image_scrambler_afa24bbf9d4f71fd0853478a66d74d5f4}
26
+
27
+\begin{DoxyCompactList}\small\item\em Function display a file browsing window to load an image into the G\+U\+I. \end{DoxyCompactList}\item 
28
+\hypertarget{class_image_scrambler_aba8b3a0f8d406c9e48e1d0e9e429a60e}{}void \hyperlink{class_image_scrambler_aba8b3a0f8d406c9e48e1d0e9e429a60e}{on\+\_\+btn\+Save\+\_\+clicked} ()\label{class_image_scrambler_aba8b3a0f8d406c9e48e1d0e9e429a60e}
29
+
30
+\begin{DoxyCompactList}\small\item\em Function that saves the scrambled image in the computer. \end{DoxyCompactList}\item 
31
+\hypertarget{class_image_scrambler_a2a548be139a62d30dea82e2797d51ec7}{}void \hyperlink{class_image_scrambler_a2a548be139a62d30dea82e2797d51ec7}{on\+\_\+btn\+Scramble\+Image\+\_\+clicked} ()\label{class_image_scrambler_a2a548be139a62d30dea82e2797d51ec7}
32
+
33
+\begin{DoxyCompactList}\small\item\em Function invokes the Scramble\+Filter function to scramble the image and load it in the G\+U\+I. \end{DoxyCompactList}\item 
34
+\hypertarget{class_image_scrambler_a7c3ef8d29bfc424d296e95c6acdb427e}{}void \hyperlink{class_image_scrambler_a7c3ef8d29bfc424d296e95c6acdb427e}{on\+\_\+btn\+Descramble\+Image\+\_\+clicked} ()\label{class_image_scrambler_a7c3ef8d29bfc424d296e95c6acdb427e}
35
+
36
+\begin{DoxyCompactList}\small\item\em Function that restore the scrambled image to the original image. \end{DoxyCompactList}\item 
37
+\hypertarget{class_image_scrambler_a7199f376e7dc4fc4b61145be2dcaaad3}{}void \hyperlink{class_image_scrambler_a7199f376e7dc4fc4b61145be2dcaaad3}{on\+\_\+action\+Load\+\_\+\+Image\+\_\+triggered} ()\label{class_image_scrambler_a7199f376e7dc4fc4b61145be2dcaaad3}
38
+
39
+\begin{DoxyCompactList}\small\item\em Function that invokes the \hyperlink{class_image_scrambler_afa24bbf9d4f71fd0853478a66d74d5f4}{on\+\_\+btn\+Load\+New\+Image\+\_\+clicked()} function. \end{DoxyCompactList}\item 
40
+\hypertarget{class_image_scrambler_aef30dcfeee03fa8aee60fd7ba89815b3}{}void \hyperlink{class_image_scrambler_aef30dcfeee03fa8aee60fd7ba89815b3}{on\+\_\+action\+Save\+\_\+\+Image\+\_\+triggered} ()\label{class_image_scrambler_aef30dcfeee03fa8aee60fd7ba89815b3}
41
+
42
+\begin{DoxyCompactList}\small\item\em Function that invokes the \hyperlink{class_image_scrambler_aba8b3a0f8d406c9e48e1d0e9e429a60e}{on\+\_\+btn\+Save\+\_\+clicked()} function. \end{DoxyCompactList}\item 
43
+\hypertarget{class_image_scrambler_ac7514d09c9ee2b021d803375eba95f74}{}void \hyperlink{class_image_scrambler_ac7514d09c9ee2b021d803375eba95f74}{on\+\_\+action\+Scramble\+\_\+\+Image\+\_\+triggered} ()\label{class_image_scrambler_ac7514d09c9ee2b021d803375eba95f74}
44
+
45
+\begin{DoxyCompactList}\small\item\em Function that invokes the \hyperlink{class_image_scrambler_a2a548be139a62d30dea82e2797d51ec7}{on\+\_\+btn\+Scramble\+Image\+\_\+clicked()} function. \end{DoxyCompactList}\item 
46
+\hypertarget{class_image_scrambler_a80b3b6e575f0b24290d71d202d910fed}{}void \hyperlink{class_image_scrambler_a80b3b6e575f0b24290d71d202d910fed}{on\+\_\+action\+Descramble\+\_\+\+Image\+\_\+triggered} ()\label{class_image_scrambler_a80b3b6e575f0b24290d71d202d910fed}
47
+
48
+\begin{DoxyCompactList}\small\item\em Function that invokes the \hyperlink{class_image_scrambler_a7c3ef8d29bfc424d296e95c6acdb427e}{on\+\_\+btn\+Descramble\+Image\+\_\+clicked()} function. \end{DoxyCompactList}\end{DoxyCompactItemize}
49
+\subsection*{Private Attributes}
50
+\begin{DoxyCompactItemize}
51
+\item 
52
+\hypertarget{class_image_scrambler_a9bdaf498f7f4d2b6143aae8ff59ddff3}{}Ui\+::\+Image\+Scrambler $\ast$ {\bfseries ui}\label{class_image_scrambler_a9bdaf498f7f4d2b6143aae8ff59ddff3}
53
+
54
+\item 
55
+Q\+Image \hyperlink{class_image_scrambler_a90f0c2de88b3d790ab25460dc2222a60}{original\+Image}
56
+\item 
57
+Q\+Image \hyperlink{class_image_scrambler_a691bd6839008b2ec5dc3bc2933328cc2}{scrambled\+Image}
58
+\item 
59
+int \hyperlink{class_image_scrambler_a4d5951c83206c8cf7bad2c6a9f7387d8}{scramble\+Depth}
60
+\end{DoxyCompactItemize}
61
+
62
+
63
+\subsection{Member Function Documentation}
64
+\hypertarget{class_image_scrambler_afe4e275f55ee362ea7ce13fcec6f0b26}{}\index{Image\+Scrambler@{Image\+Scrambler}!crop\+Swap@{crop\+Swap}}
65
+\index{crop\+Swap@{crop\+Swap}!Image\+Scrambler@{Image\+Scrambler}}
66
+\subsubsection[{crop\+Swap}]{\setlength{\rightskip}{0pt plus 5cm}void Image\+Scrambler\+::crop\+Swap (
67
+\begin{DoxyParamCaption}
68
+\item[{Q\+Image \&}]{img, }
69
+\item[{int}]{x0, }
70
+\item[{int}]{y0, }
71
+\item[{int}]{x1, }
72
+\item[{int}]{y1, }
73
+\item[{int}]{width, }
74
+\item[{int}]{height}
75
+\end{DoxyParamCaption}
76
+)}\label{class_image_scrambler_afe4e275f55ee362ea7ce13fcec6f0b26}
77
+
78
+
79
+Funtion that crop two squares of equal size of an image or sub image and swaps them. The funtion receives two coords (x0, y0) and (x1, y1) and a width and a height. Then swaps pixel by pixel the square formed from the top left coordinate (x0, y0) to the bottom right coordinate (x0+width, y0+height) with the square formed from the top left coordinate (x1, y1) to the bottom right (x1+width, y1+height). 
80
+
81
+
82
+\begin{DoxyParams}{Parameters}
83
+{\em img} & Reference to the image to swap the squares. \\
84
+\hline
85
+{\em x0} & The top left x coordinate of the first square in the image. \\
86
+\hline
87
+{\em y0} & The top left y coordinate of the first square in the image. \\
88
+\hline
89
+{\em x1} & The top left x coordinate of the second square in the image. \\
90
+\hline
91
+{\em y1} & The top left y coordinate of the second square in the image. \\
92
+\hline
93
+{\em width} & Width of the squares \\
94
+\hline
95
+{\em height} & Height of the squares \\
96
+\hline
97
+\end{DoxyParams}
98
+\hypertarget{class_image_scrambler_a7eb90242d1779b98f48f9abe5ed7d698}{}\index{Image\+Scrambler@{Image\+Scrambler}!Scramble\+Filter@{Scramble\+Filter}}
99
+\index{Scramble\+Filter@{Scramble\+Filter}!Image\+Scrambler@{Image\+Scrambler}}
100
+\subsubsection[{Scramble\+Filter}]{\setlength{\rightskip}{0pt plus 5cm}Q\+Image Image\+Scrambler\+::\+Scramble\+Filter (
101
+\begin{DoxyParamCaption}
102
+\item[{Q\+Image}]{image, }
103
+\item[{int}]{N, }
104
+\item[{int}]{sx, }
105
+\item[{int}]{sy, }
106
+\item[{int}]{width, }
107
+\item[{int}]{height}
108
+\end{DoxyParamCaption}
109
+)}\label{class_image_scrambler_a7eb90242d1779b98f48f9abe5ed7d698}
110
+
111
+
112
+Funtion that recursively scrambles an images by dividing the image in squares (sub images) and then swapping them. The first step the program does is divide the image in two or four squares and swap the squares, the resulting image is divided in four squares and then the same steps are applied recursively to each of the four squares. 
113
+
114
+
115
+\begin{DoxyParams}{Parameters}
116
+{\em image} & The image to scramble \\
117
+\hline
118
+{\em N} & The depth of the recursion. The image will be scrambled in 4$^\wedge$n squares. \\
119
+\hline
120
+{\em sx} & Starting left top x coordinate of the image or sub image to divide \\
121
+\hline
122
+{\em sy} & Starting left top y coodinate of the image or sub image to divide \\
123
+\hline
124
+{\em width} & Width of the received image \\
125
+\hline
126
+{\em height} & Height of the received image \\
127
+\hline
128
+\end{DoxyParams}
129
+\begin{DoxyReturn}{Returns}
130
+the scrambled image 
131
+\end{DoxyReturn}
132
+
133
+
134
+\subsection{Member Data Documentation}
135
+\hypertarget{class_image_scrambler_a90f0c2de88b3d790ab25460dc2222a60}{}\index{Image\+Scrambler@{Image\+Scrambler}!original\+Image@{original\+Image}}
136
+\index{original\+Image@{original\+Image}!Image\+Scrambler@{Image\+Scrambler}}
137
+\subsubsection[{original\+Image}]{\setlength{\rightskip}{0pt plus 5cm}Q\+Image Image\+Scrambler\+::original\+Image\hspace{0.3cm}{\ttfamily [private]}}\label{class_image_scrambler_a90f0c2de88b3d790ab25460dc2222a60}
138
+the original image (imagen original) \hypertarget{class_image_scrambler_a4d5951c83206c8cf7bad2c6a9f7387d8}{}\index{Image\+Scrambler@{Image\+Scrambler}!scramble\+Depth@{scramble\+Depth}}
139
+\index{scramble\+Depth@{scramble\+Depth}!Image\+Scrambler@{Image\+Scrambler}}
140
+\subsubsection[{scramble\+Depth}]{\setlength{\rightskip}{0pt plus 5cm}int Image\+Scrambler\+::scramble\+Depth\hspace{0.3cm}{\ttfamily [private]}}\label{class_image_scrambler_a4d5951c83206c8cf7bad2c6a9f7387d8}
141
+recursive depth (profundidad de la recursion) \hypertarget{class_image_scrambler_a691bd6839008b2ec5dc3bc2933328cc2}{}\index{Image\+Scrambler@{Image\+Scrambler}!scrambled\+Image@{scrambled\+Image}}
142
+\index{scrambled\+Image@{scrambled\+Image}!Image\+Scrambler@{Image\+Scrambler}}
143
+\subsubsection[{scrambled\+Image}]{\setlength{\rightskip}{0pt plus 5cm}Q\+Image Image\+Scrambler\+::scrambled\+Image\hspace{0.3cm}{\ttfamily [private]}}\label{class_image_scrambler_a691bd6839008b2ec5dc3bc2933328cc2}
144
+scrambled image (imagen revuelta) 
145
+
146
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
147
+\item 
148
+Image\+Scrambler.\+h\item 
149
+Filter.\+cpp\item 
150
+Image\+Scrambler.\+cpp\end{DoxyCompactItemize}

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

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

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

@@ -0,0 +1,6 @@
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}{Image\+Scrambler}{\pageref{class_image_scrambler}}{}
5
+\end{DoxyCompactList}
6
+\end{DoxyCompactList}

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

@@ -0,0 +1,151 @@
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 Thu Jun 18 2015 10\+:26\+:23 for My Project by Doxygen }}
75
+\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated on Thu Jun 18 2015 10\+:26\+:23 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 Thu Jun 18 2015 10:26:23}\\
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
+%--- End generated contents ---
142
+
143
+% Index
144
+\backmatter
145
+\newpage
146
+\phantomsection
147
+\clearemptydoublepage
148
+\addcontentsline{toc}{chapter}{Index}
149
+\printindex
150
+
151
+\end{document}

+ 165
- 0
doc/es/html/_image_scrambler_8h_source.html View File

@@ -0,0 +1,165 @@
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 ImageScrambler.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
+</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">ImageScrambler.h</div>  </div>
84
+</div><!--header-->
85
+<div class="contents">
86
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef IMAGESCRAMBLER_H</span></div>
87
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor">#define IMAGESCRAMBLER_H</span></div>
88
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;</div>
89
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;QMainWindow&gt;</span></div>
90
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;QFileDialog&gt;</span></div>
91
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#include &lt;QDir&gt;</span></div>
92
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="preprocessor">#include &lt;QMessageBox&gt;</span></div>
93
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;QShortcut&gt;</span></div>
94
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;QImage&gt;</span></div>
95
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div>
96
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespace_ui.html">Ui</a> {</div>
97
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;    <span class="keyword">class </span><a class="code" href="class_image_scrambler.html">ImageScrambler</a>;</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;</div>
100
+<div class="line"><a name="l00015"></a><span class="lineno"><a class="line" href="class_image_scrambler.html">   15</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_image_scrambler.html">ImageScrambler</a> : <span class="keyword">public</span> QMainWindow</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;    Q_OBJECT</div>
103
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div>
104
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="keyword">public</span>:</div>
105
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div>
106
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;    <span class="keyword">explicit</span> <a class="code" href="class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a">ImageScrambler</a>(QWidget *parent = 0);</div>
107
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div>
108
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <a class="code" href="class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657">~ImageScrambler</a>();</div>
109
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div>
110
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26">cropSwap</a>(QImage &amp;, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>);</div>
111
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div>
112
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;    QImage <a class="code" href="class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698">ScrambleFilter</a>(QImage image, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>);</div>
113
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div>
114
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="keyword">private</span> slots:</div>
115
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div>
116
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4">on_btnLoadNewImage_clicked</a>();</div>
117
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div>
118
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e">on_btnSave_clicked</a>();</div>
119
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div>
120
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7">on_btnScrambleImage_clicked</a>();</div>
121
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;</div>
122
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e">on_btnDescrambleImage_clicked</a>();</div>
123
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;</div>
124
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3">on_actionLoad_Image_triggered</a>();</div>
125
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;</div>
126
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3">on_actionSave_Image_triggered</a>();</div>
127
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div>
128
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74">on_actionScramble_Image_triggered</a>();</div>
129
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div>
130
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed">on_actionDescramble_Image_triggered</a>();</div>
131
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;</div>
132
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="keyword">private</span>:</div>
133
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;    Ui::ImageScrambler *ui;</div>
134
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">  152</a></span>&#160;    QImage <a class="code" href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">originalImage</a>;  </div>
135
+<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">  153</a></span>&#160;    QImage <a class="code" href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">scrambledImage</a>; </div>
136
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">  154</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">scrambleDepth</a> ; </div>
137
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;};</div>
138
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div>
139
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="preprocessor">#endif // MAINWINDOW_H</span></div>
140
+<div class="ttc" id="class_image_scrambler_html_aa0ad5b405d49d1769d7e794f391f8657"><div class="ttname"><a href="class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657">ImageScrambler::~ImageScrambler</a></div><div class="ttdeci">~ImageScrambler()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:45</div></div>
141
+<div class="ttc" id="namespace_ui_html"><div class="ttname"><a href="namespace_ui.html">Ui</a></div><div class="ttdef"><b>Definition:</b> ImageScrambler.h:11</div></div>
142
+<div class="ttc" id="class_image_scrambler_html_a2a548be139a62d30dea82e2797d51ec7"><div class="ttname"><a href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7">ImageScrambler::on_btnScrambleImage_clicked</a></div><div class="ttdeci">void on_btnScrambleImage_clicked()</div><div class="ttdoc">Funcion que invoca la funcion ScrambleFilter para revolver la imagen y cargarla en el GUI...</div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:89</div></div>
143
+<div class="ttc" id="class_image_scrambler_html_aba8b3a0f8d406c9e48e1d0e9e429a60e"><div class="ttname"><a href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e">ImageScrambler::on_btnSave_clicked</a></div><div class="ttdeci">void on_btnSave_clicked()</div><div class="ttdoc">Funcion que guarda la imagen revuelta en la computadora. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:75</div></div>
144
+<div class="ttc" id="class_image_scrambler_html"><div class="ttname"><a href="class_image_scrambler.html">ImageScrambler</a></div><div class="ttdef"><b>Definition:</b> ImageScrambler.h:15</div></div>
145
+<div class="ttc" id="class_image_scrambler_html_a691bd6839008b2ec5dc3bc2933328cc2"><div class="ttname"><a href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">ImageScrambler::scrambledImage</a></div><div class="ttdeci">QImage scrambledImage</div><div class="ttdef"><b>Definition:</b> ImageScrambler.h:153</div></div>
146
+<div class="ttc" id="class_image_scrambler_html_a7eb90242d1779b98f48f9abe5ed7d698"><div class="ttname"><a href="class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698">ImageScrambler::ScrambleFilter</a></div><div class="ttdeci">QImage ScrambleFilter(QImage image, int, int, int, int, int)</div><div class="ttdoc">Funcion que recursivamente revuelve una imagen dividiendola en cuadrados (sub imagenes)\ y luego inte...</div><div class="ttdef"><b>Definition:</b> Filter.cpp:72</div></div>
147
+<div class="ttc" id="class_image_scrambler_html_a7c3ef8d29bfc424d296e95c6acdb427e"><div class="ttname"><a href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e">ImageScrambler::on_btnDescrambleImage_clicked</a></div><div class="ttdeci">void on_btnDescrambleImage_clicked()</div><div class="ttdoc">Funcion que restaura la imagen revuelta a la imagen original. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:104</div></div>
148
+<div class="ttc" id="class_image_scrambler_html_aef30dcfeee03fa8aee60fd7ba89815b3"><div class="ttname"><a href="class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3">ImageScrambler::on_actionSave_Image_triggered</a></div><div class="ttdeci">void on_actionSave_Image_triggered()</div><div class="ttdoc">Funcion que invoca la funcion on_btnSave_clicked(). </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:123</div></div>
149
+<div class="ttc" id="class_image_scrambler_html_afa24bbf9d4f71fd0853478a66d74d5f4"><div class="ttname"><a href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4">ImageScrambler::on_btnLoadNewImage_clicked</a></div><div class="ttdeci">void on_btnLoadNewImage_clicked()</div><div class="ttdoc">Funcion que despliega una ventana de busqueda de archivos para cargar una imagen en el GUI...</div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:56</div></div>
150
+<div class="ttc" id="class_image_scrambler_html_a80b3b6e575f0b24290d71d202d910fed"><div class="ttname"><a href="class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed">ImageScrambler::on_actionDescramble_Image_triggered</a></div><div class="ttdeci">void on_actionDescramble_Image_triggered()</div><div class="ttdoc">Funcion que invoca la funcion on_btnDescrambleImage_clicked(). </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:141</div></div>
151
+<div class="ttc" id="class_image_scrambler_html_a90f0c2de88b3d790ab25460dc2222a60"><div class="ttname"><a href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">ImageScrambler::originalImage</a></div><div class="ttdeci">QImage originalImage</div><div class="ttdef"><b>Definition:</b> ImageScrambler.h:152</div></div>
152
+<div class="ttc" id="class_image_scrambler_html_add8fe476a0557f10a1fdae5b2b8e576a"><div class="ttname"><a href="class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a">ImageScrambler::ImageScrambler</a></div><div class="ttdeci">ImageScrambler(QWidget *parent=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:10</div></div>
153
+<div class="ttc" id="class_image_scrambler_html_a7199f376e7dc4fc4b61145be2dcaaad3"><div class="ttname"><a href="class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3">ImageScrambler::on_actionLoad_Image_triggered</a></div><div class="ttdeci">void on_actionLoad_Image_triggered()</div><div class="ttdoc">Funcion que invoca la funcion on_btnLoadNewImage_clicked(). </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:114</div></div>
154
+<div class="ttc" id="class_image_scrambler_html_afe4e275f55ee362ea7ce13fcec6f0b26"><div class="ttname"><a href="class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26">ImageScrambler::cropSwap</a></div><div class="ttdeci">void cropSwap(QImage &amp;, int, int, int, int, int, int)</div><div class="ttdoc">Function que corta dos cuadrados del mismo tamano de una imagen o sub imagen y luego los intercambia...</div><div class="ttdef"><b>Definition:</b> Filter.cpp:29</div></div>
155
+<div class="ttc" id="class_image_scrambler_html_ac7514d09c9ee2b021d803375eba95f74"><div class="ttname"><a href="class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74">ImageScrambler::on_actionScramble_Image_triggered</a></div><div class="ttdeci">void on_actionScramble_Image_triggered()</div><div class="ttdoc">Funcion que invoca la funcion on_btnScrambleImage_clicked(). </div><div class="ttdef"><b>Definition:</b> ImageScrambler.cpp:132</div></div>
156
+<div class="ttc" id="class_image_scrambler_html_a4d5951c83206c8cf7bad2c6a9f7387d8"><div class="ttname"><a href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">ImageScrambler::scrambleDepth</a></div><div class="ttdeci">int scrambleDepth</div><div class="ttdef"><b>Definition:</b> ImageScrambler.h:154</div></div>
157
+</div><!-- fragment --></div><!-- contents -->
158
+<!-- start footer part -->
159
+<hr class="footer"/><address class="footer"><small>
160
+Generado el Martes, 16 de Junio de 2015 20:51:18 para My Project por &#160;<a href="http://www.doxygen.org/index.html">
161
+<img class="footer" src="doxygen.png" alt="doxygen"/>
162
+</a> 1.8.9.1
163
+</small></address>
164
+</body>
165
+</html>

+ 102
- 0
doc/es/html/annotated.html View 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_image_scrambler.html" target="_self">ImageScrambler</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, 16 de Junio de 2015 20:51:18 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 View File


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


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


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


+ 116
- 0
doc/es/html/class_image_scrambler-members.html View File

@@ -0,0 +1,116 @@
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 los miembros</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><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
+<!-- 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">ImageScrambler Lista de los miembros</div>  </div>
87
+</div><!--header-->
88
+<div class="contents">
89
+
90
+<p>Lista completa de los miembros de <a class="el" href="class_image_scrambler.html">ImageScrambler</a>, incluyendo todos los heredados:</p>
91
+<table class="directory">
92
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26">cropSwap</a>(QImage &amp;, int, int, int, int, int, int)</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"></td></tr>
93
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a">ImageScrambler</a>(QWidget *parent=0)</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
94
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed">on_actionDescramble_Image_triggered</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
95
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3">on_actionLoad_Image_triggered</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
96
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3">on_actionSave_Image_triggered</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
97
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74">on_actionScramble_Image_triggered</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
98
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e">on_btnDescrambleImage_clicked</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
99
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4">on_btnLoadNewImage_clicked</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
100
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e">on_btnSave_clicked</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
101
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7">on_btnScrambleImage_clicked</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span><span class="mlabel">slot</span></td></tr>
102
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">originalImage</a></td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
103
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">scrambleDepth</a></td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
104
+  <tr class="even"><td class="entry"><a class="el" href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">scrambledImage</a></td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
105
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698">ScrambleFilter</a>(QImage image, int, int, int, int, int)</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"></td></tr>
106
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ui</b> (definido en <a class="el" href="class_image_scrambler.html">ImageScrambler</a>)</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"><span class="mlabel">private</span></td></tr>
107
+  <tr><td class="entry"><a class="el" href="class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657">~ImageScrambler</a>()</td><td class="entry"><a class="el" href="class_image_scrambler.html">ImageScrambler</a></td><td class="entry"></td></tr>
108
+</table></div><!-- contents -->
109
+<!-- start footer part -->
110
+<hr class="footer"/><address class="footer"><small>
111
+Generado el Martes, 16 de Junio de 2015 20:51:18 para My Project por &#160;<a href="http://www.doxygen.org/index.html">
112
+<img class="footer" src="doxygen.png" alt="doxygen"/>
113
+</a> 1.8.9.1
114
+</small></address>
115
+</body>
116
+</html>

+ 379
- 0
doc/es/html/class_image_scrambler.html View File

@@ -0,0 +1,379 @@
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: Referencia de la Clase ImageScrambler</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><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
+<!-- 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">Métodos públicos</a> &#124;
87
+<a href="#pri-slots">Slots privados</a> &#124;
88
+<a href="#pri-attribs">Atributos privados</a> &#124;
89
+<a href="class_image_scrambler-members.html">Lista de todos los miembros</a>  </div>
90
+  <div class="headertitle">
91
+<div class="title">Referencia de la Clase ImageScrambler</div>  </div>
92
+</div><!--header-->
93
+<div class="contents">
94
+<div class="dynheader">
95
+Diagrama de herencias de ImageScrambler</div>
96
+<div class="dyncontent">
97
+ <div class="center">
98
+  <img src="class_image_scrambler.png" usemap="#ImageScrambler_map" alt=""/>
99
+  <map id="ImageScrambler_map" name="ImageScrambler_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
+Métodos públicos</h2></td></tr>
105
+<tr class="memitem:add8fe476a0557f10a1fdae5b2b8e576a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add8fe476a0557f10a1fdae5b2b8e576a"></a>
106
+&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#add8fe476a0557f10a1fdae5b2b8e576a">ImageScrambler</a> (QWidget *parent=0)</td></tr>
107
+<tr class="memdesc:add8fe476a0557f10a1fdae5b2b8e576a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br /></td></tr>
108
+<tr class="separator:add8fe476a0557f10a1fdae5b2b8e576a"><td class="memSeparator" colspan="2">&#160;</td></tr>
109
+<tr class="memitem:aa0ad5b405d49d1769d7e794f391f8657"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0ad5b405d49d1769d7e794f391f8657"></a>
110
+&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#aa0ad5b405d49d1769d7e794f391f8657">~ImageScrambler</a> ()</td></tr>
111
+<tr class="memdesc:aa0ad5b405d49d1769d7e794f391f8657"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
112
+<tr class="separator:aa0ad5b405d49d1769d7e794f391f8657"><td class="memSeparator" colspan="2">&#160;</td></tr>
113
+<tr class="memitem:afe4e275f55ee362ea7ce13fcec6f0b26"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#afe4e275f55ee362ea7ce13fcec6f0b26">cropSwap</a> (QImage &amp;, int, int, int, int, int, int)</td></tr>
114
+<tr class="memdesc:afe4e275f55ee362ea7ce13fcec6f0b26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function que corta dos cuadrados del mismo tamano de una imagen o sub imagen y luego los intercambia. La funcion recibe dos coordenadas (x0,y0) y (x1,y1) y un ancho y un alto. Entonces intercambia pixel por pixel el cuadrado que se forma desde la coordenada en el tope a la izquierda (x0,y0) a la coordenada abajo derecha (x0+ancho, y0+alto) con el cuadrado formado desde la coordenada en el tope izquierda (x1, y1) hasta la coordenada abajo derecha (x1+width, y1+height).  <a href="#afe4e275f55ee362ea7ce13fcec6f0b26">Más...</a><br /></td></tr>
115
+<tr class="separator:afe4e275f55ee362ea7ce13fcec6f0b26"><td class="memSeparator" colspan="2">&#160;</td></tr>
116
+<tr class="memitem:a7eb90242d1779b98f48f9abe5ed7d698"><td class="memItemLeft" align="right" valign="top">QImage&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a7eb90242d1779b98f48f9abe5ed7d698">ScrambleFilter</a> (QImage image, int, int, int, int, int)</td></tr>
117
+<tr class="memdesc:a7eb90242d1779b98f48f9abe5ed7d698"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funcion que recursivamente revuelve una imagen dividiendola en cuadrados (sub imagenes)\ y luego intercambiandolas. El primer paso que el programa hace es dividir la imagen en two o cuatro cuadrados e intercambia los cuadrados, el resultado de la imagen se divide en cuatros cuadros y cada uno de los cuadros se le aplican los mismos pasos recursivamente.  <a href="#a7eb90242d1779b98f48f9abe5ed7d698">Más...</a><br /></td></tr>
118
+<tr class="separator:a7eb90242d1779b98f48f9abe5ed7d698"><td class="memSeparator" colspan="2">&#160;</td></tr>
119
+</table><table class="memberdecls">
120
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-slots"></a>
121
+Slots privados</h2></td></tr>
122
+<tr class="memitem:afa24bbf9d4f71fd0853478a66d74d5f4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa24bbf9d4f71fd0853478a66d74d5f4"></a>
123
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4">on_btnLoadNewImage_clicked</a> ()</td></tr>
124
+<tr class="memdesc:afa24bbf9d4f71fd0853478a66d74d5f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funcion que despliega una ventana de busqueda de archivos para cargar una imagen en el GUI. <br /></td></tr>
125
+<tr class="separator:afa24bbf9d4f71fd0853478a66d74d5f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
126
+<tr class="memitem:aba8b3a0f8d406c9e48e1d0e9e429a60e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aba8b3a0f8d406c9e48e1d0e9e429a60e"></a>
127
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e">on_btnSave_clicked</a> ()</td></tr>
128
+<tr class="memdesc:aba8b3a0f8d406c9e48e1d0e9e429a60e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funcion que guarda la imagen revuelta en la computadora. <br /></td></tr>
129
+<tr class="separator:aba8b3a0f8d406c9e48e1d0e9e429a60e"><td class="memSeparator" colspan="2">&#160;</td></tr>
130
+<tr class="memitem:a2a548be139a62d30dea82e2797d51ec7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a548be139a62d30dea82e2797d51ec7"></a>
131
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7">on_btnScrambleImage_clicked</a> ()</td></tr>
132
+<tr class="memdesc:a2a548be139a62d30dea82e2797d51ec7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funcion que invoca la funcion ScrambleFilter para revolver la imagen y cargarla en el GUI. <br /></td></tr>
133
+<tr class="separator:a2a548be139a62d30dea82e2797d51ec7"><td class="memSeparator" colspan="2">&#160;</td></tr>
134
+<tr class="memitem:a7c3ef8d29bfc424d296e95c6acdb427e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c3ef8d29bfc424d296e95c6acdb427e"></a>
135
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e">on_btnDescrambleImage_clicked</a> ()</td></tr>
136
+<tr class="memdesc:a7c3ef8d29bfc424d296e95c6acdb427e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funcion que restaura la imagen revuelta a la imagen original. <br /></td></tr>
137
+<tr class="separator:a7c3ef8d29bfc424d296e95c6acdb427e"><td class="memSeparator" colspan="2">&#160;</td></tr>
138
+<tr class="memitem:a7199f376e7dc4fc4b61145be2dcaaad3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7199f376e7dc4fc4b61145be2dcaaad3"></a>
139
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a7199f376e7dc4fc4b61145be2dcaaad3">on_actionLoad_Image_triggered</a> ()</td></tr>
140
+<tr class="memdesc:a7199f376e7dc4fc4b61145be2dcaaad3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funcion que invoca la funcion <a class="el" href="class_image_scrambler.html#afa24bbf9d4f71fd0853478a66d74d5f4" title="Funcion que despliega una ventana de busqueda de archivos para cargar una imagen en el GUI...">on_btnLoadNewImage_clicked()</a>. <br /></td></tr>
141
+<tr class="separator:a7199f376e7dc4fc4b61145be2dcaaad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
142
+<tr class="memitem:aef30dcfeee03fa8aee60fd7ba89815b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aef30dcfeee03fa8aee60fd7ba89815b3"></a>
143
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#aef30dcfeee03fa8aee60fd7ba89815b3">on_actionSave_Image_triggered</a> ()</td></tr>
144
+<tr class="memdesc:aef30dcfeee03fa8aee60fd7ba89815b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funcion que invoca la funcion <a class="el" href="class_image_scrambler.html#aba8b3a0f8d406c9e48e1d0e9e429a60e" title="Funcion que guarda la imagen revuelta en la computadora. ">on_btnSave_clicked()</a>. <br /></td></tr>
145
+<tr class="separator:aef30dcfeee03fa8aee60fd7ba89815b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
146
+<tr class="memitem:ac7514d09c9ee2b021d803375eba95f74"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7514d09c9ee2b021d803375eba95f74"></a>
147
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#ac7514d09c9ee2b021d803375eba95f74">on_actionScramble_Image_triggered</a> ()</td></tr>
148
+<tr class="memdesc:ac7514d09c9ee2b021d803375eba95f74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funcion que invoca la funcion <a class="el" href="class_image_scrambler.html#a2a548be139a62d30dea82e2797d51ec7" title="Funcion que invoca la funcion ScrambleFilter para revolver la imagen y cargarla en el GUI...">on_btnScrambleImage_clicked()</a>. <br /></td></tr>
149
+<tr class="separator:ac7514d09c9ee2b021d803375eba95f74"><td class="memSeparator" colspan="2">&#160;</td></tr>
150
+<tr class="memitem:a80b3b6e575f0b24290d71d202d910fed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80b3b6e575f0b24290d71d202d910fed"></a>
151
+void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a80b3b6e575f0b24290d71d202d910fed">on_actionDescramble_Image_triggered</a> ()</td></tr>
152
+<tr class="memdesc:a80b3b6e575f0b24290d71d202d910fed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Funcion que invoca la funcion <a class="el" href="class_image_scrambler.html#a7c3ef8d29bfc424d296e95c6acdb427e" title="Funcion que restaura la imagen revuelta a la imagen original. ">on_btnDescrambleImage_clicked()</a>. <br /></td></tr>
153
+<tr class="separator:a80b3b6e575f0b24290d71d202d910fed"><td class="memSeparator" colspan="2">&#160;</td></tr>
154
+</table><table class="memberdecls">
155
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
156
+Atributos privados</h2></td></tr>
157
+<tr class="memitem:a9bdaf498f7f4d2b6143aae8ff59ddff3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9bdaf498f7f4d2b6143aae8ff59ddff3"></a>
158
+Ui::ImageScrambler *&#160;</td><td class="memItemRight" valign="bottom"><b>ui</b></td></tr>
159
+<tr class="separator:a9bdaf498f7f4d2b6143aae8ff59ddff3"><td class="memSeparator" colspan="2">&#160;</td></tr>
160
+<tr class="memitem:a90f0c2de88b3d790ab25460dc2222a60"><td class="memItemLeft" align="right" valign="top">QImage&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a90f0c2de88b3d790ab25460dc2222a60">originalImage</a></td></tr>
161
+<tr class="separator:a90f0c2de88b3d790ab25460dc2222a60"><td class="memSeparator" colspan="2">&#160;</td></tr>
162
+<tr class="memitem:a691bd6839008b2ec5dc3bc2933328cc2"><td class="memItemLeft" align="right" valign="top">QImage&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a691bd6839008b2ec5dc3bc2933328cc2">scrambledImage</a></td></tr>
163
+<tr class="separator:a691bd6839008b2ec5dc3bc2933328cc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
164
+<tr class="memitem:a4d5951c83206c8cf7bad2c6a9f7387d8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_image_scrambler.html#a4d5951c83206c8cf7bad2c6a9f7387d8">scrambleDepth</a></td></tr>
165
+<tr class="separator:a4d5951c83206c8cf7bad2c6a9f7387d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
166
+</table>
167
+<h2 class="groupheader">Documentación de las funciones miembro</h2>
168
+<a class="anchor" id="afe4e275f55ee362ea7ce13fcec6f0b26"></a>
169
+<div class="memitem">
170
+<div class="memproto">
171
+      <table class="memname">
172
+        <tr>
173
+          <td class="memname">void ImageScrambler::cropSwap </td>
174
+          <td>(</td>
175
+          <td class="paramtype">QImage &amp;&#160;</td>
176
+          <td class="paramname"><em>img</em>, </td>
177
+        </tr>
178
+        <tr>
179
+          <td class="paramkey"></td>
180
+          <td></td>
181
+          <td class="paramtype">int&#160;</td>
182
+          <td class="paramname"><em>x0</em>, </td>
183
+        </tr>
184
+        <tr>
185
+          <td class="paramkey"></td>
186
+          <td></td>
187
+          <td class="paramtype">int&#160;</td>
188
+          <td class="paramname"><em>y0</em>, </td>
189
+        </tr>
190
+        <tr>
191
+          <td class="paramkey"></td>
192
+          <td></td>
193
+          <td class="paramtype">int&#160;</td>
194
+          <td class="paramname"><em>x1</em>, </td>
195
+        </tr>
196
+        <tr>
197
+          <td class="paramkey"></td>
198
+          <td></td>
199
+          <td class="paramtype">int&#160;</td>
200
+          <td class="paramname"><em>y1</em>, </td>
201
+        </tr>
202
+        <tr>
203
+          <td class="paramkey"></td>
204
+          <td></td>
205
+          <td class="paramtype">int&#160;</td>
206
+          <td class="paramname"><em>width</em>, </td>
207
+        </tr>
208
+        <tr>
209
+          <td class="paramkey"></td>
210
+          <td></td>
211
+          <td class="paramtype">int&#160;</td>
212
+          <td class="paramname"><em>height</em>&#160;</td>
213
+        </tr>
214
+        <tr>
215
+          <td></td>
216
+          <td>)</td>
217
+          <td></td><td></td>
218
+        </tr>
219
+      </table>
220
+</div><div class="memdoc">
221
+
222
+<p>Function que corta dos cuadrados del mismo tamano de una imagen o sub imagen y luego los intercambia. La funcion recibe dos coordenadas (x0,y0) y (x1,y1) y un ancho y un alto. Entonces intercambia pixel por pixel el cuadrado que se forma desde la coordenada en el tope a la izquierda (x0,y0) a la coordenada abajo derecha (x0+ancho, y0+alto) con el cuadrado formado desde la coordenada en el tope izquierda (x1, y1) hasta la coordenada abajo derecha (x1+width, y1+height). </p>
223
+<dl class="params"><dt>Parámetros</dt><dd>
224
+  <table class="params">
225
+    <tr><td class="paramname">img</td><td>Referencia a la imagen a la que se le van a intercambiar los cuadros. </td></tr>
226
+    <tr><td class="paramname">x0</td><td>La coordenada arriba izquierda x del primer cuadrado en la imagen. </td></tr>
227
+    <tr><td class="paramname">y0</td><td>La coordenada arriba izquierda y del primer cuadrado en la imagen. </td></tr>
228
+    <tr><td class="paramname">x1</td><td>La coordenada arriba izquierda x del segundo cuadrado en la imagen. </td></tr>
229
+    <tr><td class="paramname">y1</td><td>La coordenada arriba izquierda y del segundo cuadrado en la imagen. </td></tr>
230
+    <tr><td class="paramname">width</td><td>ancho de los cuadrados </td></tr>
231
+    <tr><td class="paramname">height</td><td>altura de los cuadrados </td></tr>
232
+  </table>
233
+  </dd>
234
+</dl>
235
+
236
+</div>
237
+</div>
238
+<a class="anchor" id="a7eb90242d1779b98f48f9abe5ed7d698"></a>
239
+<div class="memitem">
240
+<div class="memproto">
241
+      <table class="memname">
242
+        <tr>
243
+          <td class="memname">QImage ImageScrambler::ScrambleFilter </td>
244
+          <td>(</td>
245
+          <td class="paramtype">QImage&#160;</td>
246
+          <td class="paramname"><em>image</em>, </td>
247
+        </tr>
248
+        <tr>
249
+          <td class="paramkey"></td>
250
+          <td></td>
251
+          <td class="paramtype">int&#160;</td>
252
+          <td class="paramname"><em>N</em>, </td>
253
+        </tr>
254
+        <tr>
255
+          <td class="paramkey"></td>
256
+          <td></td>
257
+          <td class="paramtype">int&#160;</td>
258
+          <td class="paramname"><em>sx</em>, </td>
259
+        </tr>
260
+        <tr>
261
+          <td class="paramkey"></td>
262
+          <td></td>
263
+          <td class="paramtype">int&#160;</td>
264
+          <td class="paramname"><em>sy</em>, </td>
265
+        </tr>
266
+        <tr>
267
+          <td class="paramkey"></td>
268
+          <td></td>
269
+          <td class="paramtype">int&#160;</td>
270
+          <td class="paramname"><em>width</em>, </td>
271
+        </tr>
272
+        <tr>
273
+          <td class="paramkey"></td>
274
+          <td></td>
275
+          <td class="paramtype">int&#160;</td>
276
+          <td class="paramname"><em>height</em>&#160;</td>
277
+        </tr>
278
+        <tr>
279
+          <td></td>
280
+          <td>)</td>
281
+          <td></td><td></td>
282
+        </tr>
283
+      </table>
284
+</div><div class="memdoc">
285
+
286
+<p>Funcion que recursivamente revuelve una imagen dividiendola en cuadrados (sub imagenes)\ y luego intercambiandolas. El primer paso que el programa hace es dividir la imagen en two o cuatro cuadrados e intercambia los cuadrados, el resultado de la imagen se divide en cuatros cuadros y cada uno de los cuadros se le aplican los mismos pasos recursivamente. </p>
287
+<dl class="params"><dt>Parámetros</dt><dd>
288
+  <table class="params">
289
+    <tr><td class="paramname">image</td><td>The image a revolver </td></tr>
290
+    <tr><td class="paramname">N</td><td>La profundidad de la recursion. La imagen se revolvera en 4^N cuadrados. </td></tr>
291
+    <tr><td class="paramname">sx</td><td>La coordenada arriba izquierda x inicial de la imagen o sub imagen a dividir. </td></tr>
292
+    <tr><td class="paramname">sy</td><td>La coordenada arriba izquierda y inicial de la imagen o sub imagen a dividir. </td></tr>
293
+    <tr><td class="paramname">width</td><td>Ancho de la imagen recibida </td></tr>
294
+    <tr><td class="paramname">height</td><td>Altura de la imagen recibida </td></tr>
295
+  </table>
296
+  </dd>
297
+</dl>
298
+<dl class="section return"><dt>Devuelve</dt><dd>la imagen revuelta </dd></dl>
299
+
300
+</div>
301
+</div>
302
+<h2 class="groupheader">Documentación de los datos miembro</h2>
303
+<a class="anchor" id="a90f0c2de88b3d790ab25460dc2222a60"></a>
304
+<div class="memitem">
305
+<div class="memproto">
306
+<table class="mlabels">
307
+  <tr>
308
+  <td class="mlabels-left">
309
+      <table class="memname">
310
+        <tr>
311
+          <td class="memname">QImage ImageScrambler::originalImage</td>
312
+        </tr>
313
+      </table>
314
+  </td>
315
+  <td class="mlabels-right">
316
+<span class="mlabels"><span class="mlabel">private</span></span>  </td>
317
+  </tr>
318
+</table>
319
+</div><div class="memdoc">
320
+<p>the original image (imagen original) </p>
321
+
322
+</div>
323
+</div>
324
+<a class="anchor" id="a4d5951c83206c8cf7bad2c6a9f7387d8"></a>
325
+<div class="memitem">
326
+<div class="memproto">
327
+<table class="mlabels">
328
+  <tr>
329
+  <td class="mlabels-left">
330
+      <table class="memname">
331
+        <tr>
332
+          <td class="memname">int ImageScrambler::scrambleDepth</td>
333
+        </tr>
334
+      </table>
335
+  </td>
336
+  <td class="mlabels-right">
337
+<span class="mlabels"><span class="mlabel">private</span></span>  </td>
338
+  </tr>
339
+</table>
340
+</div><div class="memdoc">
341
+<p>recursive depth (profundidad de la recursion) </p>
342
+
343
+</div>
344
+</div>
345
+<a class="anchor" id="a691bd6839008b2ec5dc3bc2933328cc2"></a>
346
+<div class="memitem">
347
+<div class="memproto">
348
+<table class="mlabels">
349
+  <tr>
350
+  <td class="mlabels-left">
351
+      <table class="memname">
352
+        <tr>
353
+          <td class="memname">QImage ImageScrambler::scrambledImage</td>
354
+        </tr>
355
+      </table>
356
+  </td>
357
+  <td class="mlabels-right">
358
+<span class="mlabels"><span class="mlabel">private</span></span>  </td>
359
+  </tr>
360
+</table>
361
+</div><div class="memdoc">
362
+<p>scrambled image (imagen revuelta) </p>
363
+
364
+</div>
365
+</div>
366
+<hr/>La documentación para esta clase fue generada a partir de los siguientes ficheros:<ul>
367
+<li><a class="el" href="_image_scrambler_8h_source.html">ImageScrambler.h</a></li>
368
+<li>Filter.cpp</li>
369
+<li>ImageScrambler.cpp</li>
370
+</ul>
371
+</div><!-- contents -->
372
+<!-- start footer part -->
373
+<hr class="footer"/><address class="footer"><small>
374
+Generado el Martes, 16 de Junio de 2015 20:51:18 para My Project por &#160;<a href="http://www.doxygen.org/index.html">
375
+<img class="footer" src="doxygen.png" alt="doxygen"/>
376
+</a> 1.8.9.1
377
+</small></address>
378
+</body>
379
+</html>

BIN
doc/es/html/class_image_scrambler.png View File


+ 106
- 0
doc/es/html/classes.html View 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: Índice 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><a href="annotated.html"><span>Lista&#160;de&#160;clases</span></a></li>
64
+      <li class="current"><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">Índice de clases</div>  </div>
87
+</div><!--header-->
88
+<div class="contents">
89
+<div class="qindex"><a class="qindex" href="#letter_I">I</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_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;I&#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_image_scrambler.html">ImageScrambler</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_I">I</a></div>
98
+</div><!-- contents -->
99
+<!-- start footer part -->
100
+<hr class="footer"/><address class="footer"><small>
101
+Generado el Martes, 16 de Junio de 2015 20:51:18 para My Project por &#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/es/html/closed.png View File


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


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


+ 0
- 0
doc/es/html/doxygen.png View File


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