|      1 /* | 
        | 
|      2  *  LDForge: LDraw parts authoring CAD | 
        | 
|      3  *  Copyright (C) 2013 Santeri Piippo | 
        | 
|      4  * | 
        | 
|      5  *  This program is free software: you can redistribute it and/or modify | 
        | 
|      6  *  it under the terms of the GNU General Public License as published by | 
        | 
|      7  *  the Free Software Foundation, either version 3 of the License, or | 
        | 
|      8  *  (at your option) any later version. | 
        | 
|      9  * | 
        | 
|     10  *  This program is distributed in the hope that it will be useful, | 
        | 
|     11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of | 
        | 
|     12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
        | 
|     13  *  GNU General Public License for more details. | 
        | 
|     14  * | 
        | 
|     15  *  You should have received a copy of the GNU General Public License | 
        | 
|     16  *  along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
        | 
|     17  */ | 
        | 
|     18  | 
        | 
|     19 #include <QDialog> | 
        | 
|     20 #include <QTextEdit> | 
        | 
|     21 #include <QDialogButtonBox> | 
        | 
|     22 #include <QBoxLayout> | 
        | 
|     23 #include "common.h" | 
        | 
|     24 #include "types.h" | 
        | 
|     25  | 
        | 
|     26 // ============================================================================= | 
        | 
|     27 // ----------------------------------------------------------------------------- | 
        | 
|     28 class DocumentViewer : public QDialog | 
        | 
|     29 {	public: | 
        | 
|     30 		explicit DocumentViewer (QWidget* parent = null, Qt::WindowFlags f = 0) : QDialog (parent, f) | 
        | 
|     31 		{	te_text = new QTextEdit (this); | 
        | 
|     32 			te_text->setMinimumSize (QSize (400, 300)); | 
        | 
|     33 			te_text->setReadOnly (true); | 
        | 
|     34  | 
        | 
|     35 			QDialogButtonBox* bbx_buttons = new QDialogButtonBox (QDialogButtonBox::Close); | 
        | 
|     36 			QVBoxLayout* layout = new QVBoxLayout (this); | 
        | 
|     37 			layout->addWidget (te_text); | 
        | 
|     38 			layout->addWidget (bbx_buttons); | 
        | 
|     39  | 
        | 
|     40 			connect (bbx_buttons, SIGNAL (rejected()), this, SLOT (reject())); | 
        | 
|     41 		} | 
        | 
|     42  | 
        | 
|     43 		void setText (const char* text) | 
        | 
|     44 		{	te_text->setText (text); | 
        | 
|     45 		} | 
        | 
|     46  | 
        | 
|     47 	private: | 
        | 
|     48 		QTextEdit* te_text; | 
        | 
|     49 }; | 
        | 
|     50  | 
        | 
|     51 const char* g_docs_overlays = | 
        | 
|     52 	"<h1>Overlay images</h1><br />" | 
        | 
|     53 	"<p>" APPNAME " supports drawing transparent images over the part model. This " | 
        | 
|     54 	"can be used to have, for instance, a photo of the part overlaid on top of the " | 
        | 
|     55 	"model and use it for drawing curves somewhat accurately.</p>" | 
        | 
|     56 	"<p>For this purpose, a specific photo has to be taken of the part; it should " | 
        | 
|     57 	"represent the part as true as possible to the actual camera used for editing. " | 
        | 
|     58 	"The image should be taken from straight above the part, at as an orthogonal " | 
        | 
|     59 	"angle as possible. It is recommended to take a lot of pictures this way and " | 
        | 
|     60 	"select the best candidate.</p>" | 
        | 
|     61 	"<p>The image should then be cropped with the knowledge of the image's LDU " | 
        | 
|     62 	"dimensions in mind. The offset should then be identified in the image in pixels.</p>" | 
        | 
|     63 	"<p>Finally, use the \"Set Overlay Image\" dialog and fill in the details. The " | 
        | 
|     64 	"overlay image should then be ready for use."; | 
        | 
|     65  | 
        | 
|     66 // ============================================================================= | 
        | 
|     67 // ----------------------------------------------------------------------------- | 
        | 
|     68 void showDocumentation (const char* text) | 
        | 
|     69 {	DocumentViewer dlg; | 
        | 
|     70 	dlg.setText (text); | 
        | 
|     71 	dlg.exec(); | 
        | 
|     72 } | 
        |