From: <bru...@us...> - 2008-07-24 22:00:56
|
Revision: 3227 http://hugin.svn.sourceforge.net/hugin/?rev=3227&view=rev Author: brunopostle Date: 2008-07-24 22:00:54 +0000 (Thu, 24 Jul 2008) Log Message: ----------- Add bulgarian translation (Svetoslav Stefanov) Modified Paths: -------------- hugin/trunk/AUTHORS Added Paths: ----------- hugin/trunk/src/translations/bg.po Modified: hugin/trunk/AUTHORS =================================================================== --- hugin/trunk/AUTHORS 2008-07-24 21:53:07 UTC (rev 3226) +++ hugin/trunk/AUTHORS 2008-07-24 22:00:54 UTC (rev 3227) @@ -44,6 +44,7 @@ Jorge González González Spanish Milo Casagrande Italian Homin Lee Korean + Svetoslav Stefanov Bulgarian The camera response estimation uses the EMoR response model developed at the Computer Vision Laboratory of the Columbia University. Added: hugin/trunk/src/translations/bg.po =================================================================== --- hugin/trunk/src/translations/bg.po (rev 0) +++ hugin/trunk/src/translations/bg.po 2008-07-24 22:00:54 UTC (rev 3227) @@ -0,0 +1,5107 @@ +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR Pablo dAngelo. +# +msgid "" +msgstr "" +"Project-Id-Version: bg\n" +"Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?group_id=77506&atid=550441\n" +"POT-Creation-Date: 2008-05-22 20:33+0200\n" +"PO-Revision-Date: 2008-07-10 10:12+0200\n" +"Last-Translator: Svetoslav Stefanov <lfu...@gm...>\n" +"Language-Team: Bulgarian <bg...@li...>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Poedit-Language: Bulgarian\n" +"X-Poedit-Country: BULGARIA\n" + +#: hugin1/base_wx/huginConfig.cpp:47 +#: hugin1/base_wx/huginConfig.cpp:82 +#, c-format +msgid "External program %s not found as specified in preferences, reverting to bundled version" +msgstr "Външната програма %s, указана в параметрите, не беше намерена. Връщане към включената в hugin." + +#: hugin1/base_wx/huginConfig.cpp:47 +#: hugin1/base_wx/huginConfig.cpp:57 +#: hugin1/base_wx/huginConfig.cpp:69 +#: hugin1/base_wx/huginConfig.cpp:82 +#: hugin1/base_wx/RunStitchPanel.cpp:239 +#: hugin1/hugin/AssistantPanel.cpp:376 +#: hugin1/hugin/AssistantPanel.cpp:553 +#: hugin1/hugin/OptimizePhotometricPanel.cpp:488 +#: hugin1/hugin/OptimizePhotometricPanel.cpp:508 +msgid "Error" +msgstr "Грешка" + +#: hugin1/base_wx/huginConfig.cpp:57 +#: hugin1/base_wx/huginConfig.cpp:69 +#: hugin1/base_wx/RunStitchPanel.cpp:239 +#, c-format +msgid "External program %s not found in the bundle, reverting to system path" +msgstr "Външната програма %s не беше намерена. Връщане към включената в hugin." + +#: hugin1/base_wx/ImageCache.cpp:539 +#, c-format +msgid "Loading image %s" +msgstr "Зареждане на изображението %s" + +#: hugin1/base_wx/ImageCache.cpp:683 +#, c-format +msgid "Error reading image: %s" +msgstr "Грешка при четене на изображението: %s" + +#: hugin1/base_wx/ImageCache.cpp:691 +#: hugin_base/huginapp/ImageCache.cpp:660 +msgid "Cannot load image: " +msgstr "Изображението не може да се зареди: " + +#: hugin1/base_wx/ImageCache.cpp:719 +#, c-format +msgid "Scaling image %s" +msgstr "Мащабиране на изображението %s" + +#: hugin1/base_wx/ImageCache.cpp:820 +#, c-format +msgid "Creating grayscale %s" +msgstr "Създава се изображение %s в нюанс на сивото" + +#: hugin1/base_wx/ImageCache.cpp:838 +#, c-format +msgid "Creating pyramid image for %s, level %d" +msgstr "Създаване на пирамидално изображение за %s, ниво %d" + +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:137 +#, c-format +msgid "Failed to kill process %ld, error %d: %s" +msgstr "Процесът %ld не беше убит, грешка %d: %s" + +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:430 +#: hugin1/stitch_project/hugin_stitch_project.cpp:123 +#: translations/xrc.cpp:85 +#: translations/xrc.cpp:516 +#: xrc.cpp:85 +#: xrc.cpp:516 +msgid "Cancel" +msgstr "Отказ" + +#: hugin1/base_wx/MyExternalCmdExecDialog.h:171 +msgid "Command Line Progress" +msgstr "Прогрес на командния ред" + +#: hugin1/base_wx/MyProgressDialog.cpp:36 +msgid "Elapsed time : " +msgstr "Изминало време : " + +#: hugin1/base_wx/MyProgressDialog.h:98 +msgid "Optimizing Panorama" +msgstr "Оптимизиране на панорамата" + +#: hugin1/base_wx/platform.h:39 +msgid "All Image files|*.jpg;*.JPG;*jpeg;*JPEG;*.tif;*.TIF;*.tiff;*.TIFF;*.png;*.PNG;*.bmp;*.BMP;*.gif;*.GIF;*.pnm;*.PNM;*.sun;*.viff;*.hdr|JPEG files (*.jpg,*.jpeg)|*.jpg;*.JPG;*.jpeg;*.JPEG|All files (*)|*" +msgstr "Всички изображения|*.jpg;*.JPG;*jpeg;*JPEG;*.tif;*.TIF;*.tiff;*.TIFF;*.png;*.PNG;*.bmp;*.BMP;*.gif;*.GIF;*.pnm;*.PNM;*.sun;*.viff;*.hdr|Файлове JPEG (*.jpg,*.jpeg)|*.jpg;*.JPG;*.jpeg;*.JPEG|Всички файлове (*)|*" + +#: hugin1/base_wx/PTWXDlg.cpp:63 +#: hugin1/base_wx/PTWXDlg.cpp:81 +#: hugin1/base_wx/PTWXDlg.cpp:133 +#: translations/xrc.cpp:518 +#: xrc.cpp:518 +msgid "Panorama Tools" +msgstr "Panorama Tools" + +#: hugin1/base_wx/PTWXDlg.cpp:82 +#: hugin1/base_wx/PTWXDlg.cpp:134 +msgid "" +"\n" +"\n" +"\n" +msgstr "" +"\n" +"\n" +"\n" + +#: hugin1/base_wx/RunStitchPanel.cpp:106 +msgid "Could not open project file:" +msgstr "Проектният файл не може да бъде отворен:" + +#: hugin1/base_wx/RunStitchPanel.cpp:116 +#: hugin1/nona_gui/nona_gui.cpp:232 +#, c-format +msgid "could not open script : %s" +msgstr "Скриптът не може да се отвори: %s" + +#: hugin1/base_wx/RunStitchPanel.cpp:133 +#: hugin1/nona_gui/nona_gui.cpp:239 +#, c-format +msgid "error while parsing panotools script: %s" +msgstr "Грешка при синтактическия разбор на скрипта panotools: %s" + +#: hugin1/base_wx/RunStitchPanel.cpp:169 +#: hugin1/base_wx/RunStitchPanel.cpp:187 +#: hugin1/hugin/PanoPanel.cpp:764 +msgid "Could not create temporary file" +msgstr "Не може да бъде създаден временен файл" + +#: hugin1/base_wx/RunStitchPanel.cpp:221 +msgid "" +"Overwrite existing images?\n" +"\n" +msgstr "" +"Презаписване на съществуващите изображения?\n" +"\n" + +#: hugin1/base_wx/RunStitchPanel.cpp:221 +msgid "Overwrite existing images" +msgstr "Презаписване на съществуващите изображения" + +#: hugin1/base_wx/RunStitchPanel.cpp:232 +#, c-format +msgid "Stitching %s" +msgstr "Събиране на %s" + +#: hugin1/base_wx/RunStitchPanel.cpp:248 +#, c-format +msgid "" +"Error while stitching project\n" +"%s" +msgstr "" +"Грешка при събирането на проекта\n" +"%s" + +#: hugin1/base_wx/RunStitchPanel.cpp:249 +#: hugin1/base_wx/RunStitchPanel.cpp:254 +#: hugin1/hugin/NonaStitcherPanel.cpp:326 +#: hugin1/hugin/NonaStitcherPanel.cpp:331 +#: hugin1/stitch_project/hugin_stitch_project.cpp:172 +msgid "Error during stitching" +msgstr "Грешка по време на събирането" + +#: hugin1/hugin/AssistantPanel.cpp:241 +msgid "Please load images by pressing on the Load images button." +msgstr "Натиснете бутон «Зареждане на изображения» за добавяне на изображения за панорамата." + +#: hugin1/hugin/AssistantPanel.cpp:271 +#, c-format +msgid "%d images loaded." +msgstr "Бяха заредени %d изображения." + +#: hugin1/hugin/AssistantPanel.cpp:305 +#, c-format +msgid "Images are connected by %d control points.\n" +msgstr "Изображенията са свързани чрез %d контролни точки.\n" + +#: hugin1/hugin/AssistantPanel.cpp:314 +#, c-format +msgid "%d unconnected image groups found: " +msgstr "Намерени са %d несвързани групи изображения:" + +#: hugin1/hugin/AssistantPanel.cpp:315 +msgid "Please use the Control Points tab to connect all images with control points.\n" +msgstr "Използвайте подпрозореца «Контролни точки» за да свържете всички снимки с контролни точки.\n" + +#: hugin1/hugin/AssistantPanel.cpp:318 +msgid "Images or control points have changed, new alignment is needed." +msgstr "Снимки или контролни точки са променени. Трябва да се направи повторно изравняване." + +#: hugin1/hugin/AssistantPanel.cpp:329 +msgid "Very good fit." +msgstr "Много добро съвпадение." + +#: hugin1/hugin/AssistantPanel.cpp:331 +msgid "Good fit." +msgstr "Добро съвпадение." + +#: hugin1/hugin/AssistantPanel.cpp:333 +msgid "Bad fit, some control points might be bad, or there are parallax and movement errors" +msgstr "Лошо съвпадение, някои контролни точки са поставени неправилно или има грешки породени от разминаване между визьора и обектива или от движение." + +#: hugin1/hugin/AssistantPanel.cpp:335 +msgid "Very bad fit. Check for bad control points, lens parameters, or images with parallax or movement. The optimizer might have failed. Manual intervention required." +msgstr "Много лошо съвпадение. Проверете дали няма несъвпадащи контролни точки, некоректни параметри на обектива или изображения с разминаване между визьора и обектива или движение. Оптимизирането на панорамата може да не е успешно. Има нужда от ръчна настройка." + +#: hugin1/hugin/AssistantPanel.cpp:337 +#, c-format +msgid "Mean error after optimization: %.1f pixel, max: %.1f\n" +msgstr "Средна грешка след оптимизацията: %.1f пиксела, макс.: %.1f\n" + +#: hugin1/hugin/AssistantPanel.cpp:376 +msgid "" +"At least two images are required.\n" +"Please add more images." +msgstr "" +"Необходими са поне две изображения.\n" +"Моля добавете още изображения." + +#: hugin1/hugin/AssistantPanel.cpp:396 +msgid "Aligning images" +msgstr "Изравняване на изображенията" + +#: hugin1/hugin/AssistantPanel.cpp:396 +msgid "Finding corresponding points" +msgstr "Намиране на съответстващите точки" + +#: hugin1/hugin/AssistantPanel.cpp:406 +msgid "Determining placement of the images" +msgstr "Определяне на положението на изображенията" + +#: hugin1/hugin/AssistantPanel.cpp:421 +#, c-format +msgid "Warning %d unconnected image groups found:" +msgstr "Предупреждение, намерени са %d несвързани групи снимки:" + +#: hugin1/hugin/AssistantPanel.cpp:422 +msgid "" +"Please create control points between unconnected images using the Control Points tab.\n" +"\n" +"After adding the points, press the \"Align\" button again" +msgstr "" +"Създайте контролни точки между несвързаните \n" +"изображения като използвате подпрозореца «Контролни точки».\n" +"\n" +"След добавянето им, отново натиснете бутон «Изравняване»." + +#: hugin1/hugin/AssistantPanel.cpp:457 +msgid "Leveling the panorama" +msgstr "Изравняване на панорамата" + +#: hugin1/hugin/AssistantPanel.cpp:492 +#: hugin1/hugin/OptimizePhotometricPanel.cpp:477 +msgid "Loading images" +msgstr "Зареждане на изображенията %s" + +#: hugin1/hugin/AssistantPanel.cpp:553 +#: hugin1/hugin/OptimizePhotometricPanel.cpp:488 +msgid "Error: could not load all images" +msgstr "Грешка: Не могат да се заредят всички изображения" + +#: hugin1/hugin/AssistantPanel.cpp:573 +msgid "Vignetting and exposure correction" +msgstr "Корекция на замъгляването" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:109 +msgid "Autopano (version 1.03 or greater), from http://autopano.kolor.com" +msgstr "Autopano (версия 1.03 или по-нова), от http://autopano.kolor.com" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:110 +msgid "Autopano-Sift, from http://user.cs.tu-berlin.de/~nowozin/autopano-sift/" +msgstr "Autopano-Sift, от http://user.cs.tu-berlin.de/~nowozin/autopano-sift/" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:112 +msgid "Choose which autopano program should be used\n" +msgstr "Изберете каква програма за автоматично панорамиране да се използва\n" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:112 +msgid "Select autopano type" +msgstr "Изберете тип автоматично панорамиране" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:125 +msgid "Autopano from http://autopano.kolor.com is not available for OSX" +msgstr "Autopano от http://autopano.kolor.com не работи в Mac OS X" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:126 +msgid "Would you like to use Autopano-Sift instead?" +msgstr "Искате ли вместо нея да използвате Autopano-Sift?" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:177 +msgid "Specified Autopano-SIFT not installed in bundle." +msgstr "Програмата Autopano-SIFT не е инсталирана." + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:186 +msgid "Specified panomatic not installed in bundle." +msgstr "В тази инсталация няма panomatic." + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:195 +msgid "Specified matchpoint-complete-mac.sh not installed in bundle." +msgstr "В тази инсталация няма matchpoint-complete-mac.sh." + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:201 +msgid "Select autopano frontend (script)" +msgstr "Изберете скрипт за автоматично панорамиране" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:203 +msgid "Exe or Script (*.*)|*.*" +msgstr "EXE-файл или скрипт (*.*)|*.*" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:209 +msgid "No autopano selected" +msgstr "Не е избрано автоматично панорамиране" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:219 +msgid "Autopano-SIFT not found. Please specify a valid path in the preferences" +msgstr "Не е намерен Autopano-SIFT. Задайте правилно местоположение на програмата в прозореца с настройки." + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:268 +#, c-format +msgid "Please use %namefile, %i or %s to specify the input files for autopano-sift" +msgstr "Използвайте %namefile, %i или %s, за да посочите входящи файлове за autopano-sift" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:269 +msgid "Error in Autopano command" +msgstr "Грешка в командата за автоматично панорамиране" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:327 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:437 +msgid "" +"autopano command line too long.\n" +"This is a windows limitation\n" +"Please select less images, or place the images in a folder with\n" +"a shorter pathname" +msgstr "" +"Командата за автоматично панорамиране е прекалено дълга.\n" +"Изпълнението и е невъзможно заради превишаване на лимита.\n" +"Изберете по-малко изображения или ги поставете\n" +"в папка с по-кратко име за достъп." + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:328 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:438 +#: hugin1/hugin/NonaStitcherPanel.cpp:415 +msgid "Too many images selected" +msgstr "Прекалено много избрани изображения" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:340 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:447 +msgid "finding control points" +msgstr "Търсене на контролни точки" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:343 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:450 +#: hugin1/hugin/NonaStitcherPanel.cpp:427 +#: hugin1/hugin/PanoPanel.cpp:858 +msgid "Could not execute command: " +msgstr "Не може да се изпълни команда: " + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:343 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:348 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:450 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:456 +#: hugin1/hugin/NonaStitcherPanel.cpp:427 +msgid "wxExecute Error" +msgstr "Грешка wxExecute" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:346 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:454 +#: hugin1/hugin/NonaStitcherPanel.cpp:430 +msgid "command: " +msgstr "команда: " + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:347 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:455 +#: hugin1/hugin/NonaStitcherPanel.cpp:431 +msgid "" +"\n" +"failed with error code: " +msgstr "" +"\n" +"Грешка. Код на грешката: " + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:354 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:464 +msgid "Could not open " +msgstr "Не може да се отвори" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:354 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:464 +msgid "" +" for reading\n" +"This is an indicator that the autopano call failed,\n" +"or wrong command line parameters have been used.\n" +"\n" +"Autopano command: " +msgstr "" +" за четене. Това говори че се провалило изпълнението на\n" +"програмата за автоматично панорамиране, или са били \n" +"използвани грешни параметри\n" +"\n" +"Команда за автоматично панорамиране: " + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:355 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:467 +msgid "autopano failure" +msgstr "Грешка при автоматичното панорамиране" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:391 +msgid "autopano.exe not found. Please specify a valid path in the preferences" +msgstr "autopano.exe не е намерен. Задайте правилно местоположение в прозореца с настройки на hugin." + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:465 +msgid "" +"\n" +" current directory:" +msgstr "" +"\n" +" текуща папка:" + +#: hugin1/hugin/CommandHistory.cpp:94 +msgid "no command in undo history" +msgstr "В историята на отмените няма команда" + +#: hugin1/hugin/CommandHistory.cpp:106 +msgid "no command in redo history" +msgstr "В историята на повторенията няма команда" + +#: hugin1/hugin/CPEditorPanel.cpp:212 +#: hugin1/hugin/CPEditorPanel_guido.cpp:213 +#: hugin1/hugin/CPListFrame.cpp:283 +#: hugin1/hugin/ImagesList.cpp:71 +msgid "#" +msgstr "#" + +#: hugin1/hugin/CPEditorPanel.cpp:213 +#: hugin1/hugin/CPEditorPanel_guido.cpp:214 +msgid "left x" +msgstr "X в ляво" + +#: hugin1/hugin/CPEditorPanel.cpp:214 +#: hugin1/hugin/CPEditorPanel_guido.cpp:215 +msgid "left y" +msgstr "Y в ляво" + +#: hugin1/hugin/CPEditorPanel.cpp:215 +#: hugin1/hugin/CPEditorPanel_guido.cpp:216 +msgid "right x" +msgstr "X в дясно" + +#: hugin1/hugin/CPEditorPanel.cpp:216 +#: hugin1/hugin/CPEditorPanel_guido.cpp:217 +msgid "right y" +msgstr "Y в дясно" + +#: hugin1/hugin/CPEditorPanel.cpp:217 +#: hugin1/hugin/CPEditorPanel_guido.cpp:218 +#: hugin1/hugin/CPListFrame.cpp:290 +#: hugin1/hugin/CPListFrame.cpp:297 +msgid "Alignment" +msgstr "Изравняване" + +#: hugin1/hugin/CPEditorPanel.cpp:218 +#: hugin1/hugin/CPEditorPanel_guido.cpp:219 +#: hugin1/hugin/CPListFrame.cpp:291 +#: hugin1/hugin/CPListFrame.cpp:298 +msgid "Distance" +msgstr "Разстояние" + +#: hugin1/hugin/CPEditorPanel.cpp:540 +#: hugin1/hugin/CPEditorPanel_guido.cpp:598 +msgid "No corresponding point found" +msgstr "Не е намерена съответстваща точка" + +#: hugin1/hugin/CPEditorPanel.cpp:630 +#: hugin1/hugin/CPEditorPanel_guido.cpp:685 +msgid "new control point added" +msgstr "Добавена е нова контролна точка" + +#: hugin1/hugin/CPEditorPanel.cpp:751 +#: hugin1/hugin/CPEditorPanel.cpp:976 +msgid "searching similar points..." +msgstr "Търсене на подобни точки..." + +#: hugin1/hugin/CPEditorPanel.cpp:770 +#: hugin1/hugin/CPEditorPanel.cpp:894 +#: hugin1/hugin/CPEditorPanel_guido.cpp:806 +#: hugin1/hugin/CPEditorPanel_guido.cpp:929 +msgid "Error during Fine-tune" +msgstr "Грешка по време на фината настройка" + +#: hugin1/hugin/CPEditorPanel.cpp:784 +#: hugin1/hugin/CPEditorPanel.cpp:914 +#: hugin1/hugin/CPEditorPanel.cpp:1050 +#: hugin1/hugin/CPEditorPanel_guido.cpp:820 +#: hugin1/hugin/CPEditorPanel_guido.cpp:949 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1085 +#, c-format +msgid "Point finetuned, angle: %.0f deg, correlation coefficient: %0.3f, curvature: %0.3f %0.3f " +msgstr "Точката е настроена, ъгъл: %.0f градуса, коефициент на корелация: %0.3f, кривина: %0.3f %0.3f " + +#: hugin1/hugin/CPEditorPanel.cpp:787 +#: hugin1/hugin/CPEditorPanel.cpp:917 +#: hugin1/hugin/CPEditorPanel_guido.cpp:823 +#: hugin1/hugin/CPEditorPanel_guido.cpp:952 +msgid "change points, or press right mouse button to add the pair" +msgstr "Променете точките или натиснете десен бутон на мишката за да добавите двойката" + +#: hugin1/hugin/CPEditorPanel.cpp:807 +#: hugin1/hugin/CPEditorPanel_guido.cpp:843 +msgid "Estimated point outside image" +msgstr "Определената точка е извън изображението" + +#: hugin1/hugin/CPEditorPanel.cpp:1056 +#, c-format +msgid "" +"No similar point found. Check the similarity visually.\n" +"Correlation coefficient (%.3f) is lower than the threshold set in the preferences." +msgstr "" +"Не са открити сходни точки. Проверете сходството на око.\n" +"Коефициентът на корелация (%.3f) е по-нисък от зададения в настройките" + +#: hugin1/hugin/CPEditorPanel.cpp:1058 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1093 +msgid "No similar point found" +msgstr "Не е открита сходна точка" + +#: hugin1/hugin/CPEditorPanel.cpp:1220 +#: hugin1/hugin/CPEditorPanel.cpp:1231 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1245 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1256 +msgid "Add new Line" +msgstr "Добавяне на нова линия" + +#: hugin1/hugin/CPEditorPanel.cpp:1226 +#: hugin1/hugin/CPEditorPanel.cpp:1229 +#: hugin1/hugin/CPEditorPanel.cpp:1561 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1251 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1254 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1536 +#: hugin1/hugin/CPListFrame.cpp:415 +#, c-format +msgid "Line %d" +msgstr "Линия %d" + +#: hugin1/hugin/CPEditorPanel.cpp:1552 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1527 +#: hugin1/hugin/CPListFrame.cpp:406 +#: hugin1/hugin/PreviewFrame.cpp:239 +#: translations/xrc.cpp:49 +#: xrc.cpp:49 +msgid "normal" +msgstr "Нормален" + +#: hugin1/hugin/CPEditorPanel.cpp:1555 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1530 +#: hugin1/hugin/CPListFrame.cpp:409 +msgid "vert. Line" +msgstr "верт. линия" + +#: hugin1/hugin/CPEditorPanel.cpp:1558 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1533 +#: hugin1/hugin/CPListFrame.cpp:412 +msgid "horiz. Line" +msgstr "хориз. линия" + +#: hugin1/hugin/CPEditorPanel.cpp:1860 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1835 +msgid "Cannot estimate image position without control points" +msgstr "Невъзможно е да се определи положението на изображението без контролни точки." + +#: hugin1/hugin/CPEditorPanel.cpp:1881 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1856 +msgid "" +"Create control points.\n" +"To create less points,\n" +"enter a higher number." +msgstr "" +"Създайте контролни точки.\n" +"За да създадете по-малко точки\n" +"въведете по-голямо число." + +#: hugin1/hugin/CPEditorPanel.cpp:1881 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1856 +msgid "Corner Detection threshold" +msgstr "Праг за определяне на ъгъла" + +#: hugin1/hugin/CPEditorPanel.cpp:1881 +#: hugin1/hugin/CPEditorPanel.cpp:1885 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1856 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1860 +#: translations/xrc.cpp:110 +#: xrc.cpp:110 +msgid "Create control points" +msgstr "Създаване на контролни точки" + +#: hugin1/hugin/CPEditorPanel.cpp:1885 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1860 +msgid "Corner Detection scale" +msgstr "Мащаб за определяне на ъгъла" + +#: hugin1/hugin/CPEditorPanel.cpp:1897 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1872 +msgid "Error during control point creation:\n" +msgstr "Грешка при създаване на контролна точка:\n" + +#: hugin1/hugin/CPEditorPanel.cpp:2028 +#: hugin1/hugin/CPEditorPanel_guido.cpp:2003 +msgid "Select Point in right image" +msgstr "Изберете точка в дясното изображение" + +#: hugin1/hugin/CPEditorPanel.cpp:2040 +#: hugin1/hugin/CPEditorPanel_guido.cpp:2015 +msgid "Select Point in left image" +msgstr "Изберете точка в дясното изображение" + +#: hugin1/hugin/CPEditorPanel_guido.cpp:787 +#: hugin1/hugin/CPEditorPanel_guido.cpp:1011 +msgid "searching similar point..." +msgstr "Търсене на сходна точка..." + +#: hugin1/hugin/CPEditorPanel_guido.cpp:1091 +#, c-format +msgid "" +"No similar point found.\n" +"correlation coefficient: %.3f (should be > %.3f)\n" +"peak curvature: (%.3f, %.3f) ( should be > %.3f)" +msgstr "" +"Не е открита сходна точка.\n" +"Коефициент на корелация: %.3f (трябва да е > %.3f)\n" +"Пикова кривина: (%.3f, %.3f) (трябва да е > %.3f)" + +#: hugin1/hugin/CPFineTuneFrame.cpp:38 +msgid "Control point finetune" +msgstr "Фина корекция на контролната точка" + +#: hugin1/hugin/CPImageCtrl.cpp:346 +msgid "new" +msgstr "нова" + +#: hugin1/hugin/CPImageCtrl.cpp:1165 +msgid "Could not process event!" +msgstr "Събитието не можа да се обработи!" + +#: hugin1/hugin/CPListFrame.cpp:284 +#: hugin1/hugin/CPListFrame.cpp:294 +msgid "left Img." +msgstr "Ляво изображение" + +#: hugin1/hugin/CPListFrame.cpp:285 +#: hugin1/hugin/CPListFrame.cpp:288 +#: translations/xrc.cpp:19 +#: translations/xrc.cpp:41 +#: xrc.cpp:19 +#: xrc.cpp:41 +msgid "x" +msgstr "x" + +#: hugin1/hugin/CPListFrame.cpp:286 +#: hugin1/hugin/CPListFrame.cpp:289 +msgid "y" +msgstr "y" + +#: hugin1/hugin/CPListFrame.cpp:287 +#: hugin1/hugin/CPListFrame.cpp:295 +msgid "right Img." +msgstr "Дясно изображение" + +#: hugin1/hugin/CPListFrame.cpp:293 +msgid "G CP#" +msgstr "G CP#" + +#: hugin1/hugin/CPListFrame.cpp:296 +msgid "P CP#" +msgstr "P CP#" + +#: hugin1/hugin/CPListFrame.cpp:615 +#: hugin1/hugin/CPListFrame.cpp:624 +msgid "" +"Enter minimum control point error.\n" +"All points with a higher error will be selected" +msgstr "" +"Въведете минимална стойност на грешката на контролните точки.\n" +"Ще бъдат избрани всички точки с по-голяма стойност на грешката." + +#: hugin1/hugin/CPListFrame.cpp:615 +#: hugin1/hugin/CPListFrame.cpp:624 +msgid "Select Control Points" +msgstr "Изберете Контролни точки" + +#: hugin1/hugin/CPListFrame.cpp:623 +msgid "Error: please enter a valid number." +msgstr "Грешка: въведете валиден номер." + +#: hugin1/hugin/CPListFrame.cpp:623 +msgid "Could not read number" +msgstr "Номерът не може да се прочете" + +#: hugin1/hugin/CropPanel.cpp:255 +#: hugin1/hugin/CropPanel.cpp:271 +#: hugin1/hugin/CropPanel.cpp:287 +#: hugin1/hugin/CropPanel.cpp:303 +msgid "Please enter a valid number" +msgstr "Въведете валиден номер." + +#: hugin1/hugin/HFOVDialog.cpp:76 +#, c-format +msgid "" +"No or only partial information about field of view was found in image file\n" +"%s\n" +"\n" +"Please enter the horizontal field of view (HFOV) or the focal length and crop factor." +msgstr "" +"Частична или липсваща информация за зрителното поле в файла на изображението.\n" +"%s\n" +"\n" +"Задайте хоризонтално зрително поле (HFOV) или фокусно разстояние и отрязване." + +#: hugin1/hugin/HFOVDialog.cpp:157 +msgid "The horizontal field of view must be positive." +msgstr "Хоризонталното зрително поле трябва да е положително число." + +#: hugin1/hugin/HFOVDialog.cpp:209 +msgid "The focal length must be positive." +msgstr "Фокусното разстояние трябва да е положително число." + +#: hugin1/hugin/HFOVDialog.cpp:249 +msgid "The crop factor must be positive." +msgstr "Коефициентът на отрязване трябва да е положително число." + +#: hugin1/hugin/huginApp.cpp:61 +#: hugin1/hugin/ImagesPanel.cpp:302 +#: hugin1/hugin/ImagesPanel.cpp:323 +#: hugin1/hugin/ImagesPanel.cpp:343 +#: hugin1/hugin/PanoPanel.cpp:443 +#: hugin1/hugin/PanoPanel.cpp:474 +#: hugin1/hugin/PreviewFrame.cpp:764 +#: hugin1/hugin/PreviewFrame.cpp:780 +msgid "Value must be numeric." +msgstr "Стойността трябва да е число" + +#: hugin1/hugin/huginApp.cpp:133 +msgid "xrc directory not found in bundle" +msgstr "Папката xrc не е намерена" + +#: hugin1/hugin/huginApp.cpp:133 +#: hugin1/hugin/huginApp.cpp:144 +#: hugin1/hugin/huginApp.cpp:156 +#: hugin1/stitch_project/hugin_stitch_project.cpp:284 +msgid "Fatal Error" +msgstr "Фатална грешка" + +#: hugin1/hugin/huginApp.cpp:144 +#: hugin1/stitch_project/hugin_stitch_project.cpp:284 +msgid "Translations not found in bundle" +msgstr "Не са намерени файлове с локализация" + +#: hugin1/hugin/huginApp.cpp:156 +msgid "" +"xrc directory not found, hugin needs to be properly installed\n" +"Tried Path:" +msgstr "" +"Папката xrc не е намерена, hugin трябва да се инсталира правилно.\n" +"Търсенето се извърши в:" + +#: hugin1/hugin/ImagesList.cpp:332 +#: hugin1/hugin/ImagesList.cpp:448 +msgid "Filename" +msgstr "Име на файл" + +#: hugin1/hugin/ImagesList.cpp:333 +msgid "width" +msgstr "Ширина" + +#: hugin1/hugin/ImagesList.cpp:334 +msgid "height" +msgstr "Височина" + +#: hugin1/hugin/ImagesList.cpp:335 +msgid "yaw (y)" +msgstr "Вертикално отклонение (y)" + +#: hugin1/hugin/ImagesList.cpp:336 +msgid "pitch (p)" +msgstr "Наклон на хоризонта (p)" + +#: hugin1/hugin/ImagesList.cpp:337 +msgid "roll (r)" +msgstr "Завъртане (r)" + +#: hugin1/hugin/ImagesList.cpp:338 +msgid "Anchor" +msgstr "Закотвяне" + +#: hugin1/hugin/ImagesList.cpp:339 +msgid "# Ctrl Pnts" +msgstr "Брой контролни точки" + +#: hugin1/hugin/ImagesList.cpp:449 +msgid "Lens no." +msgstr "№ на обектива" + +#: hugin1/hugin/ImagesList.cpp:450 +msgid "Lens type (f)" +msgstr "Тип на обектива (f)" + +#: hugin1/hugin/ImagesList.cpp:451 +msgid "EV" +msgstr "EV" + +#: hugin1/hugin/ImagesList.cpp:452 +msgid "hfov (v)" +msgstr "hfov (v)" + +#: hugin1/hugin/ImagesList.cpp:453 +msgid "a" +msgstr "a" + +#: hugin1/hugin/ImagesList.cpp:454 +msgid "b" +msgstr "b" + +#: hugin1/hugin/ImagesList.cpp:455 +msgid "c" +msgstr "c" + +#: hugin1/hugin/ImagesList.cpp:456 +msgid "d" +msgstr "d" + +#: hugin1/hugin/ImagesList.cpp:457 +msgid "e" +msgstr "e" + +#: hugin1/hugin/ImagesList.cpp:458 +msgid "g" +msgstr "g" + +#: hugin1/hugin/ImagesList.cpp:459 +msgid "t" +msgstr "t" + +#: hugin1/hugin/ImagesList.cpp:488 +#: translations/xrc.cpp:11 +#: translations/xrc.cpp:29 +#: translations/xrc.cpp:133 +#: xrc.cpp:11 +#: xrc.cpp:29 +#: xrc.cpp:133 +msgid "Normal (rectilinear)" +msgstr "Нормален (праволинеен)" + +#: hugin1/hugin/ImagesList.cpp:489 +#: translations/xrc.cpp:12 +#: translations/xrc.cpp:30 +#: translations/xrc.cpp:134 +#: xrc.cpp:12 +#: xrc.cpp:30 +#: xrc.cpp:134 +msgid "Panoramic (cylindrical)" +msgstr "Панорамен (цилинричен)" + +#: hugin1/hugin/ImagesList.cpp:490 +#: translations/xrc.cpp:13 +#: translations/xrc.cpp:31 +#: translations/xrc.cpp:135 +#: xrc.cpp:13 +#: xrc.cpp:31 +#: xrc.cpp:135 +msgid "Circular fisheye" +msgstr "Тип «рибешко око»" + +#: hugin1/hugin/ImagesList.cpp:491 +#: translations/xrc.cpp:14 +#: translations/xrc.cpp:32 +#: translations/xrc.cpp:136 +#: xrc.cpp:14 +#: xrc.cpp:32 +#: xrc.cpp:136 +msgid "Full frame fisheye" +msgstr "«рибешко око» на цял кадър" + +#: hugin1/hugin/ImagesList.cpp:492 +#: hugin1/hugin/PreviewFrame.cpp:618 +#: translations/xrc.cpp:15 +#: translations/xrc.cpp:33 +#: translations/xrc.cpp:137 +#: xrc.cpp:15 +#: xrc.cpp:33 +#: xrc.cpp:137 +msgid "Equirectangular" +msgstr "Географска проекция" + +#: hugin1/hugin/ImagesList.cpp:561 +#: translations/xrc.cpp:189 +#: translations/xrc.cpp:359 +#: xrc.cpp:189 +#: xrc.cpp:359 +msgid "Crop" +msgstr "Отрязване" + +#: hugin1/hugin/ImagesPanel.cpp:281 +#, c-format +msgid "Added %d control points" +msgstr "Добавени контролни точки: %d" + +#: hugin1/hugin/ImagesPanel.cpp:281 +msgid "Autopano result" +msgstr "Резултат от автоматичното панорамиране" + +#: hugin1/hugin/ImagesPanel.cpp:653 +#, c-format +msgid "Really Delete %d control points?" +msgstr "Изтриване на %d контролни точки?" + +#: hugin1/hugin/ImagesPanel.cpp:655 +msgid "Delete Control Points" +msgstr "Изтриване на контролни точки" + +#: hugin1/hugin/LensPanel.cpp:838 +msgid "Not a jpeg file:" +msgstr "Не е JPEG файл:" + +#: hugin1/hugin/LensPanel.cpp:843 +#: hugin1/hugin/LensPanel.cpp:952 +#: hugin1/hugin/LensPanel.cpp:985 +#: hugin1/hugin/LensPanel.cpp:1105 +#: hugin1/hugin/LensPanel.cpp:1123 +msgid "Please select an image and try again" +msgstr "Изберете изображение и опитайте отново" + +#: hugin1/hugin/LensPanel.cpp:861 +msgid "Save lens parameters file" +msgstr "Запазване на файл с параметрите на обектива" + +#: hugin1/hugin/LensPanel.cpp:863 +msgid "Lens Project Files (*.ini)|*.ini|All files (*)|*" +msgstr "Файлове с данни за обектив (*.ini)|*.ini|Всички файлове (*)|*" + +#: hugin1/hugin/LensPanel.cpp:994 +msgid "Load lens parameters" +msgstr "Зареждане на параметри на обектива" + +#: hugin1/hugin/LensPanel.cpp:996 +msgid "Lens Project Files (*.ini)|*.ini|All files (*.*)|*.*" +msgstr "Файлове с данни за обектив (*.ini)|*.ini|Всички файлове (*.*)|*.*" + +#: hugin1/hugin/LensPanel.cpp:1015 +msgid "" +"Incompatible lens parameter file, image sizes do not match\n" +"Apply settings anyway?" +msgstr "" +"Несъвместим файл с параметри на обектива: \n" +"размерът на изображенията не съвпада\n" +"Да се приложат ли настройките въпреки това?" + +#: hugin1/hugin/LensPanel.cpp:1015 +msgid "Error loading lens parameters" +msgstr "Грешка при зареждане параметрите на обектива" + +#: hugin1/hugin/LensPanel.cpp:1113 +msgid "Enter new lens number" +msgstr "Въведете номер на новия обектив" + +#: hugin1/hugin/LensPanel.cpp:1113 +msgid "Lens number" +msgstr "Номер на обектива" + +#: hugin1/hugin/LensPanel.cpp:1114 +msgid "Change lens number" +msgstr "Промяна на номера на обектив" + +#: hugin1/hugin/LocalizedFileTipProvider.cpp:48 +msgid "Tips not available, sorry!" +msgstr "Няма налични съвети, извинете!" + +#: hugin1/hugin/MainFrame.cpp:203 +#, c-format +msgid "Prerelease %s" +msgstr "Предварителна версия %s" + +#: hugin1/hugin/MainFrame.cpp:205 +#, c-format +msgid "Version %s" +msgstr "Версия %s" + +#: hugin1/hugin/MainFrame.cpp:226 +msgid "" +"Fatal installation error\n" +"The file data/splash.png was not found at:" +msgstr "" +"Фатална грешка при инсталиране\n" +"Файлът data/splash.png не намерен в:" + +#: hugin1/hugin/MainFrame.cpp:246 +#: translations/xrc.cpp:197 +#: translations/xrc.cpp:232 +#: translations/xrc.cpp:233 +#: xrc.cpp:197 +#: xrc.cpp:232 +#: xrc.cpp:233 +msgid "&Help" +msgstr "&Помощ" + +#: hugin1/hugin/MainFrame.cpp:326 +msgid "Started" +msgstr "В готовност" + +#: hugin1/hugin/MainFrame.cpp:452 +msgid "" +"The panorama has been changed\n" +"Save changes?" +msgstr "" +"Панорама беше променена\n" +"Запазване на промените?" + +#: hugin1/hugin/MainFrame.cpp:452 +msgid "Save Panorama?" +msgstr "Запазване на панорамата?" + +#: hugin1/hugin/MainFrame.cpp:485 +msgid "forced close" +msgstr "Принудително спиране" + +#: hugin1/hugin/MainFrame.cpp:541 +#, c-format +msgid "saved project %s" +msgstr "запазен проект %s" + +#: hugin1/hugin/MainFrame.cpp:558 +msgid "Save project file" +msgstr "Запазване на проектен файл" + +#: hugin1/hugin/MainFrame.cpp:560 +msgid "Project files (*.pto)|*.pto|All files (*)|*" +msgstr "Проектни файлове (*.pto)|*.pto|Всички файлове (*)|*" + +#: hugin1/hugin/MainFrame.cpp:570 +#, c-format +msgid "File %s exists. Overwrite?" +msgstr "Файлът %s вече съществува. Да се презапише ли?" + +#: hugin1/hugin/MainFrame.cpp:571 +#: translations/xrc.cpp:251 +#: xrc.cpp:251 +msgid "Save project" +msgstr "Запазване на проект" + +#: hugin1/hugin/MainFrame.cpp:591 +msgid "Save PTmender script file" +msgstr "Запазване на PTmender скрипт" + +#: hugin1/hugin/MainFrame.cpp:593 +msgid "PTmender files (*.txt)|*.txt" +msgstr "Файлове PTmender (*.txt)|*.txt" + +#: hugin1/hugin/MainFrame.cpp:622 +msgid "Open project: " +msgstr "Отваряне на проект: " + +#: hugin1/hugin/MainFrame.cpp:634 +msgid "Project opened" +msgstr "Проектът е отворен" + +#: hugin1/hugin/MainFrame.cpp:644 +msgid "Error opening project: " +msgstr "Грешка при отваряне на проекта: " + +#: hugin1/hugin/MainFrame.cpp:690 +msgid "Open project file" +msgstr "Отваряне на проектен файл" + +#: hugin1/hugin/MainFrame.cpp:692 +#: hugin1/hugin/MainFrame.cpp:1153 +#: hugin1/stitch_project/hugin_stitch_project.cpp:350 +msgid "Project files (*.pto,*.ptp,*.pts,*.oto)|*.pto;*.ptp;*.pts;*.oto;|All files (*)|*" +msgstr "Проектни файлове (*.pto,*.ptp,*.pts,*.oto)|*.pto;*.ptp;*.pts;*.oto;|Всички файлове (*)|*" + +#: hugin1/hugin/MainFrame.cpp:706 +msgid "Open project: cancel" +msgstr "Отваряне на проект: отмяна" + +#: hugin1/hugin/MainFrame.cpp:733 +#: hugin1/hugin/wxPanoCommand.cpp:350 +#: hugin1/hugin/wxPanoCommand.cpp:424 +msgid "Add images" +msgstr "Добавяне на изображения" + +#: hugin1/hugin/MainFrame.cpp:787 +msgid "Add Image: cancel" +msgstr "Добавяне на изображение: отказ" + +#: hugin1/hugin/MainFrame.cpp:1151 +msgid "Choose template project" +msgstr "Изберете шаблон за проект" + +#: hugin1/hugin/MainFrame.cpp:1203 +msgid "Fine-tuning all points" +msgstr "Фина настройка на всички точки" + +#: hugin1/hugin/MainFrame.cpp:1205 +msgid "Finetuning" +msgstr "Фина настройка" + +#: hugin1/hugin/MainFrame.cpp:1297 +#, c-format +msgid "" +"%d points fine-tuned, %d points not updated due to low correlation\n" +"\n" +"Hint: The errors of the fine-tuned points have been set to the correlation coefficient\n" +"Problematic points can be spotted (just after fine-tune, before optimizing)\n" +"by an error <= %.3f.\n" +"The error of points without a well defined peak (typically in regions with uniform color)\n" +"will be set to 0\n" +"\n" +"Use the Control Point list (F3) to see all points of the current project\n" +msgstr "" +"%d точки са фино настроени, %d точки не са обновени заради ниска корелация\n" +"\n" +"Съвет: Грешките на фино настроените точки са приравнени към коефициента на корелация.\n" +"Проблемните точки може да се забележат (след корекция и преди оптимизация) по грешка <= %.3f.\n" +"Грешката в точките без достатъчно точно определен пика (обикновено в едноцветни области)\n" +"ще бъде приравнена към нула.\n" +"\n" +"Използвайте Списък с контролни точки (F3) за преглед на всички точки в текущия проект.\n" + +#: hugin1/hugin/MainFrame.cpp:1299 +msgid "Fine-tune result" +msgstr "Резултат от фината настройка" + +#: hugin1/hugin/NonaOptionsDialog.cpp:55 +msgid "Nona options" +msgstr "Параметри на Nona" + +#: hugin1/hugin/NonaStitcherPanel.cpp:288 +#: hugin1/nona_gui/nona_gui.cpp:226 +msgid "Stitching Panorama" +msgstr "Събиране на панорамата" + +#: hugin1/hugin/NonaStitcherPanel.cpp:325 +msgid "" +"Out of memory.\n" +"Try again with a smaller panorama image size\n" +msgstr "" +"Няма свободна памет.\n" +"Опитайте още веднъж с по-малък размер на панорамата\n" + +#: hugin1/hugin/NonaStitcherPanel.cpp:346 +msgid "Select enblend.exe" +msgstr "Изберете enblend.exe" + +#: hugin1/hugin/NonaStitcherPanel.cpp:354 +msgid "No enblend.exe selected" +msgstr "enblend.exe не е избран" + +#: hugin1/hugin/NonaStitcherPanel.cpp:365 +msgid "Select enblend commandline tool" +msgstr "Изберете терминалната програма enblend" + +#: hugin1/hugin/NonaStitcherPanel.cpp:373 +msgid "No enblend commandline tool selected" +msgstr "Терминалната програма Enblend не е избрана" + +#: hugin1/hugin/NonaStitcherPanel.cpp:414 +msgid "" +"Can not call enblend with a command line > 32766 characters.\n" +"This is a Windows limitation\n" +"Please use less images, or place the images in a folder with\n" +"a shorter pathname" +msgstr "" +"Пускането на enblend в команден ред, където \n" +"се използват повече от 32766 символа е невъзможно. Това е ограничение на Windows.\n" +"Използвайте по-малки изображения, или ги поставете в папка\n" +"с по-кратък път за достъп." + +#: hugin1/hugin/NonaStitcherPanel.cpp:432 +msgid "enblend error" +msgstr "Грешка на enblend" + +#: hugin1/hugin/NonaStitcherPanel.cpp:506 +#: hugin1/hugin/PTStitcherPanel.cpp:310 +msgid "gamma must be a number" +msgstr "Гамата трябва да е число" + +#: hugin1/hugin/OptimizePanel.cpp:586 +msgid "" +"Optimizer run finished.\n" +"WARNING: a very small Field of View (v) has been estimated\n" +"\n" +"The results are probably invalid.\n" +"\n" +"Optimization of the Field of View (v) of partial panoramas can lead to bad results.\n" +"Try adding more images and control points.\n" +"\n" +"Apply the changes anyway?" +msgstr "" +"Оптимизаторът приключи.\n" +"Внимание: Определено е прекалено малко зрително поле(v)\n" +"\n" +"Тези резултати вероятно са неправилни.\n" +"Оптимизацията на зрителното поле (v) на частични панорами може да доведе\n" +"до лоши резултати.\n" +"Опитайте да добавите повече изображения и контролни точки\n" +"\n" +"Да се приложат ли промените въпреки това?" + +#: hugin1/hugin/OptimizePanel.cpp:589 +#, c-format +msgid "" +"Optimizer run finished.\n" +"Results:\n" +" average control point distance: %f\n" +" standard deviation: %f\n" +" maximum: %f\n" +"\n" +"*WARNING*: very high distortion coefficients (a,b,c) have been estimated.\n" +"The results are probably invalid.\n" +"Only optimize all distortion parameters when many, well spread control points are used.\n" +"Please reset the a,b and c parameters to zero and add more control points\n" +"\n" +"Apply the changes anyway?" +msgstr "" +"Оптимизаторът приключи.\n" +"Резултати:\n" +" средно разстояние между контролните точки: %f\n" +" стандартно отклонение: %f\n" +" максимум: %f\n" +"\n" +"Внимание: Определение са много високи коефициенти\n" +"на изкривяване (a,b,c). Тези резултати вероятно са неправилни.\n" +"Оптимизирайте всички параметри на изкривяване само в случай, в който са използвани много \n" +"и отдалечени една от друга контролни точки.\n" +"\n" +"Да се приложат ли промените въпреки това?" + +#: hugin1/hugin/OptimizePanel.cpp:593 +#, c-format +msgid "" +"Optimizer run finished.\n" +"Results:\n" +" average control point distance: %f\n" +" standard deviation: %f\n" +" maximum: %f\n" +"\n" +"Apply the changes?" +msgstr "" +"Оптимизаторът приключи.\n" +"Резултати:\n" +" средно разстояние между точките: %f\n" +" стандартно отклонение: %f\n" +" максимум: %f\n" +"\n" +"Прилагане на промените?" + +#: hugin1/hugin/OptimizePanel.cpp:598 +msgid "Optimization result" +msgstr "Резултат от оптимизацията" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:450 +msgid "" +"The same vignetting and response parameters should\n" +"be applied for all images of a lens.\n" +"Currently each image can have different parameters.\n" +"Link parameters?" +msgstr "" +"Едни и същи параметри на замъгляване и съответстващите им трябва да бъдат\n" +"приложени към всички изображения, направени с този обектив.\n" +"В момента момент всяко изображение има различен параметър.\n" +"Да се извърши ли синхронизация?" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:450 +msgid "Link parameters" +msgstr "Параметри на връзката" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:468 +msgid "" +"The vignetting and exposure correction is determined by analysing color values in the overlapping areas.\n" +"To speed up the computation, only a random subset of points is used." +msgstr "" +"Корекцията на замъгляване и експозиция се определя в резултат на анализ\n" +"на цветовите стойности в застъпващите се области.\n" +"За ускорение на изчислението се използва само случайно подмножество от точки." + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:469 +msgid "Number of points per image" +msgstr "Брой точки на изображение" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:470 +msgid "Photometric optimization" +msgstr "Фотометрична оптимизация" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:477 +msgid "Photometric alignment" +msgstr "Фотометрично изравняване" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:508 +msgid "Error: no overlapping points found, Photometric optimization aborted" +msgstr "Грешка: не са намерени съвпадащи точки; фотометричната оптимизация е прекъсната." + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:541 +msgid "Internal error during photometric optimization:\n" +msgstr "Вътрешна грешка при фотометричната оптимизация:\n" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:541 +msgid "Internal error" +msgstr "Вътрешна грешка" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:547 +#, fuzzy, c-format +msgid "" +"Photometric optimization results:\n" +"Average difference (RMSE) between overlapping pixels: %.2f gray values (0..255)\n" +"\n" +"Apply results?" +msgstr "" +"Резултати от фотометричната оптимизация:\n" +"Средна разлика %.2f в стойностите на сивото (0..255)\n" +"\n" +"Прилагане на промените?" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:548 +msgid "Photometric optimization finished" +msgstr "Фотометричната оптимизация приключи" + +#: hugin1/hugin/PanoDruid.cpp:43 +msgid "The druid has no advice." +msgstr "Помощникът няма с какво да помогне." + +#: hugin1/hugin/PanoDruid.cpp:53 +#: hugin1/hugin/PanoDruid.cpp:423 +msgid "The druid finds no problems with your panorama." +msgstr "Помощникът не откри проблеми във вашата панорама." + +#: hugin1/hugin/PanoDruid.cpp:54 +#: hugin1/hugin/PanoDruid.cpp:424 +msgid "" +"Stitch your final image now, and then use an image editor\n" +"such as the GNU Image Manipulation Program (the GIMP)\n" +"to add any finishing touches." +msgstr "" +"Съберете финалното изображение и след това използвайте \n" +"графичен редактор като GIMP за фини корекции." + +#: hugin1/hugin/PanoDruid.cpp:63 +#: hugin1/hugin/PanoDruid.cpp:443 +msgid "Warning: you haven't saved the current project." +msgstr "Внимание: не сте запазили текущия проект." + +#: hugin1/hugin/PanoDruid.cpp:64 +#: hugin1/hugin/PanoDruid.cpp:444 +msgid "" +"While everything else seems to be ready to stitch,\n" +"don't forget to save your project file so you can\n" +"experiment or adjust the settings later." +msgstr "" +"Макар че всичко е готово за събиране, не забравяте да запазите \n" +"проекта във файл, за да може по-късно да го отворите \n" +"и да променяте настройките." + +#: hugin1/hugin/PanoDruid.cpp:73 +#: hugin1/hugin/PanoDruid.cpp:439 +msgid "Warning: current stitch has huge dimensions." +msgstr "Внимание: събраното изображение има прекалено голям размер." + +#: hugin1/hugin/PanoDruid.cpp:74 +msgid "" +"Very large pixel dimensions are currently entered.\n" +"Some computers may take an excessively long time\n" +"to render such a large final image.\n" +"For best results, use the Calculate Optimal Size button on\n" +"the Panorama Options tab to determine the\n" +"pixel dimensions which will give the best quality." +msgstr "" +"Въведен е прекалено голям размер на крайното изображение.\n" +"На някои компютри ще им отнеме за да го \n" +"създадат. Преди събирането се препоръчва да изчислите оптималния \n" +"размер на крайното изображение (в пиксели), чрез натискане на бутон \n" +"«Изчисли оптимален размер размер» в подпрозореца «Събиране»." + +#: hugin1/hugin/PanoDruid.cpp:104 +#: hugin1/hugin/PanoDruid.cpp:435 +msgid "The Horizontal Field of View (HFOV) may be too low." +msgstr "Хоризонталното зрително поле (HFOV) може би е прекалено ниско." + +#: hugin1/hugin/PanoDruid.cpp:105 +#: hugin1/hugin/PanoDruid.cpp:436 +msgid "" +"Check that the focal lengths and/or hfov figures\n" +"for each image are correct for the camera settings.\n" +"Then calculate the visible field of view again.\n" +"HFOV is measured in degrees of arc, usually between\n" +"5 and 120 degrees per image unless using specialized\n" +"lenses." +msgstr "" +"Проверете дали фокусното разстояние и/или hfov\n" +"за всяко изображение за правилни за настройките на камерата. След това отново изчислете видимото зрително поле.\n" +"HFOV се измерва в дъгови градуси обикновено между 5º и 120º на изображение\n" +"освен ако не се използват специални обективи." + +#: hugin1/hugin/PanoDruid.cpp:114 +msgid "Consider adding a vertical or horizontal guide." +msgstr "" +"Помислете дали да те добавите вертикален\n" +"или хоризонтален водач." + +#: hugin1/hugin/PanoDruid.cpp:115 +msgid "" +"By adding vertical guides, the optimizer can ensure\n" +"that buildings or trees or other vertical features\n" +"appear vertical in the final result. A horizontal\n" +"guide can help ensure that a horizon does not bend." +msgstr "" +"При наличието на вертикални водачи оптимизаторът ще ще се погрижи \n" +"за това, сградите, дърветата или други вертикално ориентирани обекти \n" +"да са правилно разположение в крайното изображение. \n" +"С хоризонтален водач може да се провери дали\n" +"хоризонтът не е изкривен." + +#: hugin1/hugin/PanoDruid.cpp:137 +msgid "Run the Optimizer to estimate the image positions." +msgstr "Пуснете оптимизатора за изчисление разположението на изображенията." + +#: hugin1/hugin/PanoDruid.cpp:138 +msgid "" +"The Optimizer uses the control points to estimate the\n" +"positions of the individual images in the final panorama\n" +"\n" +"The optimizer can be invoked in the Optimizer tab.\n" +msgstr "" +"Оптимизаторът използва контролни точки за да изчисли \n" +"разположението на отделните изображения в панорамата\n" +"\n" +"Той може да бъде пуснат от едноименния.\n" + +#: hugin1/hugin/PanoDruid.cpp:165 +msgid "Add more control points to improve the stitch quality." +msgstr "Добавете повече контролни точки за да подобрите качеството на събирането." + +#: hugin1/hugin/PanoDruid.cpp:166 +msgid "" +"For best results, there should be at least four pairs\n" +"of control points for each pair of overlapping images.\n" +"More points, accurately placed, will improve the match." +msgstr "" +"Най-добри резултата се получават при използването на не по-малко \n" +"от четири контролни точки на всяка двойка застъпващи се\n" +"изображения. Повече правилно разположени ще доведат до\n" +"по-точен резултат." + +#: hugin1/hugin/PanoDruid.cpp:184 +msgid "At least one image has no control points at all." +msgstr "Най-малко едно изображение няма никакви контролни точки." + +#: hugin1/hugin/PanoDruid.cpp:185 +msgid "" +"For best results, there should be at least four pairs\n" +"of control points for each pair of overlapping images.\n" +"An image with no control points cannot be aligned." +msgstr "" +"За най-добри резултата ви трябват поне 4 двойки \n" +"контролни точки за всяка двойка застъпващи се изображения.\n" +"Изображение без контролни точки не може да се изравни." + +#: hugin1/hugin/PanoDruid.cpp:203 +msgid "Add stitching control points to each pair of images." +msgstr "Добавете контролни точки за събиране на всяка двойка изображения." + +#: hugin1/hugin/PanoDruid.cpp:204 +msgid "" +"The Optimizer relies on your control points to arrange\n" +"and blend the images properly. On the Control Points\n" +"tab, add pairs of points that correspond to identical\n" +"visual features in each pair of overlapping images." +msgstr "" +"Оптимизаторът разчита на контролните ви точки за да подреди\n" +"и слее изображенията правилно. В подпрозореца «Контролни Точки»\n" +"добавете двойка точки за еднаквите обекти\n" +"върху всяка двойка застъпващи се изображения." + +#: hugin1/hugin/PanoDruid.cpp:213 +#: hugin1/hugin/PanoDruid.cpp:431 +msgid "Add at least one more image." +msgstr "Добавете поне още едно изображение." + +#: hugin1/hugin/PanoDruid.cpp:214 +#: hugin1/hugin/PanoDruid.cpp:432 +msgid "You should have at least two files listed in the Images tab." +msgstr "Трябват ви поне два файла в подпрозореца «Изображения»." + +#: hugin1/hugin/PanoDruid.cpp:228 +#: hugin1/hugin/PanoDruid.cpp:427 +msgid "To get started, add some image files." +msgstr "За начало, добавете някакви изображения." + +#: hugin1/hugin/PanoDruid.cpp:229 +#: hugin1/hugin/PanoDruid.cpp:428 +msgid "You can add any number of images using the Images tab." +msgstr "Можете да добавите произволно количество изображения в подпрозореца «Изображения»." + +#: hugin1/hugin/PanoDruid.cpp:276 +msgid "the Panorama druid" +msgstr "Помощник за създаване на панорами" + +#: hugin1/hugin/PanoDruid.cpp:420 +msgid "The druid has no advice at this time." +msgstr "Помощникът няма с какво да помогне." + +#: hugin1/hugin/PanoDruid.cpp:440 +msgid "" +"Very large pixel dimensions are currently entered.\n" +"Some computers may take an excessively long time\n" +"to render such a large final image.\n" +"For best results, use the automatic Calc button on\n" +"the Panorama Options tab to determine the\n" +"pixel dimensions which will give the best quality." +msgstr "" +"Въведен е прекалено голям размер на крайното изображение.\n" +"На някои компютри ще им отнеме за да го \n" +"създадат. Преди събирането се препоръчва да изчислите оптималния \n" +"размер на крайното изображение (в пиксели), чрез натискане на бутон \n" +"«Изчисли оптимален размер размер» в подпрозореца «Събиране»." + +#: hugin1/hugin/PanoPanel.cpp:449 +#, c-format +msgid "Invalid HFOV value. Maximum HFOV for this projection is %lf." +msgstr "Неправилен HFOV. Максимално възможното за тази проекция е %lf." + +#: hugin1/hugin/PanoPanel.cpp:480 +#, c-format +msgid "Invalid VFOV value. Maximum VFOV for this projection is %lf." +msgstr "Неправилен VFOV. Максимално възможното за тази проекция е %lf." + +#: hugin1/hugin/PanoPanel.cpp:526 +msgid "width needs to be an integer bigger than 0" +msgstr "ширината трябва да е цяло число > 0" + +#: hugin1/hugin/PanoPanel.cpp:543 +msgid "height needs to be an integer bigger than 0" +msgstr "височината трябва да е цяло число > 0" + +#: hugin1/hugin/PanoPanel.cpp:553 +msgid "Top needs to be an integer bigger than 0" +msgstr "горната страна трябва да е цяло число > 0" + +#: hugin1/hugin/PanoPanel.cpp:557 +msgid "left needs to be an integer bigger than 0" +msgstr "лявата страна трябва да е цяло число > 0" + +#: hugin1/hugin/PanoPanel.cpp:561 +msgid "right needs to be an integer bigger than 0" +msgstr "дясната страна трябва да е цяло число > 0" + +#: hugin1/hugin/PanoPanel.cpp:565 +msgid "bottom needs to be an integer bigger than 0" +msgstr "долната страна трябва да е цяло число > 0" + +#: hugin1/hugin/PanoPanel.cpp:625 +msgid " PTmender options not yet implemented" +msgstr "Все още няма поддръжка на настройките на PTmender" + +#: hugin1/hugin/PanoPanel.cpp:674 +msgid " PTblender options not yet implemented" +msgstr "Все още няма поддръжка на настройките на PTblender" + +#: hugin1/hugin/PanoPanel.cpp:711 +msgid "Not yet implemented" +msgstr "Все още няма поддръжка" + +#: hugin1/hugin/PanoPanel.cpp:858 +msgid "ShellExecuteEx failed" +msgstr "ShellExecuteEx се провали" + +#: hugin1/hugin/PreferencesDialog.cpp:125 +msgid "System default" +msgstr "Системния" + +#: hugin1/hugin/PreferencesDialog.cpp:128 +msgid "Catalan" +msgstr "Каталонски" + +#: hugin1/hugin/PreferencesDialog.cpp:131 +msgid "Chinese (Simplified)" +msgstr "Китайски (Опростен)" + +#: hugin1/hugin/PreferencesDialog.cpp:134 +msgid "Czech" +msgstr "Чешки" + +#: hugin1/hugin/PreferencesDialog.cpp:137 +msgid "Dutch" +msgstr "Холандски" + +#: hugin1/hugin/PreferencesDialog.cpp:140 +msgid "English" +msgstr "Английски" + +#: hugin1/hugin/PreferencesDialog.cpp:143 +msgid "French" +msgstr "Френски" + +#: hugin1/hugin/PreferencesDialog.cpp:146 +msgid "German" +msgstr "Немски" + +#: hugin1/hugin/PreferencesDialog.cpp:149 +msgid "Hungarian" +msgstr "Унгарски" + +#: hugin1/hugin/PreferencesDialog.cpp:152 +msgid "Italian" +msgstr "Италиански" + +#: hugin1/hugin/PreferencesDialog.cpp:155 +msgid "Japanese" +msgstr "Японски" + +#: hugin1/hugin/PreferencesDialog.cpp:158 +msgid "Polish" +msgstr "Полски" + +#: hugin1/hugin/PreferencesDialog.cpp:161 +msgid "Portuguese (Brazilian)" +msgstr "Португалски (Бразилия)" + +#: hugin1/hugin/PreferencesDialog.cpp:164 +msgid "Russian" +msgstr "Руски" + +#: hugin1/hugin/PreferencesDialog.cpp:167 +msgid "Slovak" +msgstr "Словашки" + +#: hugin1/hugin/PreferencesDialog.cpp:170 +msgid "Spanish" +msgstr "Испански" + +#: hugin1/hugin/PreferencesDialog.cpp:173 +msgid "Swedish" +msgstr "Шведски" + +#: hugin1/hugin/PreferencesDialog.cpp:176 +msgid "Ukrainian" +msgstr "Украински" + +#: hugin1/hugin/PreferencesDialog.cpp:273 +msgid "Select PTmender" +msgstr "Изберете PTmender" + +#: hugin1/hugin/PreferencesDialog.cpp:277 +#: hugin1/hugin/PreferencesDialog.cpp:295 +#: hugin1/hugin/PreferencesDialog.cpp:312 +#: hugin1/hugin/PreferencesDialog.cpp:328 +#: hugin1/hugin/PreferencesDialog.cpp:345 +#: hugin1/hugin/PTStitcherPanel.cpp:483 +msgid "Executables (*.exe)|*.exe" +msgstr "Изпълними файлове (*.exe)|*.exe" + +#: hugin1/hugin/PreferencesDialog.cpp:292 +msgid "Select image editor" +msgstr "Изберете редактор на изображения" + +#: hugin1/hugin/PreferencesDialog.cpp:309 +msgid "Select Enblend" +msgstr "Изберете Enblend" + +#: hugin1/hugin/PreferencesDialog.cpp:325 +msgid "Select Enfuse" +msgstr "Изберете Enfuse" + +#: hugin1/hugin/PreferencesDialog.cpp:342 +#: translations/xrc.cpp:488 +#: xrc.cpp:488 +msgid "Select Autopano" +msgstr "Изберете Autopano" + +#: hugin1/hugin/PreferencesDialog.cpp:358 +msgid "Select Autopano-SIFT" +msgstr "Изберете Autopano-SIFT" + +#: hugin1/hugin/PreferencesDialog.cpp:361 +msgid "Executables (*.exe,*.vbs,*.cmd)|*.exe;*.vbs;*.cmd" +msgstr "Изпълними файлове (*.exe,*.vbs,*.cmd)|*.exe;*.vbs;*.cmd" + +#: hugin1/hugin/PreferencesDialog.cpp:400 +msgid "Panotools details" +msgstr "Допълнителна информация за Panotools" + +#: hugin1/hugin/PreferencesDialog.cpp:801 +msgid "Really reset displayed preferences to default values?" +msgstr "Наистина ли да се върнат началните стойност на показните настройки?" + +#: hugin1/hugin/PreferencesDialog.cpp:801 +#: translations/xrc.cpp:514 +#: xrc.cpp:514 +msgid "Load Defaults" +msgstr "&Начални Настройки" + +#: hugin1/hugin/PreviewFrame.cpp:107 +msgid "Panorama preview" +msgstr "Предварителен преглед" + +#: hugin1/hugin/PreviewFrame.cpp:122 +msgid "displayed images" +msgstr "показвани изображения" + +#: hugin1/hugin/PreviewFrame.cpp:159 +msgid "VFOV" +msgstr "VFOV" + +#: hugin1/hugin/PreviewFrame.cpp:163 +msgid "drag to change the vertical field of view" +msgstr "Издърпайте с мишката за да промените вертикалното зрително поле" + +#: hugin1/hugin/PreviewFrame.cpp:172 +msgid "HFOV" +msgstr "HFOV" + +#: hugin1/hugin/PreviewFrame.cpp:177 +msgid "drag to change the horizontal field of view" +msgstr "Издърпайте с мишката за да промените хоризонталното зрително поле" + +#: hugin1/hugin/PreviewFrame.cpp:188 +msgid "Preview Options" +msgstr "Настройки на Предварителния преглед" + +#: hugin1/hugin/PreviewFrame.cpp:191 +#: translations/xrc.cpp:349 +#: xrc.cpp:349 +msgid "projection (f):" +msgstr "Проекция (f):" + +#: hugin1/hugin/PreviewFrame.cpp:234 +msgid "Blend mode:" +msgstr "Метод на сливане:" + +#: hugin1/hugin/PreviewFrame.cpp:240 +msgid "difference" +msgstr "разлика" + +#: hugin1/hugin/PreviewFrame.cpp:256 +msgid "Output:" +msgstr "Резултат:" + +#: hugin1/hugin/PreviewFrame.cpp:261 +msgid "LDR" +msgstr "LDR" + +#: hugin1/hugin/PreviewFrame.cpp:262 +msgid "HDR" +msgstr "HDR" + +#: hugin1/hugin/PreviewFrame.cpp:274 +msgid "EV:" +msgstr "EV:" + +#: hugin1/hugin/PreviewFrame.cpp:287 +#: hugin1/hugin/PreviewFrame.cpp:321 +msgid "0" +msgstr "0" + +#: hugin1/hugin/PreviewFrame.cpp:307 +msgid "Projection Parameters" +msgstr "Параметри на проекцията" + +#: hugin1/hugin/PreviewFrame.cpp:316 +msgid "param:" +msgstr "парам.:" + +#: hugin1/hugin/PreviewFrame.cpp:348 +#: hugin1/hugin/PreviewPanel.cpp:768 +msgid "Left click to define new center point, right click to move point to horizon." +msgstr "Цъкнете с ляв бутон за да определите нова централна точка. Десен за да преместите точката към хоризонта." + +#: hugin1/hugin/PreviewFrame.cpp:383 +#: hugin1/hugin/PreviewFrame.cpp:505 +msgid "Center panorama with left mouse button, set horizon with right button" +msgstr "Центрирайте панорамата с ляв бутон, а с десен определете хоризонта" + +#: hugin1/hugin/PreviewFrame.cpp:616 +msgid "Rectilinear" +msgstr "Правоъгълна" + +#: hugin1/hugin/PreviewFrame.cpp:617 +msgid "Cylindrical" +msgstr "Цилиндрична" + +#: hugin1/hugin/PreviewFrame.cpp:729 +msgid "Yaw value must be numeric." +msgstr "Вертикалното отклонение трябва да е число." + +#: hugin1/hugin/PreviewFrame.cpp:735 +msgid "Pitch value must be numeric." +msgstr "Наклонът на хоризонта трябва да е число." + +#: hugin1/hugin/PreviewFrame.cpp:741 +msgid "Roll value must be numeric." +msgstr "Завъртането около централната оптическа ос трябва да е число." + +#: hugin1/hugin/PreviewPanel.cpp:488 +msgid "Error during Stitching" +msgstr "Грешка при събирането" + +#: hugin1/hugin/PTStitcherPanel.cpp:279 +msgid "Bicubic" +msgstr "Бикубичен" + +#: hugin1/hugin/PTStitcherPanel.cpp:280 +#: translations/xrc.cpp:333 +#: xrc.cpp:333 +msgid "Spline 16" +msgstr "Сплайн 16" + +#: hugin1/hugin/PTStitcherPanel.cpp:281 +#: translations/xrc.cpp:334 +#: xrc.cpp:334 +msgid "Spline 36" +msgstr "Сплайн 36" + +#: hugin1/hugin/PTStitcherPanel.cpp:282 +#: translations/xrc.cpp:335 +#: xrc.cpp:335 +msgid "Sinc 256" +msgstr "Sinc 256" + +#: hugin1/hugin/PTStitcherPanel.cpp:283 +#: translations/xrc.cpp:336 +#: xrc.cpp:336 +msgid "Spline 64" +msgstr "Сплайн 64" + +#: hugin1/hugin/PTStitcherPanel.cpp:284 +#: translations/xrc.cpp:337 +#: xrc.cpp:337 +msgid "Bilinear" +msgstr "Билинеен" + +#: hugin1/hugin/PTStitcherPanel.cpp:285 +msgid "Nearest neighbour" +msgstr "Съседен" + +#: hugin1/hugin/PTStitcherPanel.cpp:286 +#: translations/xrc.cpp:339 +#: xrc.cpp:339 +msgid "Sinc 1024" +msgstr "" + +#: hugin1/hugin/PTStitcherPanel.cpp:450 +msgid "" +"PTStitcher does not support output filenames that include a dot character (.).\n" +"Please save your projects in a directory without dot in the pathname.\n" +"\n" +"Do you want to continue anyway?" +msgstr "" +"PTStitcher не може да запазва файлове, съдържащи точка (.) в името.\n" +"Запазете проекта в папка, в пътя за достъп на която няма точка.\n" +"\n" +"Желаете ли да продължите?" + +#: hugin1/hugin/PTStitcherPanel.cpp:451 +msgid "PTStitcher problem" +msgstr "Проблем с PTStitcher" + +#: hugin1/hugin/PTStitcherPanel.cpp:460 +msgid "PTStitcher.exe does not support QTVR output on Windows and Linux" +msgstr "PTStitcher.exe не поддържа QTVR в Windows и Linux" + +#: hugin1/hugin/PTStitcherPanel.cpp:460 +msgid "PTStitcher note" +msgstr "Съобщение от PTStitcher" + +#: hugin1/hugin/PTStitcherPanel.cpp:481 +msgid "Select PTStitcher.exe" +msgstr "Изберете PTStitcher.exe" + +#: hugin1/hugin/PTStitcherPanel.cpp:489 +msgid "No PTStitcher.exe selected" +msgstr "PTStitcher.exe не е избран" + +#: hugin1/hugin/PTStitcherPanel.cpp:498 +msgid "Select PTStitcher commandline tool" +msgstr "Избе... [truncated message content] |
From: <bru...@us...> - 2008-07-28 22:36:12
|
Revision: 3243 http://hugin.svn.sourceforge.net/hugin/?rev=3243&view=rev Author: brunopostle Date: 2008-07-28 22:36:10 +0000 (Mon, 28 Jul 2008) Log Message: ----------- it's autooptimiser not autooptimizer Modified Paths: -------------- hugin/trunk/src/tools/autooptimiser.cpp Added Paths: ----------- hugin/trunk/doc/autooptimiser.pod Removed Paths: ------------- hugin/trunk/doc/autooptimizer.pod Copied: hugin/trunk/doc/autooptimiser.pod (from rev 3242, hugin/trunk/doc/autooptimizer.pod) =================================================================== --- hugin/trunk/doc/autooptimiser.pod (rev 0) +++ hugin/trunk/doc/autooptimiser.pod 2008-07-28 22:36:10 UTC (rev 3243) @@ -0,0 +1,99 @@ +=for +Copyright 2008 Cyril Brulebois <cyr...@en...> +Licensed under the same terms as the hugin package itself. +=end + + +=head1 NAME + +autooptimiser - Optimize image positions + + +=head1 SYNOPSIS + +B<autooptimiser> [options] I<project.pto> + +(B<-> can be specified to read the project from stdio.) + +=head1 DESCRIPTION + +TODO. + + +=head1 OPTIONS + +=over + +=item B<-o> I<file.pto> + +Output file. If obmitted, stdout is used. + +=back + + +Optimisation options (if not specified, no optimisation takes place): + +=over + +=item B<-a> + +Auto align mode, includes various optimisation stages, depending on +the amount and distribution of the control points + +=item B<-p> + +Pairwise optimisation of yaw, pitch and roll, starting from first +image + +=item B<-n> + +Optimize parameters specified in script file (like PToptimizer). + +=back + + +Postprocessing options: + +=over + +=item B<-l> + +Level horizon (works best for horizontal panos) + +=item B<-s> + +Automatically select a suitable output projection and size + +=back + + +Other options: + +=over + +=item B<-q> + +Quiet operation (no progress is reported) + +=item B<-v> I<HFOV> + +Specify horizontal field of view of input images. Used if the .pto +file contains invalid HFOV values (autopano-SIFT writes .pto files +with invalid HFOV) + +=back + + + +When B<-a>, B<-l>, and B<-s> options are used together, an operation similar +to the one of the "Align" button in hugin is performed. + + +=head1 AUTHORS + +Written by Pablo d'Angelo. Also contains contributions from Douglas Wilkins, Ippei Ukai, Ed Halley, Bruno Postle, Gerry Patterson and Brent Townshend. + + +This manpage was written by Cyril Brulebois +<cyr...@en...> and is licensed under the same +terms as the hugin package itself. Deleted: hugin/trunk/doc/autooptimizer.pod =================================================================== --- hugin/trunk/doc/autooptimizer.pod 2008-07-28 04:14:00 UTC (rev 3242) +++ hugin/trunk/doc/autooptimizer.pod 2008-07-28 22:36:10 UTC (rev 3243) @@ -1,99 +0,0 @@ -=for -Copyright 2008 Cyril Brulebois <cyr...@en...> -Licensed under the same terms as the hugin package itself. -=end - - -=head1 NAME - -autooptimiser - Optimize image positions - - -=head1 SYNOPSIS - -B<autooptimiser> [options] I<project.pto> - -(B<-> can be specified to read the project from stdio.) - -=head1 DESCRIPTION - -TODO. - - -=head1 OPTIONS - -=over - -=item B<-o> I<file.pto> - -Output file. If obmitted, stdout is used. - -=back - - -Optimisation options (if not specified, no optimisation takes place): - -=over - -=item B<-a> - -Auto align mode, includes various optimisation stages, depending on -the amount and distribution of the control points - -=item B<-p> - -Pairwise optimisation of yaw, pitch and roll, starting from first -image - -=item B<-n> - -Optimize parameters specified in script file (like PToptimizer). - -=back - - -Postprocessing options: - -=over - -=item B<-l> - -Level horizon (works best for horizontal panos) - -=item B<-s> - -Automatically select a suitable output projection and size - -=back - - -Other options: - -=over - -=item B<-q> - -Quiet operation (no progress is reported) - -=item B<-v> I<HFOV> - -Specify horizontal field of view of input images. Used if the .pto -file contains invalid HFOV values (autopano-SIFT writes .pto files -with invalid HFOV) - -=back - - - -When B<-a>, B<-l>, and B<-s> options are used together, an operation similar -to the one of the "Align" button in hugin is performed. - - -=head1 AUTHORS - -Written by Pablo d'Angelo. Also contains contributions from Douglas Wilkins, Ippei Ukai, Ed Halley, Bruno Postle, Gerry Patterson and Brent Townshend. - - -This manpage was written by Cyril Brulebois -<cyr...@en...> and is licensed under the same -terms as the hugin package itself. Modified: hugin/trunk/src/tools/autooptimiser.cpp =================================================================== --- hugin/trunk/src/tools/autooptimiser.cpp 2008-07-28 04:14:00 UTC (rev 3242) +++ hugin/trunk/src/tools/autooptimiser.cpp 2008-07-28 22:36:10 UTC (rev 3243) @@ -54,7 +54,7 @@ static void usage(const char * name) { cerr << name << ": optimize image positions" << endl - << "autooptimizer version " << PACKAGE_VERSION << endl + << "autooptimiser version " << PACKAGE_VERSION << endl << endl << "Usage: " << name << " [options] input.pto" << endl << " To read a project from stdio, specify - as input file." << endl This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ip...@us...> - 2008-07-31 14:04:44
|
Revision: 3252 http://hugin.svn.sourceforge.net/hugin/?rev=3252&view=rev Author: ippei Date: 2008-07-31 14:04:34 +0000 (Thu, 31 Jul 2008) Log Message: ----------- Mac: build update; easier to compile for multiple repositories, external single architecture fix, boost 1.36 Modified Paths: -------------- hugin/trunk/mac/BuildConfig.xcconfig.orig hugin/trunk/mac/ExternalPrograms/readme.txt hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-leopard.txt hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-universal.txt hugin/trunk/mac/ExternalPrograms/scripts/boost.sh hugin/trunk/mac/ExternalPrograms/scripts/gnumake.sh hugin/trunk/mac/ExternalPrograms/scripts/libexpat.sh hugin/trunk/mac/ExternalPrograms/scripts/openexr16.sh hugin/trunk/mac/ExternalPrograms/scripts/pano13.sh hugin/trunk/mac/ExternalPrograms/scripts/static/boost.sh hugin/trunk/mac/ExternalPrograms/scripts/static/wxmac28.sh hugin/trunk/mac/ExternalPrograms/scripts/wxmac28.sh hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj hugin/trunk/mac/complete-bundle.sh hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.h Added Paths: ----------- hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-panther.txt Modified: hugin/trunk/mac/BuildConfig.xcconfig.orig =================================================================== --- hugin/trunk/mac/BuildConfig.xcconfig.orig 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/BuildConfig.xcconfig.orig 2008-07-31 14:04:34 UTC (rev 3252) @@ -1,4 +1,4 @@ -#include "Version.xcconfig" +#include "../mac/Version.xcconfig" // where external libraries are installed REPOSITORY_ABSOLUTE_PATH = /PATH/TO/HUGIN/SOURCE/mac/ExternalPrograms/repository @@ -9,26 +9,30 @@ //RELEASE_ARCHS_64 = ppc64 x86_64 // SDK target -SDKROOT_ppc = /Developer/SDKs/MacOSX10.3.9.sdk +SDKROOT_ppc = /Developer/SDKs/MacOSX10.4u.sdk SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk SDKROOT_ppc64 = /Developer/SDKs/MacOSX10.5.sdk SDKROOT_x86_64 = /Developer/SDKs/MacOSX10.5.sdk // deployment target -MACOSX_DEPLOYMENT_TARGET_ppc = 10.3.9 +MACOSX_DEPLOYMENT_TARGET_ppc = 10.4 MACOSX_DEPLOYMENT_TARGET_i386 = 10.4 MACOSX_DEPLOYMENT_TARGET_ppc64 = 10.5 MACOSX_DEPLOYMENT_TARGET_x86_64 = 10.5 // special optimization -PER_ARCH_CFLAGS_ppc = -mcpu=G3 -mtune=G4 +PER_ARCH_CFLAGS_ppc = -mcpu=G4 -mtune=G4 -ftree-vectorize PER_ARCH_CFLAGS_i386 = -march=prescott -mtune=pentium-m -ftree-vectorize PER_ARCH_CFLAGS_ppc64 = -mcpu=G5 -mtune=G5 -ftree-vectorize PER_ARCH_CFLAGS_x86_64 = -march=nocona -mtune=generic -ftree-vectorize // wxWidgets WX_MAJOR_VERSION = 2.8 -WX_LOCALE_DIR = ./ExternalPrograms/wxMac-2.8.8/locale +WX_LOCALE_DIR = ../mac/ExternalPrograms/wxMac-2.8.8/locale // ExifTool -EXIFTOOL_DIR = ./ExternalPrograms/Image-ExifTool-7.34 \ No newline at end of file +EXIFTOOL_DIR = ../mac/ExternalPrograms/Image-ExifTool-7.34 + +// Boost Thread +BOOST_VER = 1_36 +BOOST_THREAD_LIB = libboost_thread-xgcc40-mt Modified: hugin/trunk/mac/ExternalPrograms/readme.txt =================================================================== --- hugin/trunk/mac/ExternalPrograms/readme.txt 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/readme.txt 2008-07-31 14:04:34 UTC (rev 3252) @@ -24,7 +24,7 @@ The following sets are recommended and assumed for building Hugin. Different versions may require editing the version numbers in the scripts. [Dynamic Build for distributable Hugin.app] -boost (1.35.0) +boost (1.36) libexpat (2.0.1) libjpeg (6b) libpng (1.2.29) @@ -40,7 +40,7 @@ enblend31 (cvs or 3.1) [Static Build for distributable command-line tools] -static/boost (1.35.0) +static/boost (1.36) static/libexpat (2.0.1) static/libjpeg (6b) static/libpng (1.2.29) Modified: hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-leopard.txt =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-leopard.txt 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-leopard.txt 2008-07-31 14:04:34 UTC (rev 3252) @@ -17,10 +17,10 @@ REPOSITORYDIR="$myREPOSITORYDIR" \ ARCHS="ppc i386 ppc64 x86_64" \ \ - ppcTARGET="powerpc-apple-darwin7" \ - ppcOSVERSION="10.3.9" \ - ppcMACSDKDIR="/Developer/SDKs/MacOSX10.3.9.sdk" \ - ppcOPTIMIZE="-mcpu=G3 -mtune=G4" \ + ppcTARGET="powerpc-apple-darwin8" \ + ppcOSVERSION="10.4" \ + ppcMACSDKDIR="/Developer/SDKs/MacOSX10.4u.sdk" \ + ppcOPTIMIZE="-mcpu=G4 -mtune=G4 -ftree-vectorize" \ \ i386TARGET="i386-apple-darwin8" \ i386OSVERSION="10.4" \ Added: hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-panther.txt =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-panther.txt (rev 0) +++ hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-panther.txt 2008-07-31 14:04:34 UTC (rev 3252) @@ -0,0 +1,40 @@ +# Configuration for G3 and Panther build +# Copyright (c) 2007-2008, Ippei Ukai + + +# has to be the absolute path from / +myREPOSITORYDIR="/PATH2HUGIN/mac/ExternalPrograms/repository"; + +# number of jobs that make can use, probably same as the number of CPUs. +#PROCESSNUM=2 +PROCESSNUM=$(hostinfo | grep "Processors active:" | sed 's/^.*://' | wc -w | sed 's/[^[:digit:]]//g'); + + + +mkdir -p $myREPOSITORYDIR; + +export \ + REPOSITORYDIR="$myREPOSITORYDIR" \ + ARCHS="ppc" \ + \ + ppcTARGET="powerpc-apple-darwin7" \ + ppcOSVERSION="10.3" \ + ppcMACSDKDIR="/Developer/SDKs/MacOSX10.3.9.sdk" \ + ppcOPTIMIZE="-mcpu=G3 -mtune=G3" \ + \ + OTHERARGs="" \ + OTHERMAKEARGs="--jobs=$PROCESSNUM"; + + +# Deprecated: +export \ + ppcONLYARG="$ppcOPTIMIZE -mmacosx-version-min=$ppcOSVERSION" \ + + +# cmake settings +export CMAKE_INCLUDE_PATH="$REPOSITORYDIR/include" +export CMAKE_LIBRARY_PATH="$REPOSITORYDIR/lib" + + + +# $Id: SetEnv-universal.txt 1902 2007-02-04 22:27:47Z ippei $ Modified: hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-universal.txt =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-universal.txt 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/scripts/SetEnv-universal.txt 2008-07-31 14:04:34 UTC (rev 3252) @@ -17,10 +17,10 @@ REPOSITORYDIR="$myREPOSITORYDIR" \ ARCHS="ppc i386" \ \ - ppcTARGET="powerpc-apple-darwin7" \ - ppcOSVERSION="10.3.9" \ - ppcMACSDKDIR="/Developer/SDKs/MacOSX10.3.9.sdk" \ - ppcOPTIMIZE="-mcpu=G3 -mtune=G4" \ + ppcTARGET="powerpc-apple-darwin8" \ + ppcOSVERSION="10.4" \ + ppcMACSDKDIR="/Developer/SDKs/MacOSX10.4u.sdk" \ + ppcOPTIMIZE="-mcpu=G4 -mtune=G4 -ftree-vectorize" \ \ i386TARGET="i386-apple-darwin8" \ i386OSVERSION="10.4" \ Modified: hugin/trunk/mac/ExternalPrograms/scripts/boost.sh =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/boost.sh 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/scripts/boost.sh 2008-07-31 14:04:34 UTC (rev 3252) @@ -19,11 +19,12 @@ # OTHERARGs=""; -BOOST_VER="1_35" +BOOST_VER="1_36" +BOOST_THREAD_LIB="libboost_thread-xgcc40-mt" - # install headers +mkdir -p "$REPOSITORYDIR/include" rm -rf "$REPOSITORYDIR/include/boost"; cp -R "./boost" "$REPOSITORYDIR/include/"; @@ -85,13 +86,15 @@ boostADDRESSMODEL="64" fi + SDKVRSION=$(echo $MACSDKDIR | sed 's/^[^1]*\([[:digit:]]*\.[[:digit:]]*\).*/\1/') - echo "WARNING: assumes the SDK version matches the macosx-version-min" # hack that sends extra arguments to g++ $BJAM -a --stagedir="stage-$ARCH" --prefix=$REPOSITORYDIR --toolset="darwin" -n stage \ - --with-thread variant=release link=static \ - architecture="$boostARCHITECTURE" address-model="$boostADDRESSMODEL" macosx-version="$OSVERSION" \ + --with-thread \ + variant=release link=static \ + architecture="$boostARCHITECTURE" address-model="$boostADDRESSMODEL" \ + macosx-version="$SDKVRSION" macosx-version-min="$OSVERSION" \ | grep "^ " | sed 's/"//g' | sed s/g++/g++\ "$OPTIMIZE"/ | sed 's/-O3/-O2/g' \ | while read COMMAND do @@ -101,8 +104,10 @@ # hack that sends extra arguments to g++ $BJAM -a --stagedir="stage-$ARCH" --prefix=$REPOSITORYDIR --toolset="darwin" -n stage \ - --with-thread variant=release \ - architecture="$boostARCHITECTURE" address-model="$boostADDRESSMODEL" macosx-version="$OSVERSION" \ + --with-thread \ + variant=release \ + architecture="$boostARCHITECTURE" address-model="$boostADDRESSMODEL" \ + macosx-version="$SDKVRSION" macosx-version-min="$OSVERSION" \ | grep "^ " | sed 's/"//g' | sed s/g++/g++\ "$OPTIMIZE"/ | sed 's/-O3/-O2/g' \ | while read COMMAND do @@ -114,12 +119,12 @@ # merge libboost_thread -for liba in "lib/libboost_thread-mt-$BOOST_VER.a" "lib/libboost_thread-mt-$BOOST_VER.dylib" +for liba in "lib/$BOOST_THREAD_LIB-$BOOST_VER.a" "lib/$BOOST_THREAD_LIB-$BOOST_VER.dylib" do if [ $NUMARCH -eq 1 ] then - mv "stage-$ARCH/$libname" "$REPOSITORYDIR/$libname"; + mv "stage-$ARCH/$liba" "$REPOSITORYDIR/$liba"; if [[ $liba == *.a ]] then ranlib "$REPOSITORYDIR/$liba"; @@ -143,14 +148,14 @@ done -if [ -f "$REPOSITORYDIR/lib/libboost_thread-mt-$BOOST_VER.a" ] +if [ -f "$REPOSITORYDIR/lib/$BOOST_THREAD_LIB-$BOOST_VER.a" ] then - ln -sfn libboost_thread-mt-$BOOST_VER.a $REPOSITORYDIR/lib/libboost_thread-mt.a; - ln -sfn libboost_thread-mt.a $REPOSITORYDIR/lib/libboost_thread.a; + ln -sfn $BOOST_THREAD_LIB-$BOOST_VER.a $REPOSITORYDIR/lib/$BOOST_THREAD_LIB.a; + ln -sfn $BOOST_THREAD_LIB.a $REPOSITORYDIR/lib/libboost_thread.a; fi -if [ -f "$REPOSITORYDIR/lib/libboost_thread-mt-$BOOST_VER.dylib" ] +if [ -f "$REPOSITORYDIR/lib/$BOOST_THREAD_LIB-$BOOST_VER.dylib" ] then - install_name_tool -id "$REPOSITORYDIR/lib/libboost_thread-mt-$BOOST_VER.dylib" "$REPOSITORYDIR/lib/libboost_thread-mt-$BOOST_VER.dylib"; - ln -sfn libboost_thread-mt-$BOOST_VER.dylib $REPOSITORYDIR/lib/libboost_thread-mt.dylib; - ln -sfn libboost_thread-mt.dylib $REPOSITORYDIR/lib/libboost_thread.dylib; + install_name_tool -id "$REPOSITORYDIR/lib/$BOOST_THREAD_LIB-$BOOST_VER.dylib" "$REPOSITORYDIR/lib/$BOOST_THREAD_LIB-$BOOST_VER.dylib"; + ln -sfn $BOOST_THREAD_LIB-$BOOST_VER.dylib $REPOSITORYDIR/lib/$BOOST_THREAD_LIB.dylib; + ln -sfn $BOOST_THREAD_LIB.dylib $REPOSITORYDIR/lib/libboost_thread.dylib; fi Modified: hugin/trunk/mac/ExternalPrograms/scripts/gnumake.sh =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/gnumake.sh 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/scripts/gnumake.sh 2008-07-31 14:04:34 UTC (rev 3252) @@ -88,22 +88,23 @@ for program in bin/gnumake do - if [ $NUMARCH -eq 1 ] - then - mv "$REPOSITORYDIR/arch/$ARCHS/$program" "$REPOSITORYDIR/$program"; - strip "$REPOSITORYDIR/$program"; - continue - fi - LIPOARGs="" for ARCH in $ARCHS do + LIPOARGs="$LIPOARGs $REPOSITORYDIR/arch/$ARCH/$program" + + if [ $NUMARCH -eq 1 ] + then + mv "$REPOSITORYDIR/arch/$ARCH/$program" "$REPOSITORYDIR/$program"; + strip "$REPOSITORYDIR/$program"; + break; + else + lipo $LIPOARGs -create -output "$REPOSITORYDIR/$program"; + strip "$REPOSITORYDIR/$program"; + fi + done - lipo $LIPOARGs -create -output "$REPOSITORYDIR/$program"; - - strip "$REPOSITORYDIR/$program"; - done Modified: hugin/trunk/mac/ExternalPrograms/scripts/libexpat.sh =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/libexpat.sh 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/scripts/libexpat.sh 2008-07-31 14:04:34 UTC (rev 3252) @@ -93,7 +93,10 @@ if [ $NUMARCH -eq 1 ] then mv "$REPOSITORYDIR/arch/$ARCHS/$liba" "$REPOSITORYDIR/$liba"; - ranlib "$REPOSITORYDIR/$liba"; + if [[ $liba == *.a ]] + then + ranlib "$REPOSITORYDIR/$liba"; + fi continue fi Modified: hugin/trunk/mac/ExternalPrograms/scripts/openexr16.sh =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/openexr16.sh 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/scripts/openexr16.sh 2008-07-31 14:04:34 UTC (rev 3252) @@ -19,6 +19,13 @@ # OTHERARGs=""; + +EXRVER_M="6" +EXRVER_FULL="$EXRVER_M.0.0" + +NATIVE_LIBHALF_DIR="$REPOSITORYDIR/lib" + + # init let NUMARCH="0" @@ -34,7 +41,7 @@ g++ -I"$REPOSITORYDIR/include/OpenEXR" "./IlmImf/b44ExpLogTable.cpp" \ - -L"$REPOSITORYDIR/lib" -lHalf\ + -L"$NATIVE_LIBHALF_DIR" -lHalf\ -o "./IlmImf/b44ExpLogTable-native" if [ -f "./IlmImf/Makefile.in-original" ] @@ -49,9 +56,6 @@ # compile -EXRVER_M="6" -EXRVER_FULL="$EXRVER_M.0.0" - for ARCH in $ARCHS do Modified: hugin/trunk/mac/ExternalPrograms/scripts/pano13.sh =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/pano13.sh 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/scripts/pano13.sh 2008-07-31 14:04:34 UTC (rev 3252) @@ -16,9 +16,7 @@ # i386ONLYARG="-mfpmath=sse -msse2 -mtune=pentium-m -ftree-vectorize" \ # ppc64ONLYARG="-mcpu=G5 -mtune=G5 -ftree-vectorize" \ # OTHERARGs=""; - - - + # init let NUMARCH="0" @@ -66,16 +64,16 @@ MACSDKDIR=$x64MACSDKDIR ARCHARGs="$x64ONLYARG" fi - - env CFLAGS="-isysroot $MACSDKDIR -arch $ARCH $ARCHARGs $OTHERARGs -O2 -dead_strip" \ - CXXFLAGS="-isysroot $MACSDKDIR -arch $ARCH $ARCHARGs $OTHERARGs -O2 -dead_strip" \ + + env CFLAGS="-gfull -isysroot $MACSDKDIR -arch $ARCH $ARCHARGs $OTHERARGs -O2 -dead_strip" \ + CXXFLAGS="-gfull -isysroot $MACSDKDIR -arch $ARCH $ARCHARGs $OTHERARGs -O2 -dead_strip" \ CPPFLAGS="-I$REPOSITORYDIR/include" \ LDFLAGS="-L$REPOSITORYDIR/lib -dead_strip -prebind" \ NEXT_ROOT="$MACSDKDIR" \ ./configure --prefix="$REPOSITORYDIR" --disable-dependency-tracking \ --host="$TARGET" --exec-prefix=$REPOSITORYDIR/arch/$ARCH \ - --with-java=$MACSDKDIR/System/Library/Frameworks/JavaVM.framework/Versions/Current \ - --with-zlib=$MACSDKDIR/usr \ + --without-java \ + --with-zlib=/usr \ --with-png=$REPOSITORYDIR \ --with-jpeg=$REPOSITORYDIR \ --with-tiff=$REPOSITORYDIR \ Modified: hugin/trunk/mac/ExternalPrograms/scripts/static/boost.sh =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/static/boost.sh 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/scripts/static/boost.sh 2008-07-31 14:04:34 UTC (rev 3252) @@ -19,11 +19,12 @@ # OTHERARGs=""; -BOOST_VER="1_35" +BOOST_VER="1_36" +BOOST_THREAD_LIB="libboost_thread-xgcc40-mt" - # install headers +mkdir -p "$REPOSITORYDIR/include" rm -rf "$REPOSITORYDIR/include/boost"; cp -R "./boost" "$REPOSITORYDIR/include/"; @@ -72,7 +73,7 @@ elif [ $ARCH = "ppc64" -o $ARCH = "ppc970" ] then MACSDKDIR=$ppc64MACSDKDIR - OSVERSION=$ppcOSVERSION + OSVERSION=$ppc64OSVERSION OPTIMIZE=$ppc64OPTIMIZE boostARCHITECTURE="power" boostADDRESSMODEL="64" @@ -85,13 +86,15 @@ boostADDRESSMODEL="64" fi + SDKVRSION=$(echo $MACSDKDIR | sed 's/^[^1]*\([[:digit:]]*\.[[:digit:]]*\).*/\1/') - echo "WARNING: assumes the SDK version matches the macosx-version-min" # hack that sends extra arguments to g++ $BJAM -a --stagedir="stage-$ARCH" --prefix=$REPOSITORYDIR --toolset="darwin" -n stage \ - --with-thread variant=release link=static \ - architecture="$boostARCHITECTURE" address-model="$boostADDRESSMODEL" macosx-version="$OSVERSION" \ + --with-thread \ + variant=release link=static \ + architecture="$boostARCHITECTURE" address-model="$boostADDRESSMODEL" \ + macosx-version="$SDKVRSION" macosx-version-min="$OSVERSION" \ | grep "^ " | sed 's/"//g' | sed s/g++/g++\ "$OPTIMIZE"/ | sed 's/-O3/-O2/g' \ | while read COMMAND do @@ -103,7 +106,7 @@ # merge libboost_thread -for libname in "libboost_thread-mt-$BOOST_VER" +for libname in "$BOOST_THREAD_LIB-$BOOST_VER" do LIPOARGs="" @@ -131,8 +134,8 @@ done -if [ -f "$REPOSITORYDIR/lib/libboost_thread-mt-$BOOST_VER.a" ] +if [ -f "$REPOSITORYDIR/lib/$BOOST_THREAD_LIB-$BOOST_VER.a" ] then - ln -sfn libboost_thread-mt-$BOOST_VER.a $REPOSITORYDIR/lib/libboost_thread-mt.a; + ln -sfn $BOOST_THREAD_LIB-$BOOST_VER.a $REPOSITORYDIR/lib/libboost_thread.a; fi Modified: hugin/trunk/mac/ExternalPrograms/scripts/static/wxmac28.sh =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/static/wxmac28.sh 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/scripts/static/wxmac28.sh 2008-07-31 14:04:34 UTC (rev 3252) @@ -87,15 +87,14 @@ --disable-shared --disable-debug; - # disabled for all targets for now. -# # disable core graphics implementation for 10.3 -# if [[ $TARGET == *darwin7 ]] -# then +# disable core graphics implementation for 10.3 +if [[ $TARGET == *darwin7 ]] +then echo '#ifndef wxMAC_USE_CORE_GRAPHICS' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h echo ' #define wxMAC_USE_CORE_GRAPHICS 0' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h echo '#endif' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h echo '' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h -# fi +fi make clean; Modified: hugin/trunk/mac/ExternalPrograms/scripts/wxmac28.sh =================================================================== --- hugin/trunk/mac/ExternalPrograms/scripts/wxmac28.sh 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/ExternalPrograms/scripts/wxmac28.sh 2008-07-31 14:04:34 UTC (rev 3252) @@ -78,6 +78,7 @@ OSVERSION=$ppcOSVERSION fi + ARCHARGs=$(echo $ARCHARGs | sed 's/-ftree-vectorize//') env CFLAGS="-arch $ARCH $ARCHARGs $OTHERARGs -O2 -dead_strip" \ CXXFLAGS="-arch $ARCH $ARCHARGs $OTHERARGs -O2 -dead_strip" \ @@ -89,15 +90,14 @@ --enable-shared --disable-debug; - # disabled for all targets for now. -# # disable core graphics implementation for 10.3 -# if [[ $TARGET == *darwin7 ]] -# then -# echo '#ifndef wxMAC_USE_CORE_GRAPHICS' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h -# echo ' #define wxMAC_USE_CORE_GRAPHICS 0' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h -# echo '#endif' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h -# echo '' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h -# fi +# disable core graphics implementation for 10.3 +if [[ $TARGET == *darwin7 ]] +then + echo '#ifndef wxMAC_USE_CORE_GRAPHICS' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h + echo ' #define wxMAC_USE_CORE_GRAPHICS 0' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h + echo '#endif' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h + echo '' >> lib/wx/include/mac-unicode-release-$WXVERSION/wx/setup.h +fi make clean; Modified: hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj =================================================================== --- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2008-07-30 03:18:31 UTC (rev 3251) +++ hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2008-07-31 14:04:34 UTC (rev 3252) @@ -254,9 +254,9 @@ 57565A580D088CFD00344F55 /* huginConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 57565A4A0D088CFD00344F55 /* huginConfig.h */; }; 57565A590D088CFD00344F55 /* platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57565A4B0D088CFD00344F55 /* platform.cpp */; }; 57565A5A0D088CFD00344F55 /* platform.h in Headers */ = {isa = PBXBuildFile; fileRef = 57565A4C0D088CFD00344F55 /* platform.h */; }; - 57565A650D088DAD00344F55 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; - 57565A660D088DAD00344F55 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; - 57565A740D088EA600344F55 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; + 57565A650D088DAD00344F55 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; + 57565A660D088DAD00344F55 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; + 57565A740D088EA600344F55 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; 57565A7C0D088F2E00344F55 /* ComputeImageROI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57565A790D088F2E00344F55 /* ComputeImageROI.cpp */; }; 57565A7D0D088F2E00344F55 /* ComputeImageROI.h in Headers */ = {isa = PBXBuildFile; fileRef = 57565A7A0D088F2E00344F55 /* ComputeImageROI.h */; }; 5759D9C20C3271640043F754 /* Command.h in Headers */ = {isa = PBXBuildFile; fileRef = 5759D9B50C3271640043F754 /* Command.h */; }; @@ -325,7 +325,7 @@ 576900F80D24D3DC00A6AD01 /* libwx_macu-2.8.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57989544068E2F22009F90BF /* libwx_macu-2.8.dylib */; }; 576900FA0D24D3DC00A6AD01 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5749FA9B067B80F000A6EDD4 /* Carbon.framework */; }; 576900FB0D24D3DC00A6AD01 /* libpano13.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 573B8F85067BAAB900B7B355 /* libpano13.dylib */; }; - 576900FC0D24D3DC00A6AD01 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; + 576900FC0D24D3DC00A6AD01 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; 576900FD0D24D3DC00A6AD01 /* libpng.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FA06BD7388004058A1 /* libpng.dylib */; }; 576900FE0D24D3DC00A6AD01 /* libtiff.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FB06BD7388004058A1 /* libtiff.dylib */; }; 576900FF0D24D3DC00A6AD01 /* libjpeg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57D14A4506B8A3D100D8A03D /* libjpeg.dylib */; }; @@ -457,7 +457,7 @@ 5769017F0D24D3F200A6AD01 /* MultiThreadOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5771F72A0C301FC100736343 /* MultiThreadOperations.cpp */; }; 576901810D24D3F200A6AD01 /* libhugin_levmar.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5720E47A0BD456CD00E63404 /* libhugin_levmar.a */; }; 576901820D24D3F200A6AD01 /* libpano13.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 573B8F85067BAAB900B7B355 /* libpano13.dylib */; }; - 576901830D24D3F200A6AD01 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; + 576901830D24D3F200A6AD01 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; 576901840D24D3F200A6AD01 /* libpng.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FA06BD7388004058A1 /* libpng.dylib */; }; 576901850D24D3F200A6AD01 /* libtiff.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FB06BD7388004058A1 /* libtiff.dylib */; }; 576901860D24D3F200A6AD01 /* libjpeg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57D14A4506B8A3D100D8A03D /* libjpeg.dylib */; }; @@ -479,7 +479,7 @@ 576901D80D24D88E00A6AD01 /* HuginBase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 576900AA0D24D29300A6AD01 /* HuginBase.framework */; }; 576901DB0D24D89A00A6AD01 /* HuginVigraImpex.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5769FE380D24CFEC00A6AD01 /* HuginVigraImpex.framework */; }; 576901DC0D24D89A00A6AD01 /* HuginBase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 576900AA0D24D29300A6AD01 /* HuginBase.framework */; }; - 576901E40D24D8CF00A6AD01 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; + 576901E40D24D8CF00A6AD01 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; 576901EB0D24D95100A6AD01 /* HuginVigraImpex.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5769FE380D24CFEC00A6AD01 /* HuginVigraImpex.framework */; }; 576901EC0D24D95100A6AD01 /* HuginBase.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 576900AA0D24D29300A6AD01 /* HuginBase.framework */; }; 576901ED0D24D95100A6AD01 /* HuginBaseWx.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 576900E10D24D32C00A6AD01 /* HuginBaseWx.framework */; }; @@ -501,7 +501,7 @@ 5769F61A0D23825700A6AD01 /* libIlmThread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577786110BF347B80041F8FF /* libIlmThread.dylib */; }; 5769F61B0D23825700A6AD01 /* libImath.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5777860A0BF3477A0041F8FF /* libImath.dylib */; }; 5769F61C0D23825700A6AD01 /* libHalf.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577786180BF348E90041F8FF /* libHalf.dylib */; }; - 5769F62A0D23825700A6AD01 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; + 5769F62A0D23825700A6AD01 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; 5769F6370D2383A600A6AD01 /* hugin_stitch_project.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 575670980D089B1F00344F55 /* hugin_stitch_project.cpp */; }; 5769F7A30D239D6A00A6AD01 /* enfuse in Copy Executable Files */ = {isa = PBXBuildFile; fileRef = 5769F79E0D239D6A00A6AD01 /* enfuse */; }; 5769F7A40D239D6A00A6AD01 /* PTblender in Copy Executable Files */ = {isa = PBXBuildFile; fileRef = 5769F79F0D239D6A00A6AD01 /* PTblender */; }; @@ -675,7 +675,7 @@ 57AC373D0D2BE6340086D348 /* libhugin_levmar.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5720E47A0BD456CD00E63404 /* libhugin_levmar.a */; }; 57AC37410D2BE68D0086D348 /* libhugin_math.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5771F77A0C30216F00736343 /* libhugin_math.a */; }; 57AC37430D2BE6950086D348 /* libhugin_nona.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5740922A0C393E6600D16607 /* libhugin_nona.a */; }; - 57AC37450D2BE6A00086D348 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; + 57AC37450D2BE6A00086D348 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; 57B88E5F0C36CD7E00EC6519 /* Panorama.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57B88E5D0C36CD7E00EC6519 /* Panorama.cpp */; }; 57C313C00C37E04500E00EDC /* PTScriptParsing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57C313BF0C37E04500E00EDC /* PTScriptParsing.cpp */; }; 57C4868E0C31299E002D79F1 /* hugin_math.h in Headers */ = {isa = PBXBuildFile; fileRef = 57C4868D0C31299E002D79F1 /* hugin_math.h */; }; @@ -701,7 +701,7 @@ 57D382DF0E2369FC00445A37 /* libImath.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5777860A0BF3477A0041F8FF /* libImath.dylib */; }; 57D382E00E2369FC00445A37 /* libHalf.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577786180BF348E90041F8FF /* libHalf.dylib */; }; 57D382E10E2369FC00445A37 /* libpano13.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 573B8F85067BAAB900B7B355 /* libpano13.dylib */; }; - 57D382E20E2369FC00445A37 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; + 57D382E20E2369FC00445A37 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; 57D382E30E2369FC00445A37 /* libexpat.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5731C4920D5532D400605D22 /* libexpat.dylib */; }; 57D382F30E236A0800445A37 /* APImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7332AE560D8D491B002BF5FF /* APImage.cpp */; }; 57D382F40E236A0800445A37 /* Descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7332AE790D8D491B002BF5FF /* Descriptor.cpp */; }; @@ -792,7 +792,7 @@ 57EA84720C3A8AB400E4965E /* CalculateMeanExposure.h in Headers */ = {isa = PBXBuildFile; fileRef = 57EA84700C3A8AB400E4965E /* CalculateMeanExposure.h */; }; 57EA97D90C3A940500E4965E /* RotatePanorama.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57EA97D70C3A940500E4965E /* RotatePanorama.cpp */; }; 57EA97DA0C3A940500E4965E /* RotatePanorama.h in Headers */ = {isa = PBXBuildFile; fileRef = 57EA97D80C3A940500E4965E /* RotatePanorama.h */; }; - 57FEE0F80D28835400DAF7A4 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; + 57FEE0F80D28835400DAF7A4 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; 57FEE0F90D28835400DAF7A4 /* libpano13.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 573B8F85067BAAB900B7B355 /* libpano13.dylib */; }; 57FEE0FA0D28835400DAF7A4 /* libpng.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FA06BD7388004058A1 /* libpng.dylib */; }; 57FEE0FB0D28835400DAF7A4 /* libtiff.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FB06BD7388004058A1 /* libtiff.dylib */; }; @@ -823,7 +823,7 @@ 7332AEC40D8D4C45002BF5FF /* HessianDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7332AE840D8D491C002BF5FF /* HessianDetector.cpp */; }; 73BDB8950DA552EF00027833 /* matchpoint-complete-mac.sh in Resources */ = {isa = PBXBuildFile; fileRef = 73BDB8900DA552D500027833 /* matchpoint-complete-mac.sh */; }; 73C958FA0DA2C9DB00E19110 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 579895AB068E3002009F90BF /* libz.dylib */; }; - 73C958FB0DA2C9DB00E19110 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; + 73C958FB0DA2C9DB00E19110 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; 73C958FD0DA2C9DB00E19110 /* libpng.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FA06BD7388004058A1 /* libpng.dylib */; }; 73C958FE0DA2C9DB00E19110 /* libtiff.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FB06BD7388004058A1 /* libtiff.dylib */; }; 73C958FF0DA2C9DB00E19110 /* libjpeg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57D14A4506B8A3D100D8A03D /* libjpeg.dylib */; }; @@ -848,7 +848,7 @@ 73E79F100D674EAC00C07126 /* align_image_stack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5769F83B0D23A98400A6AD01 /* align_image_stack.cpp */; }; 73E79F120D674EAC00C07126 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 579895AB068E3002009F90BF /* libz.dylib */; }; 73E79F130D674EAC00C07126 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57989581068E2FD7009F90BF /* libiconv.dylib */; }; - 73E79F140D674EAC00C07126 /* libboost_thread-mt.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */; }; + 73E79F140D674EAC00C07126 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; 73E79F150D674EAC00C07126 /* libpng.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FA06BD7388004058A1 /* libpng.dylib */; }; 73E79F160D674EAC00C07126 /* libtiff.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FB06BD7388004058A1 /* libtiff.dylib */; }; 73E79F170D674EAC00C07126 /* libjpeg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57D14A4506B8A3D100D8A03D /* libjpeg.dylib */; }; @@ -1620,6 +1620,10 @@ 57454C35094E501800E6B672 /* wx-2.8 */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = folder; path = "wx-2.8"; sourceTree = "<group>"; }; 5749F8A3067B60CA00A6EDD4 /* libhugin_jhead.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libhugin_jhead.a; sourceTree = BUILT_PRODUCTS_DIR; }; 5749FA9B067B80F000A6EDD4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = "<group>"; }; + 574B81B40E41996700644179 /* LICENCE_JHEAD */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENCE_JHEAD; sourceTree = "<group>"; }; + 574B81B50E41996700644179 /* LICENCE_VIGRA */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENCE_VIGRA; sourceTree = "<group>"; }; + 574B81B60E41997700644179 /* README_JP */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README_JP; sourceTree = "<group>"; }; + 574B81B90E41999300644179 /* platforms */ = {isa = PBXFileReference; lastKnownFileType = folder; path = platforms; sourceTree = "<group>"; }; 57525A250C54BC4400BF8096 /* Nona.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Nona.app; sourceTree = BUILT_PRODUCTS_DIR; }; 57565A3F0D088CFD00344F55 /* ImageCache.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ImageCache.cpp; sourceTree = "<group>"; }; 57565A400D088CFD00344F55 /* ImageCache.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ImageCache.h; sourceTree = "<group>"; }; @@ -1635,7 +1639,7 @@ 57565A4A0D088CFD00344F55 /* huginConfig.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = huginConfig.h; sourceTree = "<group>"; }; 57565A4B0D088CFD00344F55 /* platform.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = platform.cpp; sourceTree = "<group>"; }; 57565A4C0D088CFD00344F55 /* platform.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = "<group>"; }; - 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libboost_thread-mt.dylib"; path = "lib/libboost_thread-mt.dylib"; sourceTree = "<group>"; }; + 57565A640D088DAD00344F55 /* libboost_thread.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libboost_thread.dylib; path = lib/libboost_thread.dylib; sourceTree = "<group>"; }; 57565A790D088F2E00344F55 /* ComputeImageROI.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ComputeImageROI.cpp; path = algorithms/nona/ComputeImageROI.cpp; sourceTree = "<group>"; }; 57565A7A0D088F2E00344F55 /* ComputeImageROI.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ComputeImageROI.h; path = algorithms/nona/ComputeImageROI.h; sourceTree = "<group>"; }; 575670980D089B1F00344F55 /* hugin_stitch_project.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = hugin_stitch_project.cpp; sourceTree = "<group>"; }; @@ -1813,12 +1817,12 @@ 57D14A4506B8A3D100D8A03D /* libjpeg.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libjpeg.dylib; path = lib/libjpeg.dylib; sourceTree = "<group>"; }; 57D18D8E0E13BD340054A523 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = "<group>"; }; 57D18D8F0E13BD340054A523 /* SVN-rev.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = "SVN-rev.xcconfig"; sourceTree = "<group>"; }; - 57D382EB0E2369FC00445A37 /* nona */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = nona; sourceTree = "<group>"; }; - 57D3830D0E236A0800445A37 /* matchpoint */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = matchpoint; sourceTree = "<group>"; }; + 57D382EB0E2369FC00445A37 /* nona */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = nona; sourceTree = BUILT_PRODUCTS_DIR; }; + 57D3830D0E236A0800445A37 /* matchpoint */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = matchpoint; sourceTree = BUILT_PRODUCTS_DIR; }; 57D475B60D3CE0AB003CF158 /* translations */ = {isa = PBXFileReference; lastKnownFileType = folder; path = translations; sourceTree = "<group>"; }; 57D55913067BDB84005E4CCD /* libmx.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libmx.dylib; path = usr/lib/libmx.dylib; sourceTree = "<group>"; }; 57D5DCD6073FD86D0027E52F /* hugin_config_mac.h */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.corefile"; fileEncoding = 4; languageSpecificationIdentifier = c.cpp; path = hugin_config_mac.h; sourceTree = "<group>"; }; - 57E122010D2BDBF300743A93 /* BuildConfig.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = BuildConfig.xcconfig; sourceTree = "<group>"; }; + 57E122010D2BDBF300743A93 /* BuildConfig.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = BuildConfig.xcconfig; sourceTree = SOURCE_ROOT; }; 57E122480D2BE45700743A93 /* hugin_version.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 30; path = hugin_version.h; sourceTree = "<group>"; }; 57E122580D2BE4E900743A93 /* align_image_stack */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = align_image_stack; sourceTree = BUILT_PRODUCTS_DIR; }; 57E32FAF0C4A87F1006AA781 /* ImageGraph.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ImageGraph.h; sourceTree = "<group>"; }; @@ -1960,7 +1964,6 @@ 57EA97D80C3A940500E4965E /* RotatePanorama.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = RotatePanorama.h; path = algorithms/basic/RotatePanorama.h; sourceTree = "<group>"; }; 57F7B2150C521B7C00E0C537 /* hugin1.pch */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = hugin1.pch; sourceTree = "<group>"; }; 57FD3E5E06E98ED50070426B /* pano13 */ = {isa = PBXFileReference; lastKnownFileType = folder; path = pano13; sourceTree = "<group>"; }; - 731ADE960D66E1AB004161DF /* autopano-sift-c */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = "autopano-sift-c"; path = "bin/autopano-sift-c"; sourceTree = "<group>"; }; 7332AE560D8D491B002BF5FF /* APImage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = APImage.cpp; sourceTree = "<group>"; }; 7332AE570D8D491B002BF5FF /* APImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = APImage.h; sourceTree = "<group>"; }; 7332AE590D8D491B002BF5FF /* cmake_install.cmake */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = cmake_install.cmake; sourceTree = "<group>"; }; @@ -2009,10 +2012,7 @@ 7332AE8E0D8D491C002BF5FF /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; }; 7332AE8F0D8D491C002BF5FF /* README */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = README; sourceTree = "<group>"; }; 7332AEAE0D8D4986002BF5FF /* matchpoint */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = matchpoint; sourceTree = BUILT_PRODUCTS_DIR; }; - 736B5B9F0D8074DD00638B14 /* panomatic */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = panomatic; path = bin/panomatic; sourceTree = "<group>"; }; 736FD2C80DA158A2009A47C2 /* tca_correct.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = tca_correct.cpp; sourceTree = "<group>"; }; - 737ECC720DA56633003BC9F5 /* generatekeys */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = generatekeys; path = bin/generatekeys; sourceTree = "<group>"; }; - 737ECC800DA56F5D003BC9F5 /* autopano */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = autopano; path = bin/autopano; sourceTree = "<group>"; }; 73BDB8900DA552D500027833 /* matchpoint-complete-mac.sh */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path = "matchpoint-complete-mac.sh"; sourceTree = "<group>"; }; 73C959140DA2C9DB00E19110 /* tca_correct */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tca_correct; sourceTree = BUILT_PRODUCTS_DIR; }; 73E79F300D674EAC00C07126 /* align_image_stack */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = align_image_stack; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -2067,7 +2067,7 @@ 57525A4D0C54BCEA00BF8096 /* libIlmThread.dylib in Frameworks */, 57525A4E0C54BCEA00BF8096 /* libImath.dylib in Frameworks */, 57525A4F0C54BCEA00BF8096 /* libHalf.dylib in Frameworks */, - 57565A660D088DAD00344F55 /* libboost_thread-mt.dylib in Frameworks */, + 57565A660D088DAD00344F55 /* libboost_thread.dylib in Frameworks */, 5710466C0D25F577006A3C69 /* HuginVigraImpex.framework in Frameworks */, 5710466D0D25F577006A3C69 /* HuginBase.framework in Frameworks */, 5710466E0D25F577006A3C69 /* HuginBaseWx.framework in Frameworks */, @@ -2080,7 +2080,7 @@ buildActionMask = 2147483647; files = ( 576482AA0C469052003AFC2F /* libz.dylib in Frameworks */, - 57FEE0F80D28835400DAF7A4 /* libboost_thread-mt.dylib in Frameworks */, + 57FEE0F80D28835400DAF7A4 /* libboost_thread.dylib in Frameworks */, 57FEE0F90D28835400DAF7A4 /* libpano13.dylib in Frameworks */, 57FEE0FA0D28835400DAF7A4 /* libpng.dylib in Frameworks */, 57FEE0FB0D28835400DAF7A4 /* libtiff.dylib in Frameworks */, @@ -2136,7 +2136,7 @@ 576901A70D24D56700A6AD01 /* HuginVigraImpex.framework in Frameworks */, 576901810D24D3F200A6AD01 /* libhugin_levmar.a in Frameworks */, 576901820D24D3F200A6AD01 /* libpano13.dylib in Frameworks */, - 576901830D24D3F200A6AD01 /* libboost_thread-mt.dylib in Frameworks */, + 576901830D24D3F200A6AD01 /* libboost_thread.dylib in Frameworks */, 576901840D24D3F200A6AD01 /* libpng.dylib in Frameworks */, 576901850D24D3F200A6AD01 /* libtiff.dylib in Frameworks */, 576901860D24D3F200A6AD01 /* libjpeg.dylib in Frameworks */, @@ -2160,7 +2160,7 @@ 576901AA0D24D57600A6AD01 /* HuginVigraImpex.framework in Frameworks */, 576900FA0D24D3DC00A6AD01 /* Carbon.framework in Frameworks */, 576900FB0D24D3DC00A6AD01 /* libpano13.dylib in Frameworks */, - 576900FC0D24D3DC00A6AD01 /* libboost_thread-mt.dylib in Frameworks */, + 576900FC0D24D3DC00A6AD01 /* libboost_thread.dylib in Frameworks */, 576900FD0D24D3DC00A6AD01 /* libpng.dylib in Frameworks */, 576900FE0D24D3DC00A6AD01 /* libtiff.dylib in Frameworks */, 576900FF0D24D3DC00A6AD01 /* libjpeg.dylib in Frameworks */, @@ -2194,7 +2194,7 @@ 5769F61A0D23825700A6AD01 /* libIlmThread.dylib in Frameworks */, 5769F61B0D23825700A6AD01 /* libImath.dylib in Frameworks */, 5769F61C0D23825700A6AD01 /* libHalf.dylib in Frameworks */, - 5769F62A0D23825700A6AD01 /* libboost_thread-mt.dylib in Frameworks */, + 5769F62A0D23825700A6AD01 /* libboost_thread.dylib in Frameworks */, 5731C4E20D55380B00605D22 /* libexpat.dylib in Frameworks */, 576901CA0D24D81000A6AD01 /* HuginVigraImpex.framework in Frameworks */, 576901CB0D24D81000A6AD01 /* HuginBase.framework in Frameworks */, @@ -2216,7 +2216,7 @@ 5769F8610D23AA5D00A6AD01 /* libImath.dylib in Frameworks */, 5769F8620D23AA5D00A6AD01 /* libHalf.dylib in Frameworks */, 5769F8630D23AA5D00A6AD01 /* libpano13.dylib in Frameworks */, - 576901E40D24D8CF00A6AD01 /* libboost_thread-mt.dylib in Frameworks */, + 576901E40D24D8CF00A6AD01 /* libboost_thread.dylib in Frameworks */, 5731C4D40D5537BE00605D22 /* libexpat.dylib in Frameworks */, 576901DB0D24D89A00A6AD01 /* HuginVigraImpex.framework in Frameworks */, 576901DC0D24D89A00A6AD01 /* HuginBase.framework in Frameworks */, @@ -2252,7 +2252,7 @@ 5796FA880C4395CC006B7C6E /* libImath.dylib in Frameworks */, 5796FA890C4395CC006B7C6E /* libHalf.dylib in Frameworks */, 5796FA8A0C4395CC006B7C6E /* libpano13.dylib in Frameworks */, - 57565A740D088EA600344F55 /* libboost_thread-mt.dylib in Frameworks */, + 57565A740D088EA600344F55 /* libboost_thread.dylib in Frameworks */, 5731C4D00D5537A600605D22 /* libexpat.dylib in Frameworks */, 576901D70D24D88E00A6AD01 /* HuginVigraImpex.framework in Frameworks */, 576901D80D24D88E00A6AD01 /* HuginBase.framework in Frameworks */, @@ -2273,7 +2273,7 @@ 57D382DF0E2369FC00445A37 /* libImath.dylib in Frameworks */, 57D382E00E2369FC00445A37 /* libHalf.dylib in Frameworks */, 57D382E10E2369FC00445A37 /* libpano13.dylib in Frameworks */, - 57D382E20E2369FC00445A37 /* libboost_thread-mt.dylib in Frameworks */, + 57D382E20E2369FC00445A37 /* libboost_thread.dylib in Frameworks */, 57D382E30E2369FC00445A37 /* libexpat.dylib in Frameworks */, 57D383230E236B1D00445A37 /* libhugin_jhead.a in Frameworks */, 57D383240E236B1D00445A37 /* libhugin_vigra_impex.a in Frameworks */, @@ -2322,7 +2322,7 @@ files = ( 57AC372B0D2BE6340086D348 /* libz.dylib in Frameworks */, 5731CA900D56057A00605D22 /* libiconv.dylib in Frameworks */, - 57AC37450D2BE6A00086D348 /* libboost_thread-mt.dylib in Frameworks */, + 57AC37450D2BE6A00086D348 /* libboost_thread.dylib in Frameworks */, 57AC372C0D2BE6340086D348 /* libpng.dylib in Frameworks */, 57AC372D0D2BE6340086D348 /* libtiff.dylib in Frameworks */, 57AC372E0D2BE6340086D348 /* libjpeg.dylib in Frameworks */, @@ -2367,7 +2367,7 @@ 57E346EC0C4A8AC2006AA781 /* libIlmThread.dylib in Frameworks */, 57E346ED0C4A8AC2006AA781 /* libImath.dylib in Frameworks */, 57E346EE0C4A8AC2006AA781 /* libHalf.dylib in Frameworks */, - 57565A650D088DAD00344F55 /* libboost_thread-mt.dylib in Frameworks */, + 57565A650D088DAD00344F55 /* libboost_thread.dylib in Frameworks */, 5731C4DD0D5537EA00605D22 /* libexpat.dylib in Frameworks */, 576901EB0D24D95100A6AD01 /* HuginVigraImpex.framework in Frameworks */, 576901EC0D24D95100A6AD01 /* HuginBase.framework in Frameworks */, @@ -2404,7 +2404,7 @@ 73C9592A0DA2CB7400E19110 /* libiconv.dylib in Frameworks */, 73C959390DA2CCA100E19110 /* libpano13.dylib in Frameworks */, 73C9591F0DA2CAF600E19110 /* libhugin_levmar.a in Frameworks */, - 73C958FB0DA2C9DB00E19110 /* libboost_thread-mt.dylib in Frameworks */, + 73C958FB0DA2C9DB00E19110 /* libboost_thread.dylib in Frameworks */, 73C958FD0DA2C9DB00E19110 /* libpng.dylib in Frameworks */, 73C958FE0DA2C9DB00E19110 /* libtiff.dylib in Frameworks */, 73C9593D0DA2CCE000E19110 /* libHalf.dylib in Frameworks */, @@ -2429,7 +2429,7 @@ files = ( 73E79F120D674EAC00C07126 /* libz.dylib in Frameworks */, 73E79F130D674EAC00C07126 /* libiconv.dylib in Frameworks */, - 73E79F140D674EAC00C07126 /* libboost_thread-mt.dylib in Frameworks */, + 73E79F140D674EAC00C07126 /* libboost_thread.dylib in Frameworks */, 73E79F150D674EAC00C07126 /* libpng.dylib in Frameworks */, 73E79F160D674EAC00C07126 /* libtiff.dylib in Frameworks */, 73E79F170D674EAC00C07126 /* libjpeg.dylib in Frameworks */, @@ -2484,7 +2484,7 @@ 576900AB0D24D29300A6AD01 /* hugin_base-Info.plist */, 576900E20D24D32C00A6AD01 /* base_wx-Info.plist */, ); - name = mac; + path = mac; sourceTree = "<group>"; }; 57114EC106BC2301004F4FA7 /* foreign */ = { @@ -2702,7 +2702,6 @@ 573B9041067BAEA700B7B355 /* tools-dynamic */, 57D18D880E13BC8A0054A523 /* tools-static */, 57BB2817068114B2006EDB38 /* Mac OS X */, - 57525A1E0C54BBF600BF8096 /* test */, ); name = Product; sourceTree = BUILT_PRODUCTS_DIR; @@ -2746,7 +2745,7 @@ 57115FB60B7778FE00B522DF /* scripts */, ); path = ExternalPrograms; - sourceTree = "<group>"; + sourceTree = SOURCE_ROOT; }; 573E2E5E0B76AD0100E86281 /* Documents */ = { isa = PBXGroup; @@ -2770,18 +2769,14 @@ 5745FBE5094E1C4700E6B672 /* repository */ = { isa = PBXGroup; children = ( - 737ECC800DA56F5D003BC9F5 /* autopano */, 570898E30D4CB635008949E7 /* gnumake */, 5769F7A10D239D6A00A6AD01 /* PTmender */, 5769F79F0D239D6A00A6AD01 /* PTblender */, - 737ECC720DA56633003BC9F5 /* generatekeys */, - 731ADE960D66E1AB004161DF /* autopano-sift-c */, 5769F7A00D239D6A00A6AD01 /* PTmasker */, - 736B5B9F0D8074DD00638B14 /* panomatic */, 5769F7A20D239D6A00A6AD01 /* PTroller */, 570D581A082A9ED50030E768 /* enblend */, 5769F79E0D239D6A00A6AD01 /* enfuse */, - 57565A640D088DAD00344F55 /* libboost_thread-mt.dylib */, + 57565A640D088DAD00344F55 /* libboost_thread.dylib */, 573B8F85067BAAB900B7B355 /* libpano13.dylib */, 577092FA06BD7388004058A1 /* libpng.dylib */, 577092FB06BD7388004058A1 /* libtiff.dylib */, @@ -2835,20 +2830,32 @@ path = /; sourceTree = "<absolute>"; }; - 5751D8600939F1C0001477EA /* Hugin.xcodeproj */ = { + 574B81880E4198FE00644179 /* hugin */ = { isa = PBXGroup; children = ( - 578414E10C313E7500546EAD /* project.pbxproj */, + 579D36060C0EFD4D00BFC58C /* src */, + 57114E9E06BC2301004F4FA7 /* mac */, + 57CCCC29086C957E000EBC4A /* AUTHORS */, + 57CCCC39086C957E000EBC4A /* COPYING */, + 57CCCC3C086C957E000EBC4A /* LICENCE */, + 574B81B40E41996700644179 /* LICENCE_JHEAD */, + 574B81B50E41996700644179 /* LICENCE_VIGRA */, + 57CCCC4E086C957E000EBC4A /* README */, + 574B81B60E41997700644179 /* README_JP */, + 574B81B90E41999300644179 /* platforms */, + 57CCCC5C086C9651000EBC4A /* utils */, ); - name = Hugin.xcodeproj; - sourceTree = "<group>"; + name = hugin; + path = ..; + sourceTree = SOURCE_ROOT; }; - 57525A1E0C54BBF600BF8096 /* test */ = { + 5751D8600939F1C0001477EA /* Hugin.xcodeproj */ = { isa = PBXGroup; children = ( + 578414E10C313E7500546EAD /* project.pbxproj */, ); - name = test; - sourceTree = "<group>"; + name = Hugin.xcodeproj; + sourceTree = SOURCE_ROOT; }; 57565A3D0D088CFD00344F55 /* base_wx */ = { isa = PBXGroup; @@ -3143,8 +3150,7 @@ 7332AE550D8D491B002BF5FF /* matchpoint */, 57D475B60D3CE0AB003CF158 /* translations */, ); - name = src; - path = ../src; + path = src; sourceTree = "<group>"; }; 57B88E610C36CD8F00EC6519 /* photometric */ = { @@ -3165,19 +3171,6 @@ name = "Mac OS X"; sourceTree = "<group>"; }; - 57CCCC23086C9530000EBC4A /* attached */ = { - isa = PBXGroup; - children = ( - 57CCCC5C086C9651000EBC4A /* utils */, - 57CCCC29086C957E000EBC4A /* AUTHORS */, - 57CCCC39086C957E000EBC4A /* COPYING */, - 57CCCC3C086C957E000EBC4A /* LICENCE */, - 57CCCC4E086C957E000EBC4A /* README */, - ); - name = attached; - path = ..; - sourceTree = SOURCE_ROOT; - }; 57D18D880E13BC8A0054A523 /* tools-static */ = { isa = PBXGroup; children = ( @@ -3470,10 +3463,8 @@ isa = PBXGroup; children = ( 57E34AC90C4ACE1C006AA781 /* math.h */, - 579D36060C0EFD4D00BFC58C /* src */, - 57114E9E06BC2301004F4FA7 /* mac */, + 574B81880E4198FE00644179 /* hugin */, 5745FC05094E1D5400E6B672 /* External */, - 57CCCC23086C9530000EBC4A /* attached */, 573B8F3E067BA2EB00B7B355 /* Product */, ); sourceTree = "<group>"; @@ -4702,7 +4693,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION = \"build\" ]\nthen\n ./complete-bundle.sh\nfi"; + shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/complete-bundle.sh\nfi"; }; 5710465D0D25F490006A3C69 /* Complete Embedding */ = { isa = PBXShellScriptBuildPhase; @@ -4716,7 +4707,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION = \"build\" ]\nthen\n ./complete-embed.sh\nfi"; + shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/complete-embed.sh\nfi"; }; 571046750D25F5C5006A3C69 /* Complete Bundle */ = { isa = PBXShellScriptBuildPhase; @@ -4730,7 +4721,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION = \"build\" ]\nthen\n ./complete-bundle.sh\nfi"; + shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/complete-bundle.sh\nfi"; }; 571D8AC70E212172006D0305 /* Locale Script */ = { isa = PBXShellScriptBuildPhase; @@ -4744,7 +4735,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION = \"build\" ]\nthen\n ./localised.sh\nfi"; + shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/localised.sh\nfi"; }; 571D8C740E2132DE006D0305 /* Patch XRC */ = { isa = PBXShellScriptBuildPhase; @@ -4758,7 +4749,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION = \"build\" ]\nthen\n ./patch-xrc.sh\nfi"; + shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/patch-xrc.sh\nfi"; }; 571D8C8E0E213833006D0305 /* Localise Help */ = { isa = PBXShellScriptBuildPhase; @@ -4772,7 +4763,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION = \"build\" ]\nthen\n ./localise-help.sh\nfi"; + shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/localise-help.sh\nfi"; }; 576902030D24DA9500A6AD01 /* Complete Bundle */ = { isa = PBXShellScriptBuildPhase; @@ -4786,7 +4777,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION = \"build\" ]\nthen\n ./complete-bundle.sh\nfi"; + shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/complete-bundle.sh\nfi"; }; 579374850D47E7E500A52730 /* Copy ExifTool */ = { isa = PBXShellScriptBuildPhase; @@ -4800,7 +4791,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION = \"build\" ]\nthen\n ./copyExifTool.sh\nfi"; + shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/copyExifTool.sh\nfi"; }; 57C4863E0C3122C4002D79F1 /* copy hugin_config.h */ = { isa = PBXShellScriptBuildPhase; @@ -4830,7 +4821,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "rm -f \"./SVN-rev.xcconfig\"\n\nif [ $(svnversion -n \"../\") = \"exported\" ]\nthen\n echo \"\" > \"./SVN-rev.xcconfig\"\nelse\n echo 'HUGIN_WC_REVISION = '$(svnversion -n \"../\" | grep -o '^[0-9]*') > \"./SVN-rev.xcconfig\"\n echo 'HUGIN_PRERELEASE_VERSION_TAG = -svn'$(svnversion -n \"../\") >> \"./SVN-rev.xcconfig\"\nfi"; + shellScript = "rm -f \"../mac/SVN-rev.xcconfig\"\n\nif [ $(svnversion -n \"../\") = \"exported\" ]\nthen\n echo \"\" > \"../mac/SVN-rev.xcconfig\"\nelse\n echo 'HUGIN_WC_REVISION = '$(svnversion -n \"../\" | grep -o '^[0-9]*') > \"../mac/SVN-rev.xcconfig\"\n echo 'HUGIN_PRERELEASE_VERSION_TAG = -svn'$(svnversion -n \"../\") >> \"../mac/SVN-rev.xcconfig\"\nfi"; }; 57E122110D2BDDBE00743A93 /* configure hugin_version.h */ = { isa = PBXShellScriptBuildPhase; @@ -4860,7 +4851,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ $ACTION = \"build\" ]\nthen\n ./localised.sh\nfi"; + shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/localised.sh\nfi"; }; /* End PBXShellScriptBuildPhase section */ @@ -5878,6 +5869,7 @@ GCC_DEBUGGING_SYMBOLS = full; GCC_ENABLE_PASCAL_STRINGS = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = ""; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -5885,6 +5877,7 @@ "$(DEBUG_MACRO)", "$(PRECOMP_MACRO)", ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( /usr/include, /Developer/Headers/FlatCarbon, @@ -5928,6 +5921,7 @@ GCC_DEBUGGING_SYMBOLS = full; GCC_ENABLE_PASCAL_STRINGS = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; GCC_MODEL_TUNING = ""; GCC_OPTIMIZATION_LEVEL = 2; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -5935,6 +5929,7 @@ "$(DEBUG_MACRO)", "$(PRECOMP_MACRO)", ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; HEADER_SEARCH_PATHS = ( /usr/include, /Developer/Headers/FlatCarbon, @@ -5982,7 +5977,7 @@ "$(WX_INCLUDE_DIR_LIB)", "$(inherited)", ); - INFOPLIST_FILE = "nona_gui-Info.plist"; + INFOPLIST_FILE = "../mac/nona_gui-Info.plist"; INSTALL_PATH = /Applications; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6018,7 +6013,7 @@ "$(WX_INCLUDE_DIR_LIB)", "$(inherited)", ); - INFOPLIST_FILE = "nona_gui-Info.plist"; + INFOPLIST_FILE = "../mac/nona_gui-Info.plist"; INSTALL_PATH = /Applications; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6054,7 +6049,7 @@ "$(WX_INCLUDE_DIR_LIB)", "$(inherited)", ); - INFOPLIST_FILE = "nona_gui-Info.plist"; + INFOPLIST_FILE = "../mac/nona_gui-Info.plist"; INSTALL_PATH = /Applications; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6090,7 +6085,7 @@ "$(WX_INCLUDE_DIR_LIB)", "$(inherited)", ); - INFOPLIST_FILE = "nona_gui-Info.plist"; + INFOPLIST_FILE = "../mac/nona_gui-Info.plist"; INSTALL_PATH = /Applications; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6361,7 +6356,7 @@ ../src/hugin_base, "$(inherited)", ); - INFOPLIST_FILE = "hugin_base-Info.plist"; + INFOPLIST_FILE = "../mac/hugin_base-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6381,7 +6376,7 @@ ../src/hugin_base, "$(inherited)", ); - INFOPLIST_FILE = "hugin_base-Info.plist"; + INFOPLIST_FILE = "../mac/hugin_base-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6401,7 +6396,7 @@ ../src/hugin_base, "$(inherited)", ); - INFOPLIST_FILE = "hugin_base-Info.plist"; + INFOPLIST_FILE = "../mac/hugin_base-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6422,7 +6417,7 @@ ../src/hugin_base, "$(inherited)", ); - INFOPLIST_FILE = "hugin_base-Info.plist"; + INFOPLIST_FILE = "../mac/hugin_base-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6457,7 +6452,7 @@ "$(WX_INCLUDE_DIR_LIB)", "$(inherited)", ); - INFOPLIST_FILE = "base_wx-Info.plist"; + INFOPLIST_FILE = "../mac/base_wx-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6490,7 +6485,7 @@ "$(WX_INCLUDE_DIR_LIB)", "$(inherited)", ); - INFOPLIST_FILE = "base_wx-Info.plist"; + INFOPLIST_FILE = "../mac/base_wx-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", @@ -6523,7 +6518,7 @@ "$(WX_INCLUDE_D... [truncated message content] |
From: <ip...@us...> - 2008-08-21 02:47:07
|
Revision: 3343 http://hugin.svn.sourceforge.net/hugin/?rev=3343&view=rev Author: ippei Date: 2008-08-21 02:47:04 +0000 (Thu, 21 Aug 2008) Log Message: ----------- Mac: autopano plugin improvement. Modified Paths: -------------- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.cpp Modified: hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj =================================================================== --- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2008-08-20 12:50:05 UTC (rev 3342) +++ hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2008-08-21 02:47:04 UTC (rev 3343) @@ -6354,11 +6354,6 @@ ); INFOPLIST_FILE = "../mac/hugin_base-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = HuginBase; }; name = Debug; @@ -6374,11 +6369,6 @@ ); INFOPLIST_FILE = "../mac/hugin_base-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = HuginBase; }; name = Development; @@ -6394,11 +6384,6 @@ ); INFOPLIST_FILE = "../mac/hugin_base-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = HuginBase; }; name = "Development ZeroLink"; @@ -6415,11 +6400,6 @@ ); INFOPLIST_FILE = "../mac/hugin_base-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = HuginBase; STRIP_INSTALLED_PRODUCT = NO; }; @@ -6450,11 +6430,7 @@ ); INFOPLIST_FILE = "../mac/base_wx-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; + LIBRARY_SEARCH_PATHS = "$(inherited)"; PRODUCT_NAME = HuginBaseWx; }; name = Debug; @@ -6483,11 +6459,7 @@ ); INFOPLIST_FILE = "../mac/base_wx-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; + LIBRARY_SEARCH_PATHS = "$(inherited)"; PRODUCT_NAME = HuginBaseWx; }; name = Development; @@ -6516,11 +6488,7 @@ ); INFOPLIST_FILE = "../mac/base_wx-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; + LIBRARY_SEARCH_PATHS = "$(inherited)"; PRODUCT_NAME = HuginBaseWx; }; name = "Development ZeroLink"; @@ -6550,11 +6518,7 @@ ); INFOPLIST_FILE = "../mac/base_wx-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; + LIBRARY_SEARCH_PATHS = "$(inherited)"; PRODUCT_NAME = HuginBaseWx; STRIP_INSTALLED_PRODUCT = NO; }; Modified: hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.cpp 2008-08-20 12:50:05 UTC (rev 3342) +++ hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.cpp 2008-08-21 02:47:04 UTC (rev 3343) @@ -48,7 +48,9 @@ #include <wx/utils.h> #include <wx/tokenzr.h> -#if (defined __WXMAC__) && defined MAC_SELF_CONTAINED_BUNDLE +#define MAC_AUTOPANO_PLUGIN (defined __WXMAC__ && defined MAC_SELF_CONTAINED_BUNDLE) + +#if MAC_AUTOPANO_PLUGIN #include <wx/dir.h> #include <CoreFoundation/CFBundle.h> #endif @@ -170,8 +172,12 @@ bool customAutopanoExe = HUGIN_APSIFT_EXE_CUSTOM; wxConfigBase::Get()->Read(wxT("/AutoPanoSift/AutopanoExeCustom"), &customAutopanoExe); -#if (defined __WXMAC__) && defined MAC_SELF_CONTAINED_BUNDLE +#if defined __WXMAC__ && defined MAC_SELF_CONTAINED_BUNDLE wxString autopanoExe = wxConfigBase::Get()->Read(wxT("/AutoPanoSift/AutopanoExe"), wxT(HUGIN_APSIFT_EXE)); +#if MAC_AUTOPANO_PLUGIN + wxString autopanoArgs = wxConfigBase::Get()->Read(wxT("/AutoPanoSift/Args"), + wxT(HUGIN_APSIFT_ARGS) ); +#endif if(!customAutopanoExe) { @@ -194,73 +200,73 @@ } } - // 'plug-in' architecture; nothing but a .app bundle with different extension ".huginAutoCP". +#if MAC_AUTOPANO_PLUGIN + // 'plug-in' architecture; plugins are based on .app bundle. if(autopanoExe == wxT("")) { - CFMutableArrayRef plugins = CFArrayCreateMutable(kCFAllocatorDefault,0,NULL); + CFMutableArrayRef autopanoPlugins = CFArrayCreateMutable(kCFAllocatorDefault,0,NULL); + FSRef appSupportFolder; + if(noErr == FSFindFolder(kUserDomain,kApplicationSupportFolderType,kDontCreateFolder,&appSupportFolder)) { - FSRef* appSupportFolder; - FSFindFolder(kUserDomain,kApplicationSupportFolderType,false,appSupportFolder); - CFURLRef appSupportFolderURL = CFURLCreateFromFSRef(kCFAllocatorDefault,appSupportFolder); - CFURLRef tmp = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,appSupportFolderURL,CFSTR("Hugin"),true); - CFURLRef autopanoPluginsURL = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,tmp,CFSTR("Autopano"),true); + CFURLRef appSupportFolderURL = CFURLCreateFromFSRef(kCFAllocatorDefault,&appSupportFolder); + CFURLRef appSupportHugin = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,appSupportFolderURL,CFSTR("Hugin"),true); + CFURLRef autopanoPluginsURL = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,appSupportHugin,CFSTR("Autopano"),true); CFArrayRef newPlugins = CFBundleCreateBundlesFromDirectory(kCFAllocatorDefault,autopanoPluginsURL,CFSTR("huginAutoCP")); if(CFArrayGetCount(newPlugins) > 0) - CFArrayAppendArray(plugins, newPlugins, (CFRange){0,CFArrayGetCount(newPlugins)}); + CFArrayAppendArray(autopanoPlugins, newPlugins, (CFRange){0,CFArrayGetCount(newPlugins)}); CFRelease(appSupportFolderURL); - CFRelease(tmp); + CFRelease(appSupportHugin); CFRelease(autopanoPluginsURL); CFRelease(newPlugins); } - + if(noErr == FSFindFolder(kLocalDomain,kApplicationSupportFolderType,kDontCreateFolder,&appSupportFolder)) { - FSRef* appSupportFolder; - FSFindFolder(kLocalDomain,kApplicationSupportFolderType,false,appSupportFolder); - CFURLRef appSupportFolderURL = CFURLCreateFromFSRef(kCFAllocatorDefault,appSupportFolder); - CFURLRef tmp = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,appSupportFolderURL,CFSTR("Hugin"),true); - CFURLRef autopanoPluginsURL = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,tmp,CFSTR("Autopano"),true); + CFURLRef appSupportFolderURL = CFURLCreateFromFSRef(kCFAllocatorDefault,&appSupportFolder); + CFURLRef appSupportHugin = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,appSupportFolderURL,CFSTR("Hugin"),true); + CFURLRef autopanoPluginsURL = CFURLCreateCopyAppendingPathComponent(kCFAllocatorDefault,appSupportHugin,CFSTR("Autopano"),true); CFArrayRef newPlugins = CFBundleCreateBundlesFromDirectory(kCFAllocatorDefault,autopanoPluginsURL,CFSTR("huginAutoCP")); if(CFArrayGetCount(newPlugins) > 0) - CFArrayAppendArray(plugins, newPlugins, (CFRange){0,CFArrayGetCount(newPlugins)}); + CFArrayAppendArray(autopanoPlugins, newPlugins, (CFRange){0,CFArrayGetCount(newPlugins)}); CFRelease(appSupportFolderURL); - CFRelease(tmp); + CFRelease(appSupportHugin); CFRelease(autopanoPluginsURL); CFRelease(newPlugins); } wxArrayString autopanoPackages; wxArrayString autopanoPaths; + wxArrayString autopanoArguments; - if(CFArrayGetCount(plugins) > 0) + while(CFArrayGetCount(autopanoPlugins) > 0) { - while(CFArrayGetCount(plugins) > 0) + CFBundleRef pluginBundle = (CFBundleRef)CFArrayGetValueAtIndex(autopanoPlugins,0); + + CFURLRef executableURL = CFBundleCopyExecutableURL(pluginBundle); + if(executableURL != NULL) { - CFBundleRef plugin = (CFBundleRef)CFArrayGetValueAtIndex(plugins,0); + CFURLRef absURL = CFURLCopyAbsoluteURL(executableURL); + CFStringRef pathInCFString = CFURLCopyFileSystemPath(absURL, kCFURLPOSIXPathStyle); + autopanoPaths.Add(wxMacCFStringHolder(pathInCFString).AsString(wxLocale::GetSystemEncoding())); + CFRelease(executableURL); + CFRelease(absURL); - CFURLRef executableURL = CFBundleCopyExecutableURL(plugin); - if(executableURL != NULL) - { - CFURLRef absURL = CFURLCopyAbsoluteURL(executableURL); - CFStringRef pathInCFString = CFURLCopyFileSystemPath(absURL, kCFURLPOSIXPathStyle); - autopanoPaths.Add(wxMacCFStringHolder(pathInCFString).AsString(wxLocale::GetSystemEncoding())); - CFRelease(executableURL); - CFRelease(absURL); - - CFStringRef pluginName = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(plugin,CFSTR("CFBundleName")); - CFRetain(pluginName); - CFStringRef pluginVersion = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(plugin,CFSTR("CFBundleShortVersionString")); - CFRetain(pluginVersion); - autopanoPackages.Add(wxMacCFStringHolder(pluginName).AsString(wxLocale::GetSystemEncoding()) - + wxT(" (")+ wxMacCFStringHolder(pluginVersion).AsString(wxLocale::GetSystemEncoding()) + wxT(")")); - } + CFStringRef pluginName = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(pluginBundle,CFSTR("CFBundleName")); + CFRetain(pluginName); + CFStringRef pluginVersion = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(pluginBundle,CFSTR("CFBundleShortVersionString")); + CFRetain(pluginVersion); + autopanoPackages.Add(wxMacCFStringHolder(pluginName).AsString(wxLocale::GetSystemEncoding()) + + wxT(" (")+ wxMacCFStringHolder(pluginVersion).AsString(wxLocale::GetSystemEncoding()) + wxT(")")); - CFArrayRemoveValueAtIndex(plugins,0); - CFRelease(plugin); + CFStringRef autoCPArgs = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(pluginBundle,CFSTR("HginAutoCPArgs")); + CFRetain(autoCPArgs); + autopanoArguments.Add(wxMacCFStringHolder(autoCPArgs).AsString(wxLocale::GetSystemEncoding())); } + CFArrayRemoveValueAtIndex(autopanoPlugins,0); + CFRelease(pluginBundle); } - CFRelease(plugins); + CFRelease(autopanoPlugins); if(autopanoPackages.Count() < 1) { autopanoExe = wxT(""); @@ -277,8 +283,10 @@ return cps; } autopanoExe = autopanoPaths.Item(choice); + autopanoArgs = autopanoArguments.Item(choice); } } +#endif // default case; message is not exactly appropriate, but strings closed for 0.7 release if(autopanoExe == wxT("")) @@ -308,9 +316,11 @@ wxString autopanoExe = wxConfigBase::Get()->Read(wxT("/AutoPanoSift/AutopanoExe"),wxT(HUGIN_APSIFT_EXE)); #endif +#if !MAC_AUTOPANO_PLUGIN wxString autopanoArgs = wxConfigBase::Get()->Read(wxT("/AutoPanoSift/Args"), wxT(HUGIN_APSIFT_ARGS)); - +#endif + #ifdef __WXMSW__ // remember cwd. wxString cwd = wxGetCwd(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ip...@us...> - 2008-08-23 03:22:37
|
Revision: 3352 http://hugin.svn.sourceforge.net/hugin/?rev=3352&view=rev Author: ippei Date: 2008-08-23 03:22:35 +0000 (Sat, 23 Aug 2008) Log Message: ----------- Mac: some clean up Modified Paths: -------------- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj hugin/trunk/src/hugin_config_mac.h Modified: hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj =================================================================== --- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2008-08-23 02:41:31 UTC (rev 3351) +++ hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2008-08-23 03:22:35 UTC (rev 3352) @@ -32,25 +32,11 @@ name = frameworks; productName = "lib dynamic"; }; - 57A60E920C400269007B5462 /* all */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 57A60EB20C4002B0007B5462 /* Build configuration list for PBXAggregateTarget "all" */; - buildPhases = ( - ); - dependencies = ( - 57A60E940C400272007B5462 /* PBXTargetDependency */, - 57E3472F0C4A8EC6006AA781 /* PBXTargetDependency */, - 57E3474B0C4A8F06006AA781 /* PBXTargetDependency */, - 57E347490C4A8F06006AA781 /* PBXTargetDependency */, - ); - name = all; - productName = All; - }; 57C486290C3121E8002D79F1 /* configure */ = { isa = PBXAggregateTarget; buildConfigurationList = 57C4862A0C312226002D79F1 /* Build configuration list for PBXAggregateTarget "configure" */; buildPhases = ( - 57D18D4D0E13B82F0054A523 /* update SVN-rev.xcconfig */, + 575484FB0E5FB4C30039E174 /* update SVN-rev.xcconfig */, 57C4863E0C3122C4002D79F1 /* copy hugin_config.h */, 57E122110D2BDDBE00743A93 /* configure hugin_version.h */, ); @@ -240,6 +226,15 @@ 57525A4D0C54BCEA00BF8096 /* libIlmThread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577786110BF347B80041F8FF /* libIlmThread.dylib */; }; 57525A4E0C54BCEA00BF8096 /* libImath.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5777860A0BF3477A0041F8FF /* libImath.dylib */; }; 57525A4F0C54BCEA00BF8096 /* libHalf.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577786180BF348E90041F8FF /* libHalf.dylib */; }; + 575485160E5FB84C0039E174 /* libexiv2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5731C4910D5532D400605D22 /* libexiv2.a */; }; + 5754851B0E5FB86F0039E174 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57989581068E2FD7009F90BF /* libiconv.dylib */; }; + 5754851D0E5FB8850039E174 /* libexpat.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5731C4920D5532D400605D22 /* libexpat.dylib */; }; + 575485210E5FB8D80039E174 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57989581068E2FD7009F90BF /* libiconv.dylib */; }; + 575485220E5FB8D80039E174 /* libexiv2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5731C4910D5532D400605D22 /* libexiv2.a */; }; + 575485230E5FB8F00039E174 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57989581068E2FD7009F90BF /* libiconv.dylib */; }; + 575485240E5FB8F00039E174 /* libexpat.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5731C4920D5532D400605D22 /* libexpat.dylib */; }; + 575485250E5FB8F00039E174 /* libexiv2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5731C4910D5532D400605D22 /* libexiv2.a */; }; + 575485270E5FB93A0039E174 /* platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5709939D0D2E449400499A34 /* platform.cpp */; }; 57565A4D0D088CFD00344F55 /* ImageCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57565A3F0D088CFD00344F55 /* ImageCache.cpp */; }; 57565A4E0D088CFD00344F55 /* ImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 57565A400D088CFD00344F55 /* ImageCache.h */; }; 57565A4F0D088CFD00344F55 /* MyExternalCmdExecDialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57565A410D088CFD00344F55 /* MyExternalCmdExecDialog.cpp */; }; @@ -892,6 +887,13 @@ remoteGlobalIDString = 57525A240C54BC4400BF8096; remoteInfo = Nona; }; + 575485290E5FB96D0039E174 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; + proxyType = 1; + remoteGlobalIDString = 57E3470D0C4A8E95006AA781 /* lib static */; + remoteInfo = "lib static"; + }; 576900940D24D26200A6AD01 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; @@ -1018,13 +1020,6 @@ remoteGlobalIDString = 5769F5FF0D23825700A6AD01; remoteInfo = StitchProject; }; - 57A60E930C400272007B5462 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; - proxyType = 1; - remoteGlobalIDString = 57C486290C3121E8002D79F1; - remoteInfo = "copy hugin_config.h"; - }; 57AC37480D2BE6D80086D348 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; @@ -1081,20 +1076,6 @@ remoteGlobalIDString = 73C958F40DA2C9DB00E19110; remoteInfo = "tca_correct static"; }; - 57D382D20E2369FC00445A37 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5769FE370D24CFEC00A6AD01; - remoteInfo = "vigra_impex Framework"; - }; - 57D382D40E2369FC00445A37 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; - proxyType = 1; - remoteGlobalIDString = 576900A90D24D29300A6AD01; - remoteInfo = "hugin_base Framework"; - }; 57D383100E236A3600445A37 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; @@ -1207,13 +1188,6 @@ remoteGlobalIDString = 5711524906BC6709004F4FA7; remoteInfo = vigra_impex; }; - 57E3472E0C4A8EC6006AA781 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; - proxyType = 1; - remoteGlobalIDString = 57E3470D0C4A8E95006AA781; - remoteInfo = "lib static"; - }; 57E347340C4A8EF4006AA781 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; @@ -1242,20 +1216,6 @@ remoteGlobalIDString = 57E3467D0C4A89B0006AA781; remoteInfo = Hugin; }; - 57E347480C4A8F06006AA781 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; - proxyType = 1; - remoteGlobalIDString = 57E347330C4A8EED006AA781; - remoteInfo = tools; - }; - 57E3474A0C4A8F06006AA781 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; - proxyType = 1; - remoteGlobalIDString = 57E347300C4A8EDF006AA781; - remoteInfo = app; - }; 57E92AAB0E1DA54700D99C3B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 57E92A8C0E1DA35A00D99C3B /* align_image_stack.xcodeproj */; @@ -1642,6 +1602,7 @@ 57565A790D088F2E00344F55 /* ComputeImageROI.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ComputeImageROI.cpp; path = algorithms/nona/ComputeImageROI.cpp; sourceTree = "<group>"; }; 57565A7A0D088F2E00344F55 /* ComputeImageROI.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ComputeImageROI.h; path = algorithms/nona/ComputeImageROI.h; sourceTree = "<group>"; }; 575670980D089B1F00344F55 /* hugin_stitch_project.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = hugin_stitch_project.cpp; sourceTree = "<group>"; }; + 5758E0FB0E5F1091001E74F2 /* PutAutoCPtoApplicationSupport.applescript */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.applescript; path = PutAutoCPtoApplicationSupport.applescript; sourceTree = "<group>"; }; 5759D9AC0C32713F0043F754 /* libhugin_appbase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libhugin_appbase.a; sourceTree = BUILT_PRODUCTS_DIR; }; 5759D9B50C3271640043F754 /* Command.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Command.h; sourceTree = "<group>"; }; 5759D9B60C3271640043F754 /* CommandHistory.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CommandHistory.h; sourceTree = "<group>"; }; @@ -1915,14 +1876,10 @@ 57E331220C4A8859006AA781 /* LocalizedFileTipProvider.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = LocalizedFileTipProvider.h; sourceTree = "<group>"; }; 57E331230C4A8859006AA781 /* MainFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MainFrame.cpp; sourceTree = "<group>"; }; 57E331240C4A8859006AA781 /* MainFrame.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MainFrame.h; sourceTree = "<group>"; }; - 57E3312A0C4A8859006AA781 /* NonaStitcherPanel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = NonaStitcherPanel.cpp; sourceTree = "<group>"; }; - 57E3312B0C4A8859006AA781 /* NonaStitcherPanel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = NonaStitcherPanel.h; sourceTree = "<group>"; }; 57E3312C0C4A8859006AA781 /* OptimizePanel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = OptimizePanel.cpp; sourceTree = "<group>"; }; 57E3312D0C4A8859006AA781 /* OptimizePanel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = OptimizePanel.h; sourceTree = "<group>"; }; 57E3312E0C4A8859006AA781 /* OptimizePhotometricPanel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = OptimizePhotometricPanel.cpp; sourceTree = "<group>"; }; 57E3312F0C4A8859006AA781 /* OptimizePhotometricPanel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = OptimizePhotometricPanel.h; sourceTree = "<group>"; }; - 57E331300C4A8859006AA781 /* PTStitcherPanel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PTStitcherPanel.cpp; sourceTree = "<group>"; }; - 57E331310C4A8859006AA781 /* PTStitcherPanel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PTStitcherPanel.h; sourceTree = "<group>"; }; 57E331340C4A8859006AA781 /* PanoDruid.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PanoDruid.cpp; sourceTree = "<group>"; }; 57E331350C4A8859006AA781 /* PanoDruid.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PanoDruid.h; sourceTree = "<group>"; }; 57E331360C4A8859006AA781 /* PanoPanel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PanoPanel.cpp; sourceTree = "<group>"; }; @@ -1933,9 +1890,6 @@ 57E3313D0C4A8859006AA781 /* PreviewFrame.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PreviewFrame.h; sourceTree = "<group>"; }; 57E3313E0C4A8859006AA781 /* PreviewPanel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PreviewPanel.cpp; sourceTree = "<group>"; }; 57E3313F0C4A8859006AA781 /* PreviewPanel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PreviewPanel.h; sourceTree = "<group>"; }; - 57E331400C4A8859006AA781 /* RunStitcherFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = RunStitcherFrame.cpp; sourceTree = "<group>"; }; - 57E331410C4A8859006AA781 /* RunStitcherFrame.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = RunStitcherFrame.h; sourceTree = "<group>"; }; - 57E331420C4A8859006AA781 /* StitcherPanel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = StitcherPanel.h; sourceTree = "<group>"; }; 57E331430C4A8859006AA781 /* TextKillFocusHandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TextKillFocusHandler.cpp; sourceTree = "<group>"; }; 57E331440C4A8859006AA781 /* TextKillFocusHandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TextKillFocusHandler.h; sourceTree = "<group>"; }; 57E331490C4A8859006AA781 /* config.h.tmpl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = config.h.tmpl; sourceTree = "<group>"; }; @@ -2098,6 +2052,9 @@ 576483540C46957D003AFC2F /* libhugin_appbase.a in Frameworks */, 576483530C46957A003AFC2F /* libhugin_nona.a in Frameworks */, 576483580C4695EA003AFC2F /* libhugin_math.a in Frameworks */, + 575485160E5FB84C0039E174 /* libexiv2.a in Frameworks */, + 5754851B0E5FB86F0039E174 /* libiconv.dylib in Frameworks */, + 5754851D0E5FB8850039E174 /* libexpat.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2124,6 +2081,9 @@ 576483E60C46AD9C003AFC2F /* libhugin_appbase.a in Frameworks */, 576483E80C46ADA9003AFC2F /* libhugin_algorithms.a in Frameworks */, 576484130C46AF3D003AFC2F /* libhugin_levmar.a in Frameworks */, + 575485230E5FB8F00039E174 /* libiconv.dylib in Frameworks */, + 575485240E5FB8F00039E174 /* libexpat.dylib in Frameworks */, + 575485250E5FB8F00039E174 /* libexiv2.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2272,7 +2232,6 @@ 57D382E00E2369FC00445A37 /* libHalf.dylib in Frameworks */, 57D382E10E2369FC00445A37 /* libpano13.dylib in Frameworks */, 57D382E20E2369FC00445A37 /* libboost_thread.dylib in Frameworks */, - 57D382E30E2369FC00445A37 /* libexpat.dylib in Frameworks */, 57D383230E236B1D00445A37 /* libhugin_jhead.a in Frameworks */, 57D383240E236B1D00445A37 /* libhugin_vigra_impex.a in Frameworks */, 57D383250E236B1D00445A37 /* libhugin_utils.a in Frameworks */, @@ -2284,6 +2243,9 @@ 57D3832B0E236B1D00445A37 /* libhugin_levmar.a in Frameworks */, 57D3832C0E236B1D00445A37 /* libhugin_nona.a in Frameworks */, 57D3832D0E236B1D00445A37 /* libhugin_math.a in Frameworks */, + 575485210E5FB8D80039E174 /* libiconv.dylib in Frameworks */, + 57D382E30E2369FC00445A37 /* libexpat.dylib in Frameworks */, + 575485220E5FB8D80039E174 /* libexiv2.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2476,10 +2438,11 @@ 57810AAB0D32D79400F48296 /* complete-embed.sh */, 573E2E440B76AC5100E86281 /* ExternalPrograms */, 573E2E5E0B76AD0100E86281 /* Documents */, + 5758E0FB0E5F1091001E74F2 /* PutAutoCPtoApplicationSupport.applescript */, + 57701A750E5B036A00E5026B /* autopano-complete-mac.sh */, 576900800D24D14500A6AD01 /* vigra_impex-Info.plist */, 576900AB0D24D29300A6AD01 /* hugin_base-Info.plist */, 576900E20D24D32C00A6AD01 /* base_wx-Info.plist */, - 57701A750E5B036A00E5026B /* autopano-complete-mac.sh */, ); path = mac; sourceTree = "<group>"; @@ -3358,14 +3321,10 @@ 57E331220C4A8859006AA781 /* LocalizedFileTipProvider.h */, 57E331230C4A8859006AA781 /* MainFrame.cpp */, 57E331240C4A8859006AA781 /* MainFrame.h */, - 57E3312A0C4A8859006AA781 /* NonaStitcherPanel.cpp */, - 57E3312B0C4A8859006AA781 /* NonaStitcherPanel.h */, 57E3312C0C4A8859006AA781 /* OptimizePanel.cpp */, 57E3312D0C4A8859006AA781 /* OptimizePanel.h */, 57E3312E0C4A8859006AA781 /* OptimizePhotometricPanel.cpp */, 57E3312F0C4A8859006AA781 /* OptimizePhotometricPanel.h */, - 57E331300C4A8859006AA781 /* PTStitcherPanel.cpp */, - 57E331310C4A8859006AA781 /* PTStitcherPanel.h */, 57E331340C4A8859006AA781 /* PanoDruid.cpp */, 57E331350C4A8859006AA781 /* PanoDruid.h */, 57E331360C4A8859006AA781 /* PanoPanel.cpp */, @@ -3376,9 +3335,6 @@ 57E3313D0C4A8859006AA781 /* PreviewFrame.h */, 57E3313E0C4A8859006AA781 /* PreviewPanel.cpp */, 57E3313F0C4A8859006AA781 /* PreviewPanel.h */, - 57E331400C4A8859006AA781 /* RunStitcherFrame.cpp */, - 57E331410C4A8859006AA781 /* RunStitcherFrame.h */, - 57E331420C4A8859006AA781 /* StitcherPanel.h */, 57E331430C4A8859006AA781 /* TextKillFocusHandler.cpp */, 57E331440C4A8859006AA781 /* TextKillFocusHandler.h */, 57E3316A0C4A8859006AA781 /* wxPanoCommand.cpp */, @@ -4177,10 +4133,10 @@ buildPhases = ( 5769F6060D23825700A6AD01 /* Sources */, 5769F6080D23825700A6AD01 /* Frameworks */, - 571D8AC70E212172006D0305 /* Locale Script */, - 579374850D47E7E500A52730 /* Copy ExifTool */, 5769F79C0D239D0A00A6AD01 /* Copy Executable Files */, 576901FD0D24DA4B00A6AD01 /* Copy Frameworks */, + 571D8AC70E212172006D0305 /* Locale Script */, + 579374850D47E7E500A52730 /* Copy ExifTool */, 571046570D25F45A006A3C69 /* Complete Bundle */, ); buildRules = ( @@ -4338,8 +4294,7 @@ buildRules = ( ); dependencies = ( - 57D382D10E2369FC00445A37 /* PBXTargetDependency */, - 57D382D30E2369FC00445A37 /* PBXTargetDependency */, + 5754852A0E5FB96D0039E174 /* PBXTargetDependency */, ); name = "nona static"; productName = "sample open_close"; @@ -4386,11 +4341,11 @@ buildPhases = ( 57E3467B0C4A89B0006AA781 /* Sources */, 57E3467C0C4A89B0006AA781 /* Frameworks */, + 576901E60D24D93300A6AD01 /* Copy Frameworks */, 57E3467A0C4A89B0006AA781 /* Resources */, 571D8C740E2132DE006D0305 /* Patch XRC */, 57E347640C4A8F9F006AA781 /* Locale Script */, 571D8C8E0E213833006D0305 /* Localise Help */, - 576901E60D24D93300A6AD01 /* Copy Frameworks */, 576902030D24DA9500A6AD01 /* Complete Bundle */, 5710465D0D25F490006A3C69 /* Complete Embedding */, ); @@ -4526,7 +4481,6 @@ projectRoot = ..; targets = ( 57C486290C3121E8002D79F1 /* configure */, - 57A60E920C400269007B5462 /* all */, 57E3470D0C4A8E95006AA781 /* lib static */, 5720E4720BD456CD00E63404 /* levmar */, 5749F8A2067B60CA00A6EDD4 /* jhead */, @@ -4690,6 +4644,7 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/complete-bundle.sh\nfi"; + showEnvVarsInLog = 0; }; 5710465D0D25F490006A3C69 /* Complete Embedding */ = { isa = PBXShellScriptBuildPhase; @@ -4704,6 +4659,7 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/complete-embed.sh\nfi"; + showEnvVarsInLog = 0; }; 571046750D25F5C5006A3C69 /* Complete Bundle */ = { isa = PBXShellScriptBuildPhase; @@ -4760,7 +4716,23 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/localise-help.sh\nfi"; + showEnvVarsInLog = 0; }; + 575484FB0E5FB4C30039E174 /* update SVN-rev.xcconfig */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "update SVN-rev.xcconfig"; + outputPaths = ( + "../mac/SVN-rev.xcconfig", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "rm -f \"../mac/SVN-rev.xcconfig\"\n\nif [ $(svnversion -n \"../\") = \"exported\" ]\nthen\n echo \"\" > \"../mac/SVN-rev.xcconfig\"\nelse\n echo 'HUGIN_WC_REVISION = '$(svnversion -n \"../\" | grep -o '^[0-9]*') > \"../mac/SVN-rev.xcconfig\"\n echo 'HUGIN_PRERELEASE_VERSION_TAG = -svn'$(svnversion -n \"../\") >> \"../mac/SVN-rev.xcconfig\"\nfi"; + }; 576902030D24DA9500A6AD01 /* Complete Bundle */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -4774,6 +4746,7 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/complete-bundle.sh\nfi"; + showEnvVarsInLog = 0; }; 579374850D47E7E500A52730 /* Copy ExifTool */ = { isa = PBXShellScriptBuildPhase; @@ -4788,6 +4761,7 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/copyExifTool.sh\nfi"; + showEnvVarsInLog = 0; }; 57C4863E0C3122C4002D79F1 /* copy hugin_config.h */ = { isa = PBXShellScriptBuildPhase; @@ -4804,21 +4778,8 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "cp -r ../src/hugin_config_mac.h ../src/hugin_config.h\n\n"; + showEnvVarsInLog = 0; }; - 57D18D4D0E13B82F0054A523 /* update SVN-rev.xcconfig */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "update SVN-rev.xcconfig"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "rm -f \"../mac/SVN-rev.xcconfig\"\n\nif [ $(svnversion -n \"../\") = \"exported\" ]\nthen\n echo \"\" > \"../mac/SVN-rev.xcconfig\"\nelse\n echo 'HUGIN_WC_REVISION = '$(svnversion -n \"../\" | grep -o '^[0-9]*') > \"../mac/SVN-rev.xcconfig\"\n echo 'HUGIN_PRERELEASE_VERSION_TAG = -svn'$(svnversion -n \"../\") >> \"../mac/SVN-rev.xcconfig\"\nfi"; - }; 57E122110D2BDDBE00743A93 /* configure hugin_version.h */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -4834,6 +4795,7 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "sed -e \"s/\\${V_MAJOR}/$HUGIN_VERSION_MAJOR/\" \\\n -e \"s/\\${V_MINOR}/$HUGIN_VERSION_MINOR/\" \\\n -e \"s/\\${V_PATCH}/$HUGIN_VERSION_PATCH/\" \\\n -e \"s/\\${HUGIN_WC_REVISION}/$HUGIN_WC_REVISION/\" \\\n -e \"s/\\${HUGIN_PACKAGE_VERSION}/$HUGIN_PACKAGE_VERSION/\" \\\n -e \"s/^.*HUGIN_DEVELOPMENT_VERSION.*$/\\/\\/&/\" \\\n ../src/hugin_version.h.in.cmake > ../src/hugin_version.h\n\nif [ $HUGIN_WC_REVISION ]\nthen\n echo \"\" >> ../src/hugin_version.h\n echo \"#ifndef HUGIN_DEVELOPMENT_VERSION\" >> ../src/hugin_version.h\n echo \"#define HUGIN_DEVELOPMENT_VERSION 1\" >> ../src/hugin_version.h\n echo \"#endif\" >> ../src/hugin_version.h\nfi"; + showEnvVarsInLog = 0; }; 57E347640C4A8F9F006AA781 /* Locale Script */ = { isa = PBXShellScriptBuildPhase; @@ -4848,6 +4810,7 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "if [ $ACTION = \"build\" ]\nthen\n ../mac/localised.sh\nfi"; + showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -5101,6 +5064,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 575485270E5FB93A0039E174 /* platform.cpp in Sources */, 5771F5EF0C3007F300736343 /* utils.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -5287,6 +5251,11 @@ target = 57525A240C54BC4400BF8096 /* Nona */; targetProxy = 57525A2D0C54BC8400BF8096 /* PBXContainerItemProxy */; }; + 5754852A0E5FB96D0039E174 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 57E3470D0C4A8E95006AA781 /* lib static */; + targetProxy = 575485290E5FB96D0039E174 /* PBXContainerItemProxy */; + }; 576900950D24D26200A6AD01 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 5769FE370D24CFEC00A6AD01 /* vigra_impex Framework */; @@ -5377,11 +5346,6 @@ target = 5769F5FF0D23825700A6AD01 /* StitchProject */; targetProxy = 5769FDB20D24BB1D00A6AD01 /* PBXContainerItemProxy */; }; - 57A60E940C400272007B5462 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 57C486290C3121E8002D79F1 /* configure */; - targetProxy = 57A60E930C400272007B5462 /* PBXContainerItemProxy */; - }; 57AC37490D2BE6D80086D348 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 57E122570D2BE4E800743A93 /* align_image_stack static */; @@ -5422,16 +5386,6 @@ target = 73C958F40DA2C9DB00E19110 /* tca_correct static */; targetProxy = 57D382CE0E2369E400445A37 /* PBXContainerItemProxy */; }; - 57D382D10E2369FC00445A37 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 5769FE370D24CFEC00A6AD01 /* vigra_impex Framework */; - targetProxy = 57D382D20E2369FC00445A37 /* PBXContainerItemProxy */; - }; - 57D382D30E2369FC00445A37 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 576900A90D24D29300A6AD01 /* hugin_base Framework */; - targetProxy = 57D382D40E2369FC00445A37 /* PBXContainerItemProxy */; - }; 57D383110E236A3600445A37 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 57E3470D0C4A8E95006AA781 /* lib static */; @@ -5512,11 +5466,6 @@ target = 5711524906BC6709004F4FA7 /* vigra_impex */; targetProxy = 57E3472C0C4A8EB6006AA781 /* PBXContainerItemProxy */; }; - 57E3472F0C4A8EC6006AA781 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 57E3470D0C4A8E95006AA781 /* lib static */; - targetProxy = 57E3472E0C4A8EC6006AA781 /* PBXContainerItemProxy */; - }; 57E347350C4A8EF4006AA781 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 576482C00C469056003AFC2F /* vig_optimize static */; @@ -5537,16 +5486,6 @@ target = 57E3467D0C4A89B0006AA781 /* Hugin */; targetProxy = 57E347460C4A8EF8006AA781 /* PBXContainerItemProxy */; }; - 57E347490C4A8F06006AA781 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 57E347330C4A8EED006AA781 /* tools */; - targetProxy = 57E347480C4A8F06006AA781 /* PBXContainerItemProxy */; - }; - 57E3474B0C4A8F06006AA781 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 57E347300C4A8EDF006AA781 /* app */; - targetProxy = 57E3474A0C4A8F06006AA781 /* PBXContainerItemProxy */; - }; 7332AE920D8D4986002BF5FF /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 5769FE370D24CFEC00A6AD01 /* vigra_impex Framework */; @@ -5587,7 +5526,6 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = autooptimiser; }; name = Debug; @@ -5604,28 +5542,10 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = autooptimiser; }; name = Development; }; - 5709A0870C4543E100BD1C53 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/foreign/vigra, - ../src/hugin_base, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - PRODUCT_NAME = autooptimiser; - }; - name = "Development ZeroLink"; - }; 5709A0880C4543E100BD1C53 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5638,7 +5558,6 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = autooptimiser; }; name = Release; @@ -5646,10 +5565,6 @@ 571046870D25F6C1006A3C69 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; PRODUCT_NAME = "bundled tools"; }; name = Debug; @@ -5657,29 +5572,14 @@ 571046880D25F6C1006A3C69 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; PRODUCT_NAME = "bundled tools"; }; name = Development; }; - 571046890D25F6C1006A3C69 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "bundled tools"; - }; - name = "Development ZeroLink"; - }; 5710468A0D25F6C1006A3C69 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; PRODUCT_NAME = "bundled tools"; - ZERO_LINK = NO; }; name = Release; }; @@ -5707,18 +5607,6 @@ }; name = Development; }; - 5713006C0C33D43600252FE3 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/foreign/vigra, - ../src/hugin_base, - "$(inherited)", - ); - PRODUCT_NAME = hugin_panotools; - }; - name = "Development ZeroLink"; - }; 5713006D0C33D43600252FE3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5781,19 +5669,6 @@ }; name = Development; }; - 574092330C393E8500D16607 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREFIX_HEADER = ../src/hugin_base/nona.pch; - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - ../src/foreign/vigra, - "$(inherited)", - ); - PRODUCT_NAME = hugin_nona; - }; - name = "Development ZeroLink"; - }; 574092340C393E8500D16607 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5980,8 +5855,6 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = Nona; }; name = Debug; @@ -6016,48 +5889,10 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = Nona; }; name = Development; }; - 57525A2B0C54BC4700BF8096 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(WX_ARCH)"; - DEPLOYMENT_POSTPROCESSING = "<Multiple values>"; - GCC_PREFIX_HEADER = ../src/hugin1/hugin1.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - WX_PRECOMP, - __WXMAC__, - "_FILE_OFFSET_BITS=64", - _LARGE_FILES, - NO_GCC_PRAGMA, - ); - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - ../src/foreign/vigra, - ../src/foreign, - ../src/hugin1, - "$(WX_INCLUDE_DIR)", - "$(WX_INCLUDE_DIR_LIB)", - "$(inherited)", - ); - INFOPLIST_FILE = "../mac/nona_gui-Info.plist"; - INSTALL_PATH = /Applications; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - PRODUCT_NAME = Nona; - }; - name = "Development ZeroLink"; - }; 57525A2C0C54BC4700BF8096 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6088,8 +5923,6 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = Nona; }; name = Release; @@ -6118,18 +5951,6 @@ }; name = Development; }; - 5759D9B20C3271570043F754 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/foreign/vigra, - ../src/hugin_base, - "$(inherited)", - ); - PRODUCT_NAME = hugin_appbase; - }; - name = "Development ZeroLink"; - }; 5759D9B30C3271570043F754 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6168,19 +5989,6 @@ }; name = Development; }; - 5759DA570C327D940043F754 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - ../src/foreign/vigra, - ../src/foreign, - "$(inherited)", - ); - PRODUCT_NAME = hugin_panodata; - }; - name = "Development ZeroLink"; - }; 5759DA580C327D940043F754 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6207,9 +6015,9 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = fulla; }; name = Debug; @@ -6227,33 +6035,13 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = fulla; }; name = Development; }; - 576482BC0C469052003AFC2F /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/foreign, - ../src/foreign/vigra, - ../src/hugin_base, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - PRODUCT_NAME = fulla; - }; - name = "Development ZeroLink"; - }; 576482BD0C469052003AFC2F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6267,9 +6055,9 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = fulla; }; name = Release; @@ -6285,6 +6073,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = vig_optimize; @@ -6302,29 +6091,13 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = vig_optimize; }; name = Development; }; - 576482E00C469056003AFC2F /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/foreign/vigra, - ../src/hugin_base, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - PRODUCT_NAME = vig_optimize; - }; - name = "Development ZeroLink"; - }; 576482E10C469056003AFC2F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6336,6 +6109,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = vig_optimize; @@ -6373,21 +6147,6 @@ }; name = Development; }; - 576900AF0D24D29300A6AD01 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/foreign, - ../src/foreign/vigra, - ../src/hugin_base, - "$(inherited)", - ); - INFOPLIST_FILE = "../mac/hugin_base-Info.plist"; - INSTALL_PATH = "@executable_path/../Frameworks"; - PRODUCT_NAME = HuginBase; - }; - name = "Development ZeroLink"; - }; 576900B00D24D29300A6AD01 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6464,35 +6223,6 @@ }; name = Development; }; - 576900DF0D24D32C00A6AD01 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(WX_ARCH)"; - GCC_PREFIX_HEADER = ../src/hugin1/hugin1.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - WX_PRECOMP, - __WXMAC__, - "_FILE_OFFSET_BITS=64", - _LARGE_FILES, - NO_GCC_PRAGMA, - ); - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - ../src/foreign/vigra, - ../src/foreign, - ../src/hugin1, - "$(WX_INCLUDE_DIR)", - "$(WX_INCLUDE_DIR_LIB)", - "$(inherited)", - ); - INFOPLIST_FILE = "../mac/base_wx-Info.plist"; - INSTALL_PATH = "@executable_path/../Frameworks"; - LIBRARY_SEARCH_PATHS = "$(inherited)"; - PRODUCT_NAME = HuginBaseWx; - }; - name = "Development ZeroLink"; - }; 576900E00D24D32C00A6AD01 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6553,7 +6283,6 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = HuginStitchProject; }; name = Debug; @@ -6587,45 +6316,10 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = HuginStitchProject; }; name = Development; }; - 5769F62E0D23825700A6AD01 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(WX_ARCH)"; - DEPLOYMENT_POSTPROCESSING = NO; - GCC_PREFIX_HEADER = ../src/hugin1/hugin1.pch; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - WX_PRECOMP, - __WXMAC__, - "_FILE_OFFSET_BITS=64", - _LARGE_FILES, - NO_GCC_PRAGMA, - ); - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - ../src/foreign/vigra, - ../src/foreign, - ../src/hugin1, - "$(WX_INCLUDE_DIR)", - "$(WX_INCLUDE_DIR_LIB)", - "$(inherited)", - ); - INFOPLIST_FILE = "../mac/hugin_stitch_project-Info.plist"; - INSTALL_PATH = /Applications; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - PRODUCT_NAME = HuginStitchProject; - }; - name = "Development ZeroLink"; - }; 5769F62F0D23825700A6AD01 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6655,7 +6349,6 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = HuginStitchProject; }; name = Release; @@ -6673,7 +6366,6 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = hugin_hdrmerge; }; name = Debug; @@ -6690,28 +6382,10 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = hugin_hdrmerge; }; name = Development; }; - 5769F8700D23AA5D00A6AD01 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/foreign/vigra, - ../src/hugin_base, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - PRODUCT_NAME = hugin_hdrmerge; - }; - name = "Development ZeroLink"; - }; 5769F8710D23AA5D00A6AD01 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6725,7 +6399,6 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = hugin_hdrmerge; }; name = Release; @@ -6733,40 +6406,21 @@ 5769FC2C0D24A29100A6AD01 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - PRODUCT_NAME = "lib dynamic"; + PRODUCT_NAME = frameworks; }; name = Debug; }; 5769FC2D0D24A29100A6AD01 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - PRODUCT_NAME = "lib dynamic"; + PRODUCT_NAME = frameworks; }; name = Development; }; - 5769FC2E0D24A29100A6AD01 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "lib dynamic"; - }; - name = "Development ZeroLink"; - }; 5769FC2F0D24A29100A6AD01 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - PRODUCT_NAME = "lib dynamic"; - ZERO_LINK = NO; + PRODUCT_NAME = frameworks; }; name = Release; }; @@ -6774,7 +6428,6 @@ isa = XCBuildConfiguration; buildSettings = { DEPLOYMENT_POSTPROCESSING = YES; - FRAMEWORK_VERSION = A; INFOPLIST_FILE = "../mac/vigra_impex-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; PRODUCT_NAME = HuginVigraImpex; @@ -6785,7 +6438,6 @@ 5769FE3C0D24CFED00A6AD01 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - FRAMEWORK_VERSION = A; INFOPLIST_FILE = "../mac/vigra_impex-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; PRODUCT_NAME = HuginVigraImpex; @@ -6793,22 +6445,10 @@ }; name = Development; }; - 5769FE3D0D24CFED00A6AD01 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "../mac/vigra_impex-Info.plist"; - INSTALL_PATH = "@executable_path/../Frameworks"; - PRODUCT_NAME = HuginVigraImpex; - USER_HEADER_SEARCH_PATHS = "../src/foreign/vigra $(inherited)"; - }; - name = "Development ZeroLink"; - }; 5769FE3E0D24CFED00A6AD01 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { DEPLOYMENT_POSTPROCESSING = YES; - FRAMEWORK_VERSION = A; INFOPLIST_FILE = "../mac/vigra_impex-Info.plist"; INSTALL_PATH = "@executable_path/../Frameworks"; PRODUCT_NAME = HuginVigraImpex; @@ -6883,7 +6523,7 @@ STRIP_INSTALLED_PRODUCT = NO; STRIP_STYLE = all; WARNING_CFLAGS = "-Wall"; - WX_ARCH = "$(RELEASE_ARCHS_32)"; + WX_ARCH = "$(NATIVE_ARCH)"; WX_INCLUDE_DIR = "$(REPOSITORY_DIR)/include/wx-$(WX_MAJOR_VERSION)"; WX_INCLUDE_DIR_LIB = "$(REPOSITORY_DIR)/lib/wx/include/mac-unicode-release-$(WX_MAJOR_VERSION)"; ZERO_LINK = NO; @@ -6914,18 +6554,6 @@ }; name = Development; }; - 576EC4A20C3FC9500076A417 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - ../src/foreign/vigra, - "$(inherited)", - ); - PRODUCT_NAME = hugin_app; - }; - name = "Development ZeroLink"; - }; 576EC4A30C3FC9500076A417 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6959,106 +6587,6 @@ }; name = Release; }; - 5771F6300C30115A00736343 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = hugin_utils; - }; - name = "Development ZeroLink"; - }; - 5771F6310C30115A00736343 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - "$(inherited)", - ); - PRODUCT_NAME = hugin_jhead; - USER_HEADER_SEARCH_PATHS = ../src/foreign/jhead; - }; - name = "Development ZeroLink"; - }; - 5771F6320C30115A00736343 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = hugin_vigra_impex; - USER_HEADER_SEARCH_PATHS = "../src/foreign/vigra $(inherited)"; - }; - name = "Development ZeroLink"; - }; - 5771F6330C30115A00736343 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = "HAVE_LAPACK=1"; - PRODUCT_NAME = hugin_levmar; - }; - name = "Development ZeroLink"; - }; - 5771F6340C30115A00736343 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - ../src/foreign/vigra, - "$(inherited)", - ); - PRODUCT_NAME = hugin_vigra_ext; - }; - name = "Development ZeroLink"; - }; - 5771F6350C30115A00736343 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 57E122010D2BDBF300743A93 /* BuildConfig.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(NATIVE_ARCH)"; - COPY_PHASE_STRIP = NO; - DEAD_CODE_STRIPPING = NO; - DEBUG_MACRO = "DEBUG=1"; - DYLIB_COMPATIBILITY_VERSION = "$(HUGIN_VERSION_MAJOR).$(HUGIN_VERSION_MINOR).0"; - DYLIB_CURRENT_VERSION = "$(HUGIN_VERSION_MAJOR).$(HUGIN_VERSION_MINOR).$(HUGIN_VERSION_PATCH)"; - GCC_CW_ASM_SYNTAX = NO; - GCC_DEBUGGING_SYMBOLS = full; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_ENABLE_PASCAL_STRINGS = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_INLINES_ARE_PRIVATE_EXTERN = YES; - GCC_MODEL_TUNING = ""; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(DEBUG_MACRO)", - "$(PRECOMP_MACRO)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_ABOUT_MISSING_NEWLINE = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES; - HEADER_SEARCH_PATHS = ( - /usr/include, - /Developer/Headers/FlatCarbon, - "$(REPOSITORY_DIR)/include", - "$(REPOSITORY_DIR)/include/OpenEXR", - ../src, - ); - INSTALL_PATH = ""; - LIBRARY_SEARCH_PATHS = ( - "$(value)", - "$(REPOSITORY_DIR)/lib", - ); - PRECOMP_MACRO = ""; - SEPARATE_STRIP = YES; - SKIP_INSTALL = YES; - STRIP_INSTALLED_PRODUCT = NO; - STRIP_STYLE = all; - WARNING_CFLAGS = "-Wall"; - WX_ARCH = "$(RELEASE_ARCHS_32)"; - WX_INCLUDE_DIR = "$(REPOSITORY_DIR)/include/wx-$(WX_MAJOR_VERSION)"; - WX_INCLUDE_DIR_LIB = "$(REPOSITORY_DIR)/lib/wx/include/mac-unicode-release-$(WX_MAJOR_VERSION)"; - ZERO_LINK = YES; - }; - name = "Development ZeroLink"; - }; 5771F7BB0C3021AD00736343 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7085,19 +6613,6 @@ }; name = Development; }; - 5771F7BD0C3021AD00736343 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - ../src/foreign/vigra, - "$(inherited)", - ); - PRODUCT_NAME = hugin_math; - }; - name = "Development ZeroLink"; - }; 5771F7BE0C3021AD00736343 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7125,13 +6640,6 @@ }; name = Development; }; - 5771F81C0C3026C200736343 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = PTLensDB; - }; - name = "Development ZeroLink"; - }; 5771F81D0C3026C200736343 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7152,7 +6660,6 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = nona; }; name = Debug; @@ -7170,28 +6677,10 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = nona; }; name = Development; }; - 5796FA930C4395CC006B7C6E /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/foreign/vigra, - ../src/hugin_base, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - PRODUCT_NAME = nona; - }; - name = "Development ZeroLink"; - }; 5796FA940C4395CC006B7C6E /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7205,51 +6694,10 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = nona; }; name = Release; }; - 57A60EB30C4002B0007B5462 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - PRODUCT_NAME = All; - }; - name = Debug; - }; - 57A60EB40C4002B0007B5462 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - PRODUCT_NAME = All; - }; - name = Development; - }; - 57A60EB50C4002B0007B5462 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = All; - }; - name = "Development ZeroLink"; - }; - 57A60EB60C4002B0007B5462 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - PRODUCT_NAME = All; - ZERO_LINK = NO; - }; - name = Release; - }; 57C1706809A125DE00FAF325 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7289,49 +6737,27 @@ 57C4862B0C312226002D79F1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - PRODUCT_NAME = "copy hugin_config.h"; + PRODUCT_NAME = configure; }; name = Debug; }; 57C4862C0C312226002D79F1 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - PRODUCT_NAME = "copy hugin_config.h"; + PRODUCT_NAME = configure; }; name = Development; }; - 57C4862D0C312226002D79F1 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "copy hugin_config.h"; - }; - name = "Development ZeroLink"; - }; 57C4862E0C312226002D79F1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - PRODUCT_NAME = "copy hugin_config.h"; - ZERO_LINK = NO; + PRODUCT_NAME = configure; }; name = Release; }; 57D382C60E2369D100445A37 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; PRODUCT_NAME = "tools - other dynamic"; }; name = Debug; @@ -7339,28 +6765,14 @@ 57D382C70E2369D100445A37 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; PRODUCT_NAME = "tools - other dynamic"; }; name = Development; }; - 57D382C80E2369D100445A37 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "tools - other dynamic"; - }; - name = "Development ZeroLink"; - }; 57D382C90E2369D100445A37 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_ENABLE_FIX_AND_CONTINUE = NO; PRODUCT_NAME = "tools - other dynamic"; - ZERO_LINK = NO; }; name = Release; }; @@ -7376,6 +6788,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = nona; @@ -7394,29 +6807,13 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = nona; }; name = Development; }; - 57D382E90E2369FC00445A37 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/foreign/vigra, - ../src/hugin_base, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - PRODUCT_NAME = nona; - }; - name = "Development ZeroLink"; - }; 57D382EA0E2369FC00445A37 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7429,6 +6826,7 @@ LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = nona; @@ -7448,8 +6846,6 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = matchpoint; }; name = Debug; @@ -7467,31 +6863,10 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = matchpoint; }; name = Development; }; - 57D3830B0E236A0800445A37 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - ../src/foreign/vigra, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - PRODUCT_NAME = matchpoint; - }; - name = "Development ZeroLink"; - }; 57D3830C0E236A0800445A37 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7505,8 +6880,6 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = matchpoint; }; name = Release; @@ -7524,8 +6897,6 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = align_image_stack; }; name = Debug; @@ -7543,31 +6914,10 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = align_image_stack; }; name = Development; }; - 57E122650D2BE51000743A93 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - ../src/hugin_base, - ../src/foreign/vigra, - "$(inherited)", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", - "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", - ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - PRODUCT_NAME = align_image_stack; - }; - name = "Development ZeroLink"; - }; 57E122660D2BE51000743A93 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -7581,8 +6931,6 @@ "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = align_image_stack; }; name = Release; @@ -7649,45 +6997,10 @@ "$(inherited)", "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", ); - LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; PRODUCT_NAME = Hugin; }; name = Development; }; - 57E346D50C4A8A2E006AA781 /* Development ZeroLink */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(WX_ARCH)"; - DEPLOYMENT_POSTPROCESSING = NO; - GC... [truncated message content] |
From: <ip...@us...> - 2008-09-12 12:48:07
|
Revision: 3417 http://hugin.svn.sourceforge.net/hugin/?rev=3417&view=rev Author: ippei Date: 2008-09-12 12:48:02 +0000 (Fri, 12 Sep 2008) Log Message: ----------- Mac: moved autopano files to platforms/mac Modified Paths: -------------- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj Added Paths: ----------- hugin/trunk/platforms/mac/autopano/ hugin/trunk/platforms/mac/autopano/PutAutoCPtoApplicationSupport.applescript hugin/trunk/platforms/mac/autopano/PutAutopanoSiftToHugin.applescript hugin/trunk/platforms/mac/autopano/apsc_plugin-Info.plist hugin/trunk/platforms/mac/autopano/autopano-complete-mac.sh hugin/trunk/platforms/mac/autopano/matchpoint-complete-mac.sh Removed Paths: ------------- hugin/trunk/mac/PutAutoCPtoApplicationSupport.applescript hugin/trunk/mac/PutAutopanoSiftToHugin.applescript hugin/trunk/mac/matchpoint-complete-mac.sh Modified: hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj =================================================================== --- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2008-09-12 12:25:49 UTC (rev 3416) +++ hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2008-09-12 12:48:02 UTC (rev 3417) @@ -1665,7 +1665,6 @@ 57565A790D088F2E00344F55 /* ComputeImageROI.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ComputeImageROI.cpp; path = algorithms/nona/ComputeImageROI.cpp; sourceTree = "<group>"; }; 57565A7A0D088F2E00344F55 /* ComputeImageROI.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ComputeImageROI.h; path = algorithms/nona/ComputeImageROI.h; sourceTree = "<group>"; }; 575670980D089B1F00344F55 /* hugin_stitch_project.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = hugin_stitch_project.cpp; sourceTree = "<group>"; }; - 5758E0FB0E5F1091001E74F2 /* PutAutoCPtoApplicationSupport.applescript */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = sourcecode.applescript; path = PutAutoCPtoApplicationSupport.applescript; sourceTree = "<group>"; }; 5759D9AC0C32713F0043F754 /* libhugin_appbase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libhugin_appbase.a; sourceTree = BUILT_PRODUCTS_DIR; }; 5759D9B50C3271640043F754 /* Command.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Command.h; sourceTree = "<group>"; }; 5759D9B60C3271640043F754 /* CommandHistory.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CommandHistory.h; sourceTree = "<group>"; }; @@ -2476,7 +2475,6 @@ 57810AAB0D32D79400F48296 /* complete-embed.sh */, 573E2E440B76AC5100E86281 /* ExternalPrograms */, 573E2E5E0B76AD0100E86281 /* Documents */, - 5758E0FB0E5F1091001E74F2 /* PutAutoCPtoApplicationSupport.applescript */, 57701A750E5B036A00E5026B /* autopano-complete-mac.sh */, 576900800D24D14500A6AD01 /* vigra_impex-Info.plist */, 576900AB0D24D29300A6AD01 /* hugin_base-Info.plist */, Deleted: hugin/trunk/mac/PutAutoCPtoApplicationSupport.applescript =================================================================== --- hugin/trunk/mac/PutAutoCPtoApplicationSupport.applescript 2008-09-12 12:25:49 UTC (rev 3416) +++ hugin/trunk/mac/PutAutoCPtoApplicationSupport.applescript 2008-09-12 12:48:02 UTC (rev 3417) @@ -1,58 +0,0 @@ -\xFF\xFE( |
From: <da...@us...> - 2008-10-08 09:39:45
|
Revision: 3479 http://hugin.svn.sourceforge.net/hugin/?rev=3479&view=rev Author: dangelo Date: 2008-10-08 09:35:22 +0000 (Wed, 08 Oct 2008) Log Message: ----------- merged gsoc2008_integration branch into the trunk. Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/src/CMakeLists.txt hugin/trunk/src/hugin1/CMakeLists.txt hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.cpp hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.h hugin/trunk/src/hugin1/base_wx/RunStitchPanel.cpp hugin/trunk/src/hugin1/base_wx/RunStitchPanel.h hugin/trunk/src/hugin1/hugin/CMakeLists.txt hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/MainFrame.h hugin/trunk/src/hugin1/hugin/PanoPanel.cpp hugin/trunk/src/hugin1/hugin/PanoPanel.h hugin/trunk/src/hugin1/hugin/huginApp.cpp hugin/trunk/src/hugin1/hugin/xrc/data/help_en_EN/Hugin.html hugin/trunk/src/hugin1/hugin/xrc/main_menu.xrc hugin/trunk/src/hugin1/hugin/xrc/pano_panel.xrc hugin/trunk/src/hugin1/hugin/xrc/preview_frame.xrc hugin/trunk/src/hugin_base/hugin_math/hugin_math.h Added Paths: ----------- hugin/trunk/CMakeModules/FindGLEW.cmake hugin/trunk/src/PTBatcher/ hugin/trunk/src/PTBatcher/Batch.cpp hugin/trunk/src/PTBatcher/Batch.h hugin/trunk/src/PTBatcher/CMakeLists.txt hugin/trunk/src/PTBatcher/PTBatcher.cpp hugin/trunk/src/PTBatcher/PTBatcher.desktop hugin/trunk/src/PTBatcher/PTBatcher.h hugin/trunk/src/PTBatcher/PTBatcher_rc.aps hugin/trunk/src/PTBatcher/PTBatcher_rc.rc hugin/trunk/src/PTBatcher/ProjectArray.cpp hugin/trunk/src/PTBatcher/ProjectArray.h hugin/trunk/src/PTBatcher/RunStitchFrame.cpp hugin/trunk/src/PTBatcher/RunStitchFrame.h hugin/trunk/src/PTBatcherGUI/ hugin/trunk/src/PTBatcherGUI/BatchFrame.cpp hugin/trunk/src/PTBatcherGUI/BatchFrame.h hugin/trunk/src/PTBatcherGUI/CMakeLists.txt hugin/trunk/src/PTBatcherGUI/DirTraverser.h hugin/trunk/src/PTBatcherGUI/PTBatcherGUI.cpp hugin/trunk/src/PTBatcherGUI/PTBatcherGUI.desktop hugin/trunk/src/PTBatcherGUI/PTBatcherGUI.h hugin/trunk/src/PTBatcherGUI/PTBatcherGUI_rc.aps hugin/trunk/src/PTBatcherGUI/PTBatcherGUI_rc.rc hugin/trunk/src/PTBatcherGUI/ProjectListBox.cpp hugin/trunk/src/PTBatcherGUI/ProjectListBox.h hugin/trunk/src/hugin1/hugin/ChoosyRemapper.cpp hugin/trunk/src/hugin1/hugin/ChoosyRemapper.h hugin/trunk/src/hugin1/hugin/GLPreviewFrame.cpp hugin/trunk/src/hugin1/hugin/GLPreviewFrame.h hugin/trunk/src/hugin1/hugin/GLRenderer.cpp hugin/trunk/src/hugin1/hugin/GLRenderer.h hugin/trunk/src/hugin1/hugin/GLViewer.cpp hugin/trunk/src/hugin1/hugin/GLViewer.h hugin/trunk/src/hugin1/hugin/MeshManager.cpp hugin/trunk/src/hugin1/hugin/MeshManager.h hugin/trunk/src/hugin1/hugin/MeshRemapper.cpp hugin/trunk/src/hugin1/hugin/MeshRemapper.h hugin/trunk/src/hugin1/hugin/OutputProjectionInfo.cpp hugin/trunk/src/hugin1/hugin/OutputProjectionInfo.h hugin/trunk/src/hugin1/hugin/PreviewCropTool.cpp hugin/trunk/src/hugin1/hugin/PreviewCropTool.h hugin/trunk/src/hugin1/hugin/PreviewDifferenceTool.cpp hugin/trunk/src/hugin1/hugin/PreviewDifferenceTool.h hugin/trunk/src/hugin1/hugin/PreviewDragTool.cpp hugin/trunk/src/hugin1/hugin/PreviewDragTool.h hugin/trunk/src/hugin1/hugin/PreviewIdentifyTool.cpp hugin/trunk/src/hugin1/hugin/PreviewIdentifyTool.h hugin/trunk/src/hugin1/hugin/PreviewPanoMaskTool.cpp hugin/trunk/src/hugin1/hugin/PreviewPanoMaskTool.h hugin/trunk/src/hugin1/hugin/PreviewTool.cpp hugin/trunk/src/hugin1/hugin/PreviewTool.h hugin/trunk/src/hugin1/hugin/PreviewToolHelper.cpp hugin/trunk/src/hugin1/hugin/PreviewToolHelper.h hugin/trunk/src/hugin1/hugin/TexCoordRemapper.cpp hugin/trunk/src/hugin1/hugin/TexCoordRemapper.h hugin/trunk/src/hugin1/hugin/TextureManager.cpp hugin/trunk/src/hugin1/hugin/TextureManager.h hugin/trunk/src/hugin1/hugin/VertexCoordRemapper.cpp hugin/trunk/src/hugin1/hugin/VertexCoordRemapper.h hugin/trunk/src/hugin1/hugin/ViewState.cpp hugin/trunk/src/hugin1/hugin/ViewState.h hugin/trunk/src/hugin1/hugin/xrc/data/crop_tool.png hugin/trunk/src/hugin1/hugin/xrc/data/crop_tool.svg hugin/trunk/src/hugin1/hugin/xrc/data/document-new.png hugin/trunk/src/hugin1/hugin/xrc/data/document-open.png hugin/trunk/src/hugin1/hugin/xrc/data/drag_tool.png hugin/trunk/src/hugin1/hugin/xrc/data/drag_tool.svg hugin/trunk/src/hugin1/hugin/xrc/data/emblem-symbolic-link.png hugin/trunk/src/hugin1/hugin/xrc/data/emblem-unreadable.png hugin/trunk/src/hugin1/hugin/xrc/data/folder-saved-search.png hugin/trunk/src/hugin1/hugin/xrc/data/go-jump.png hugin/trunk/src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Batch_Stitcher.html hugin/trunk/src/hugin1/hugin/xrc/data/identify_tool.png hugin/trunk/src/hugin1/hugin/xrc/data/identify_tool.svg hugin/trunk/src/hugin1/hugin/xrc/data/image-missing.png hugin/trunk/src/hugin1/hugin/xrc/data/list-add.png hugin/trunk/src/hugin1/hugin/xrc/data/list-remove.png hugin/trunk/src/hugin1/hugin/xrc/data/media-floppy.png hugin/trunk/src/hugin1/hugin/xrc/data/media-playback-pause.png hugin/trunk/src/hugin1/hugin/xrc/data/media-playback-start.png hugin/trunk/src/hugin1/hugin/xrc/data/media-playback-stop.png hugin/trunk/src/hugin1/hugin/xrc/data/media-skip-forward.png hugin/trunk/src/hugin1/hugin/xrc/data/photometric.png hugin/trunk/src/hugin1/hugin/xrc/data/photometric.svg hugin/trunk/src/hugin1/hugin/xrc/data/process-stop.png hugin/trunk/src/hugin1/hugin/xrc/data/process-stop16.png hugin/trunk/src/hugin1/hugin/xrc/data/process-stop22.png Removed Paths: ------------- hugin/trunk/src/PTBatcher/Batch.cpp hugin/trunk/src/PTBatcher/Batch.h hugin/trunk/src/PTBatcher/CMakeLists.txt hugin/trunk/src/PTBatcher/PTBatcher.cpp hugin/trunk/src/PTBatcher/PTBatcher.desktop hugin/trunk/src/PTBatcher/PTBatcher.h hugin/trunk/src/PTBatcher/PTBatcher_rc.aps hugin/trunk/src/PTBatcher/PTBatcher_rc.rc hugin/trunk/src/PTBatcher/ProjectArray.cpp hugin/trunk/src/PTBatcher/ProjectArray.h hugin/trunk/src/PTBatcher/RunStitchFrame.cpp hugin/trunk/src/PTBatcher/RunStitchFrame.h hugin/trunk/src/PTBatcherGUI/BatchFrame.cpp hugin/trunk/src/PTBatcherGUI/BatchFrame.h hugin/trunk/src/PTBatcherGUI/CMakeLists.txt hugin/trunk/src/PTBatcherGUI/DirTraverser.h hugin/trunk/src/PTBatcherGUI/PTBatcherGUI.cpp hugin/trunk/src/PTBatcherGUI/PTBatcherGUI.desktop hugin/trunk/src/PTBatcherGUI/PTBatcherGUI.h hugin/trunk/src/PTBatcherGUI/PTBatcherGUI_rc.aps hugin/trunk/src/PTBatcherGUI/PTBatcherGUI_rc.rc hugin/trunk/src/PTBatcherGUI/ProjectListBox.cpp hugin/trunk/src/PTBatcherGUI/ProjectListBox.h Property Changed: ---------------- hugin/trunk/ Property changes on: hugin/trunk ___________________________________________________________________ Added: svn:mergeinfo + /hugin/branches/gsoc2008_batch_processing:3081-3398 Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2008-10-07 21:55:36 UTC (rev 3478) +++ hugin/trunk/CMakeLists.txt 2008-10-08 09:35:22 UTC (rev 3479) @@ -93,7 +93,7 @@ # This must come before FINDs for tiff, jpeg, png, zlib to enable # finding the wxWidgets distributions of those packages (Win32 only). -SET(wxWidgets_USE_LIBS base core xrc html xml adv) +SET(wxWidgets_USE_LIBS base core xrc html xml adv gl) FIND_PACKAGE(wxWidgets REQUIRED) IF(NOT wxWidgets_FOUND) MESSAGE("wxWidgets was not found, GUI programs (hugin, nona_gui) disabled") @@ -121,6 +121,21 @@ INCLUDE_DIRECTORIES(${EXIV2_INCLUDE_DIR}) ENDIF(EXIV2_FOUND) +## OpenGL and GLEW + +FIND_PACKAGE(OpenGL) +FIND_PACKAGE(GLEW) +IF(NOT OPENGL_FOUND) + MESSAGE("OpenGL was not found, hugin disabled") +ENDIF(NOT OPENGL_FOUND) +IF(GLEW_FOUND) + INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) + INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR}) +ENDIF(GLEW_FOUND) + + + + ## ## Panotools ## Copied: hugin/trunk/CMakeModules/FindGLEW.cmake (from rev 3478, hugin/branches/gsoc2008_integration/CMakeModules/FindGLEW.cmake) =================================================================== --- hugin/trunk/CMakeModules/FindGLEW.cmake (rev 0) +++ hugin/trunk/CMakeModules/FindGLEW.cmake 2008-10-08 09:35:22 UTC (rev 3479) @@ -0,0 +1,23 @@ +# Try to find the glew libraries, setting these defines: +# GLEW_FOUND - system has glew +# GLEW_INCLUDE_DIR - glew include directory +# GLEW_LIBRARIES - Libraries needed to use glew + +FIND_PATH(GLEW_INCLUDE_DIR GL/glew.h PATHS /usr/include /usr/local/include) + +FIND_LIBRARY(GLEW_LIBRARIES GLEW PATHS /usr/lib /usr/local/lib) +IF (GLEW_INCLUDE_DIR AND GLEW_LIBRARIES) + SET(GLEW_FOUND TRUE) +ENDIF (GLEW_INCLUDE_DIR AND GLEW_LIBRARIES) + + +IF (GLEW_FOUND) + IF (NOT GLEW_FIND_QUIETLY) + MESSAGE(STATUS "Found Glew: ${FOO_LIBRARY}") + ENDIF (NOT GLEW_FIND_QUIETLY) +ELSE (GLEW_FOUND) + IF (GLEW_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find Glew, install it with your package manager, or get it from http://glew.sourceforge.net/.") + ENDIF (GLEW_FIND_REQUIRED) +ENDIF (GLEW_FOUND) + Modified: hugin/trunk/src/CMakeLists.txt =================================================================== --- hugin/trunk/src/CMakeLists.txt 2008-10-07 21:55:36 UTC (rev 3478) +++ hugin/trunk/src/CMakeLists.txt 2008-10-08 09:35:22 UTC (rev 3479) @@ -1,36 +1,46 @@ - -# define common sets of libraries, used by different subdirectories -IF (MSVC) - # boost_thread is linked automatically - # additionally link to our getopt - set(common_libs huginbase huginjhead hugingetopt - ${PANO_LIBRARIES} huginlevmar) - include_directories( ${CMAKE_SOURCE_DIR}/src/foreign/getopt/include ) -ELSE (MSVC) - # need to specify boost thread library - set(common_libs huginbase huginjhead - ${Boost_thread_LIBRARIES} ${PANO_LIBRARIES} huginlevmar) -ENDIF (MSVC) - -set(image_libs huginvigraimpex ${OPENEXR_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} - ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${EXIV2_LIBRARIES}) - -add_subdirectory(foreign) -add_subdirectory(hugin_base) -add_subdirectory(tools) -add_subdirectory(matchpoint) -add_subdirectory(deghosting) - -# build vips stuff, only if vips was found -# not ready for the general public yet -IF(VIPS_FOUND) -# add_subdirectory(vips) -ENDIF(VIPS_FOUND) - -# build gui only if wxWidgets was found -IF(wxWidgets_FOUND) - INCLUDE(${wxWidgets_USE_FILE}) - add_subdirectory(hugin1) -ENDIF(wxWidgets_FOUND) - -add_subdirectory(translations) + +# define common sets of libraries, used by different subdirectories +IF (MSVC) + # boost_thread is linked automatically + # additionally link to our getopt + set(common_libs huginbase huginjhead hugingetopt + ${PANO_LIBRARIES} huginlevmar) + include_directories( ${CMAKE_SOURCE_DIR}/src/foreign/getopt/include ) +ELSE (MSVC) + # need to specify boost thread library + set(common_libs huginbase huginjhead + ${Boost_thread_LIBRARIES} ${PANO_LIBRARIES} huginlevmar) +ENDIF (MSVC) + +set(image_libs huginvigraimpex ${OPENEXR_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} + ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${EXIV2_LIBRARIES}) + +add_subdirectory(foreign) +add_subdirectory(hugin_base) +add_subdirectory(tools) +add_subdirectory(matchpoint) +add_subdirectory(deghosting) + +# build vips stuff, only if vips was found +# not ready for the general public yet +IF(VIPS_FOUND) +# add_subdirectory(vips) +ENDIF(VIPS_FOUND) + +# build gui only if wxWidgets was found +IF(wxWidgets_FOUND) + INCLUDE(${wxWidgets_USE_FILE}) + add_subdirectory(hugin1) + + include_directories( ${CMAKE_SOURCE_DIR}/src/hugin1 ) + # do we need to define _UNICODE on windows? + IF(WIN32) + IF ("${wxWidgets_CONFIGURATION}" STREQUAL "mswu") + ADD_DEFINITIONS("-D_UNICODE") + ENDIF("${wxWidgets_CONFIGURATION}" STREQUAL "mswu") + ENDIF(WIN32) + add_subdirectory(PTBatcher) + add_subdirectory(PTBatcherGUI) +ENDIF(wxWidgets_FOUND) + +add_subdirectory(translations) Property changes on: hugin/trunk/src/PTBatcher ___________________________________________________________________ Added: svn:ignore + DirTraverser2.h ProjectListBox2.cpp ProjectListBox2.h PTBatcher2.h PTBatcher.desktop2 Deleted: hugin/trunk/src/PTBatcher/Batch.cpp =================================================================== --- hugin/branches/gsoc2008_integration/src/PTBatcher/Batch.cpp 2008-10-07 21:55:36 UTC (rev 3478) +++ hugin/trunk/src/PTBatcher/Batch.cpp 2008-10-08 09:35:22 UTC (rev 3479) @@ -1,914 +0,0 @@ -// -*- c-basic-offset: 4 -*- - -/** @file Batch.cpp - * - * @brief Batch processor for Hugin - * - * @author Marko Kuder <mar...@gm...> - * - * $Id: Batch.cpp 3322 2008-08-18 1:10:07Z mkuder $ - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this software; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include "Batch.h" - -BEGIN_EVENT_TABLE(Batch, wxFrame) - EVT_END_PROCESS(-1, Batch::OnProcessTerminate) -END_EVENT_TABLE() - -Batch::Batch(wxFrame* parent, wxString path, bool bgui) : wxFrame(parent,wxID_ANY,_T("Batch")){ - //default flag settings - parallel = false; - deleteFiles = false; - shutdown = false; - overwrite = true; - verbose = false; - gui = bgui; - m_cancelled = false; - m_paused = false; - m_running = false; - m_clearedInProgress = false; - - // Required to access the preferences of hugin - //SetAppName(wxT("hugin")); - - if(!gui) - m_locale.Init(wxLANGUAGE_DEFAULT); - - // setup the environment for the different operating systems -#if defined __WXMSW__ - wxString huginExeDir = getExePath(path); - - wxString huginRoot; - wxFileName::SplitPath(huginExeDir, &huginRoot, NULL, NULL); - /*wxString huginRoot; - wxFileName::SplitPath(huginExeDir, &huginRoot, NULL, NULL); - m_xrcPrefix = huginRoot + wxT("/share/hugin/xrc/"); - - // locale setup - m_locale.AddCatalogLookupPathPrefix(huginRoot + wxT("/share/locale"));*/ - - if(!gui) - { - wxConfigBase* config = new wxConfig(wxT("hugin")); - m_config = config; - wxConfigBase::Set(m_config); - - // locale setup - m_locale.AddCatalogLookupPathPrefix(huginRoot + wxT("/share/locale")); - } - - progs = getPTProgramsConfig(huginExeDir, wxConfigBase::Get()); -#else - // add the locale directory specified during configure - if(!gui) - m_locale.AddCatalogLookupPathPrefix(wxT(INSTALL_LOCALE_DIR)); - PTPrograms progs = getPTProgramsConfig(wxT(""), wxConfigBase::Get()); -#endif - - // update incompatible configuration entries. - updateHuginConfig(wxConfigBase::Get()); - - // set the name of locale recource to look for - m_locale.AddCatalog(wxT("hugin")); -} - -void Batch::AddAppToBatch(wxString app) -{ - Project *newApp = new Project(app); - m_projList.Add(newApp); -} - -void Batch::AddProjectToBatch(wxString projectFile, wxString outputFile) -{ - wxFileName name(projectFile); - - if(outputFile.Cmp(_T(""))!=0) - { - Project *proj = new Project(projectFile,outputFile); - m_projList.Add(proj); - /*if(gui) - ((wxFrame*)GetParent())->SetStatusText(_T("Added project ")+projectFile+_T(" with output ")+outputFile); - else if(verbose) - cout << "Added project " << projectFile.char_str() << " with output " << outputFile.char_str() << endl;*/ - } - else - { //on output set as "", it defaults to same path and name as project file - Project *proj = new Project(projectFile,name.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR) + name.GetName()); - m_projList.Add(proj); - /*if(gui) - ((wxFrame*)GetParent())->SetStatusText(_T("Added project ")+projectFile); - else if(verbose) - cout << "Added project " << projectFile.char_str() << endl;*/ - } -} - -bool Batch::AllDone() -{ - for(unsigned int i=0; i<m_projList.GetCount(); i++) - { - if(m_projList.Item(i).status==Project::WAITING || - m_projList.Item(i).status==Project::RUNNING || - m_projList.Item(i).status==Project::PAUSED) - { - return false; - } - } - return true; -} - -void Batch::AppendBatchFile(wxString file) -{ - if(wxFileName::FileExists(file)) - { - wxFileInputStream fileStream(file); - wxString projectName = _T(""); - wxTextInputStream textStream(fileStream); - - //TO-DO: batch file error checking? - //first line in file is idGenerator, we save it a temp variable, cause it gets set when adding projects - long idGenTemp = 1; - textStream.ReadLine().ToLong(&idGenTemp); - //then for each project: project path, prefix, id, status, skip - while((projectName = textStream.ReadLine()).Cmp(_(""))!=0) - { - //we add project to internal list - AddProjectToBatch(projectName,textStream.ReadLine()); - textStream.ReadLine().ToLong(&m_projList.Last().id); - long status; - textStream.ReadLine().ToLong(&status); - //if status was RUNNING or PAUSED, we set it to FAILED - if(status==(long)Project::RUNNING || status==(long)Project::PAUSED) - status=(long)Project::FAILED; - m_projList.Last().status = (Project::Status)status; - if(textStream.ReadLine().StartsWith(_T("T"))) - m_projList.Last().skip = true; - } - //we set the id generator we got from file - Project::idGenerator = idGenTemp; - } -} - -void Batch::CancelBatch() -{ - m_cancelled = true; - for(int i=0; i<GetRunningCount(); i++) - CancelProject(i); - m_running = false; -} -void Batch::CancelProject(int index) -{ - wxCommandEvent event; - if(GetRunningCount()==1) - m_paused = false; - m_stitchFrames.Item(index)->OnCancel(event); - if(GetRunningCount()==0) - m_running = false; -} -void Batch::ChangePrefix(int index, wxString newPrefix) -{ - m_projList.Item(index).prefix = newPrefix; -} -bool Batch::CheckProjectExistence() //used only in console version -{ - #ifdef __WXMSW__ //on windows we run a loop every second to check if running processes are still active - bool exist = true; - HANDLE process; - DWORD exitState; - while(exist) - { - exist = false; - - for(unsigned int i=0; i<m_stitchFrames.GetCount(); i++) - { - try - { - process = OpenProcess(PROCESS_QUERY_INFORMATION,true,m_stitchFrames.Item(i)->GetProcessId()); - GetExitCodeProcess(process,&exitState); - } - catch(::exception e) - { - exitState=1; - } - if(exitState==STILL_ACTIVE) - exist=true; - else if(exitState!=0) - SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); - CloseHandle(process); - } - wxSleep(1); - } - #else //not __WXMSW__, on Linux we wait for each of the processes to complete - int status; - int pid; - for(unsigned int i=0; i<m_stitchFrames.GetCount(); i++) - { - pid = m_stitchFrames.Item(i)->GetProcessId(); - if(waitpid(pid,&status,0)==-1) - SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); //we set to failed if waitpid terminated with an error - if(!WIFEXITED(status) || WEXITSTATUS(status)!=0) - SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); //we set to failed if child terminated abnormally or with a bad exit code - } - #endif - - wxProcessEvent event; - for(int i=m_stitchFrames.GetCount()-1; i>=0; i--) - { - event.SetId(m_stitchFrames.Item(i)->GetProjectId()); - if(GetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()))==Project::FAILED) - event.SetTimestamp(-1); //a failed exit code cannot be set to a wxWidgets event, so we fake it inside event's timestamp - OnProcessTerminate(event); - } - return true; -} - -int Batch::ClearBatch() -{ - if(m_stitchFrames.GetCount()!=0) - { - if(gui) - { - wxMessageDialog message(this, _T("Cannot clear batch in progress.\nDo you want to cancel it?"), _T("In progress"), wxYES | wxCANCEL | wxICON_INFORMATION); - if(message.ShowModal()==wxID_YES) - { - CancelBatch(); - - //we set a flag so we don't process terminating events - m_clearedInProgress = true; - Project::idGenerator=1; - m_projList.Clear(); - if(gui) - ((wxFrame*)GetParent())->SetStatusText(_T("Cleared batch.")); - else if(verbose) - cout << "Cleared batch." << endl; - return 2; - } - } - else if(verbose) - cout << "Error: Cannot clear batch in progress." << endl; - return 1; - //TO-DO: return - /*wxMessageDialog message(this, _T("Cannot clear batch in progress.\nDo you want to cancel it?"), _T("In progress"), wxYES | wxCANCEL | wxICON_INFORMATION); - if(message.ShowModal()==wxID_YES) - { - OnButtonCancel(event); - }*/ - } - else - { - Project::idGenerator=1; - m_projList.Clear(); - if(gui) - ((wxFrame*)GetParent())->SetStatusText(_T("Cleared batch.")); - else if(verbose) - cout << "Cleared batch." << endl; - return 0; - } -} - -bool Batch::CompareProjectsInLists(int stitchListIndex, int batchListIndex) -{ - return m_stitchFrames.Item(stitchListIndex)->GetProjectId() == m_projList.Item(batchListIndex).id; -} - -int Batch::GetFirstAvailable() -{ - unsigned int i = 0; - while(i<m_projList.Count()) - { - if(m_projList.Item(i).skip || m_projList.Item(i).status!=Project::WAITING) - i++; - else - break; - } - if((m_projList.Count() == 0) || (i == m_projList.Count())) - { - //no projects are available anymore - return -1; - } - else - { - return i; - } -} - -int Batch::GetIndex(int id) -{ - for(unsigned int i=0; i<m_projList.GetCount(); i++) - { - if(m_projList.Item(i).id==id) - return i; - } - return -1; -} - - -Project* Batch::GetProject(int index) -{ - return (Project*)&m_projList.Item(index); -} -int Batch::GetProjectCount() -{ - return m_projList.GetCount(); -} -int Batch::GetProjectCountByPath(wxString path) -{ - int count = 0; - for(unsigned int i=0; i<m_projList.GetCount(); i++) - { - if(!m_projList.Item(i).skip && (path.Cmp(m_projList.Item(i).path)==0)) - count++; - } - return count; -} - - -int Batch::GetRunningCount() -{ - return m_stitchFrames.GetCount(); -} - -Project::Status Batch::GetStatus(int index) -{ - if((unsigned int)index<m_projList.GetCount()) - return m_projList.Item(index).status; - else if(gui) - wxMessageBox( _T("Error: Could not get status, project with index ")+wxString::Format(_("%d"),index)+_T(" is not in list."),_T("Error!"),wxOK | wxICON_INFORMATION ); - else if(verbose) - cout << "Error: Could not get status, project with index " << index << " is not in list." << endl; - return Project::MISSING; -} -bool Batch::IsPaused() -{ - return m_paused; -} - -void Batch::ListBatch() -{ - if(m_projList.GetCount() == 0) - cout << "Batch is empty." << endl; - else - { - cout << "List of projects in batch:" << endl << - "[ID] [project path] [output filename] [status]" << endl << - "-------------------------------------" << endl; - for(unsigned int i=0; i<m_projList.GetCount(); i++) - { - cout << m_projList.Item(i).id << " " << m_projList.Item(i).path.char_str() << " " << m_projList.Item(i).prefix.char_str() << " " << m_projList.Item(i).GetStatusText().char_str() << endl; - } - } -} - - -int Batch::LoadBatchFile(wxString file) -{ - int clearCode = ClearBatch(); - if(clearCode==0) - { - AppendBatchFile(file); - return 0; - } - else if(clearCode==2) - { - AppendBatchFile(file); - return 2; - } - else if(gui) - wxMessageBox(_T("Error: Could not load batch file.")); - else if(verbose) - cout << "Error: Could not load batch file." << endl; - return 1; -} - - -int Batch::LoadTemp() -{ - wxDir* workingDir = new wxDir(wxFileName::GetTempDir()); - wxString pending; - wxString fileTemp = _T("~ptbt*"); - wxString temp = _T(""); - //we check for existing temporary files - if(workingDir->GetFirst(&temp,fileTemp,wxDIR_FILES)) - { - //we find the last existing tempfile (there should be at most two, but we check for multiple just in case) - while(workingDir->GetNext(&pending)) - { - wxFileName tempFile(temp); - wxFileName pendingFile(pending); - wxDateTime* create1 = new wxDateTime(); - wxDateTime* create2 = new wxDateTime(); - if(tempFile.FileExists() && pendingFile.FileExists()) - { - tempFile.GetTimes(NULL,NULL,create1); - pendingFile.GetTimes(NULL,NULL,create2); - if(create2->IsLaterThan(*create1)) - { - wxRemoveFile(temp); - temp=wxString(pending); - } - } - else - { - //wxMessageBox( _T("Error reading temporary file"),_T("Error!"),wxOK | wxICON_INFORMATION ); - return 1; - } - } - } - //we load the data from the temp file - AppendBatchFile(workingDir->GetName()+wxFileName::GetPathSeparator()+temp); - if(verbose && !gui) - cout << "Loaded temp file." << endl; - return 0; -} - - -bool Batch::NoErrors() -{ - for(unsigned int i=0; i<m_projList.GetCount(); i++) - { - if(m_projList.Item(i).status==Project::FAILED) - { - return false; - } - } - return true; -} -void Batch::OnProcessTerminate(wxProcessEvent & event) -{ - //we find the right pointer to remove - unsigned int i = 0; - while(i < m_stitchFrames.GetCount() && - m_stitchFrames.Item(i)->GetProjectId()!=event.GetId()) - { - i++; - } - m_stitchFrames.RemoveAt(i); - if(m_clearedInProgress) - { - if(m_stitchFrames.GetCount()==0) - { - m_paused = false; - m_running = false; - m_cancelled = false; - m_clearedInProgress = false; - } - } - else - { - if(m_stitchFrames.GetCount()==0) - m_paused = false; - i = GetIndex(event.GetId()); - if (event.GetExitCode() != 0 || event.GetTimestamp()==-1) //timestamp is used as a fake exit code because it cannot be set manually - m_projList.Item(i).status=Project::FAILED; - else - m_projList.Item(i).status=Project::FINISHED; - if(!m_cancelled && !m_paused) - { - if(AllDone()) - { - m_running = false; - if(NoErrors()) - { - if(gui) - //SetStatusText(_T("Project \"")+m_projList.Item(i).path+_T("\" finished. Batch successfully completed.")); - SetStatusText(_T("Batch successfully completed.")); - else - //cout << "Project \"" << m_projList.Item(i).path.char_str() << "\" finished. Batch successfully completed." << endl; - cout << "Batch successfully completed." << endl; - } - else - { - if(gui) - //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Batch completed with errors.")); - SetStatusText(_T("Batch completed with errors.")); - else - //cout << "Project \"" << m_projList.Item(i).path.char_str() << "\" finished. Batch completed with errors." << endl; - cout << "Batch completed with errors." << endl; - } - if(shutdown) //after we are finished we turn off the computer if checked - { - if(gui) - { - wxProgressDialog progress(_("Initializing shutdown..."), _T("Shutting down..."),49,this, - wxPD_AUTO_HIDE | wxPD_SMOOTH | wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_CAN_SKIP); - progress.Fit(); - int i = 0; - bool skip = false; - while(progress.Update(i, _T("Shutting down..."),&skip)) - { - if(skip || i==50) - { - /*wxMessageDialog message(this,_T("Krneksa")); - message.ShowModal(); - break;*/ - wxShutdown(wxSHUTDOWN_POWEROFF); - } - i++; - #if defined __WXMSW__ - Sleep(200); - #else - sleep(200); - #endif - } - progress.Close(); - } - else - { - if(!wxShutdown(wxSHUTDOWN_POWEROFF)) - { - if(gui) - #ifdef __WXMSW__ - wxMessageBox(_T("Error shutting down.")); - #else - wxMessageBox(_T("Error shutting down. Do you have root privileges?")); - #endif - else - #ifdef __WXMSW__ - cout << "Error shutting down." << endl; - #else - cout << "Error shutting down. Do you have root privileges?" << endl; - #endif - } - } - } - } - else - { - if(parallel) //if we are running in parallel - { - //the last executed process in parallel runs next - if(GetRunningCount() == 0) - { - //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Running next project...")); - RunNextInBatch(); - } - else - { - //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Waiting for all in parallel to complete...")); - } - } - else - { - //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Running next project...")); - RunNextInBatch(); - } - } - } - else - { //after all processes have ended on a cancel, we reset the boolean back to false - //if(stitchFrames.GetCount()==0) - if(GetRunningCount()==0) - { - m_cancelled=false; - } - } - } -} -bool Batch::OnStitch(wxString scriptFile, wxString outname, int id) //was previously without parameter -{ - //if( parser.GetParamCount() == 0 && wxIsEmpty(scriptFile)) - //{ - if(wxIsEmpty(scriptFile)) - { - wxString defaultdir = wxConfigBase::Get()->Read(wxT("/actualPath"),wxT("")); - wxFileDialog dlg(0, - _("Specify project source project file"), - defaultdir, wxT(""), - _("Project files (*.pto,*.ptp,*.pts,*.oto)|*.pto;*.ptp;*.pts;*.oto;|All files (*)|*"), - wxOPEN, wxDefaultPosition); - - dlg.SetDirectory(wxConfigBase::Get()->Read(wxT("/actualPath"),wxT(""))); - if (dlg.ShowModal() == wxID_OK) { - wxConfig::Get()->Write(wxT("/actualPath"), dlg.GetDirectory()); // remember for later - - //scriptFile = dlg.GetPath(); - wxFileDialog dlg2(0,_("Specify output prefix"), - wxConfigBase::Get()->Read(wxT("/actualPath"),wxT("")), - wxT(""), wxT(""), - wxSAVE, wxDefaultPosition); - dlg2.SetDirectory(wxConfigBase::Get()->Read(wxT("/actualPath"),wxT(""))); - if (dlg2.ShowModal() == wxID_OK) { - //wxConfig::Get()->Write(wxT("/actualPath"), dlg2.GetDirectory()); // remember for later - outname = dlg2.GetPath(); - } else { // bail - wxLogError( _("No output prefix specified")); - return false; - } - scriptFile = dlg.GetPath(); - } else { // bail - return false; - wxLogError( _("No project files specified")); - } - } - - if(!gui) - cout << "Stitching with input file " << (const char *)scriptFile.mb_str(wxConvLocal) << "..." << endl; - - // check output filename - wxFileName outfn(outname); - wxString ext = outfn.GetExt(); - // remove extension if it indicates an image file - if (ext.CmpNoCase(wxT("jpg")) == 0 || ext.CmpNoCase(wxT("jpeg")) == 0 || - ext.CmpNoCase(wxT("tif")) == 0 || ext.CmpNoCase(wxT("tiff")) == 0 || - ext.CmpNoCase(wxT("png")) == 0 || ext.CmpNoCase(wxT("exr")) == 0 || - ext.CmpNoCase(wxT("pnm")) == 0 || ext.CmpNoCase(wxT("hdr")) == 0) - { - outfn.ClearExt(); - outname = outfn.GetFullPath(); - } - - RunStitchFrame *stitchFrame = new RunStitchFrame(this, wxT("Hugin Stitcher"), wxDefaultPosition, wxSize(640,600)); //,wxGetApp().m_projList, projListBox ); - //stitchFrame->SetEventHandler(this); - stitchFrame->SetProjectId(id); - if(verbose && gui) - { - stitchFrame->Show( true ); - wxTheApp->SetTopWindow( stitchFrame ); - } - - wxFileName basename(scriptFile); - stitchFrame->SetTitle(wxString::Format(_("%s - Stitching"), basename.GetName().c_str())); - if(overwrite) - stitchFrame->m_stitchPanel->SetOverwrite(true); - - bool n = stitchFrame->StitchProject(scriptFile, outname, progs); - m_stitchFrames.Add(stitchFrame); - if(!n) - stitchFrame->Close(); - /*if (parser.Found(wxT("d")) ) { - wxRemoveFile(scriptFile); - }*/ - return n; - -} - - - - -void Batch::PauseBatch() -{ - if(!m_paused) - { - m_paused = true; - for(int i=0; i<GetRunningCount(); i++) - { - m_stitchFrames.Item(i)->m_stitchPanel->PauseStitch(); - } - for(unsigned int i=0; i<m_projList.GetCount(); i++) - { - if(m_projList.Item(i).status==Project::RUNNING) - m_projList.Item(i).status=Project::PAUSED; - } - } - else - { - m_paused = false; - for(int i=0; i<GetRunningCount(); i++) - { - m_stitchFrames.Item(i)->m_stitchPanel->ContinueStitch(); - } - for(unsigned int i=0; i<m_projList.GetCount(); i++) - { - if(m_projList.Item(i).status==Project::PAUSED) - m_projList.Item(i).status=Project::RUNNING; - } - } -} - - -void Batch::RemoveProject(int id) -{ - int index; - if((index=GetIndex(id)) != -1) - { - RemoveProjectAtIndex(GetIndex(id)); - } - else if(gui) - wxMessageBox( _T("Error removing, project with id ")+wxString::Format(_T("%d"),id)+_T(" is not in list."),_T("Error!"),wxOK | wxICON_INFORMATION ); - else if(verbose) - cout << "Error: Project with id " << id << " is not in list." << endl; -} -void Batch::RemoveProjectAtIndex(int selIndex) -{ - //we delete only successful project files and no applications - if(deleteFiles - && m_projList.Item(selIndex).id>=0 - && m_projList.Item(selIndex).status==Project::FINISHED) - { - wxFileName file(m_projList.Item(selIndex).path); - if(file.FileExists()) - { - if(!wxRemoveFile(file.GetFullPath())) - { - if(gui) - wxMessageBox( _T("Error: Could not delete project file ")+file.GetFullPath(),_T("Error!"),wxOK | wxICON_INFORMATION ); - else if(verbose) - cout << "Error: Could not delete project file " << file.GetFullPath().char_str() << endl; - } - } - } - m_projList.RemoveAt(selIndex); - if(m_projList.GetCount()==0) //reset the id generator on empty list - Project::idGenerator=1; -} - -void Batch::RunBatch() -{ - if(!gui && m_projList.GetCount() == 0) - cout << "Batch is empty." << endl; - else if(!m_running) - { - if(gui) - ((wxFrame*)GetParent())->SetStatusText(_T("Running batch...")); - else - cout << "Running batch..." << endl; - bool cancelRun = false; - //check for missing project files - wxFileName file = wxFileName(); - for(unsigned int i=0; i<m_projList.Count(); i++) - { - if(m_projList.Item(i).id >= 0) //we don't check file existence for command line instructions - { - file.Assign(m_projList.Item(i).path); - if(!file.FileExists()) - { - /*wxMessageDialog message(this,_T("Project file \"")+m_projList.Item(i).path+_T("\" is missing, project will not be executed."), _T("Project missing"), - wxOK | wxCANCEL | wxICON_INFORMATION ); - if(message.ShowModal() != wxID_OK) - { - cancelRun = true; - }*/ - - } - } - } - - //bool value; - //if we didn't cancel and not all project are marked for skip - if(!cancelRun) - { - m_running = true; - RunNextInBatch(); - } - } - else if(gui) - ((wxFrame*)GetParent())->SetStatusText(_T("Batch already in progress.")); -} - -void Batch::RunNextInBatch() -{ - //((wxToolBar*)FindWindow(TOOLBAR))->ToggleTool(TOOLPAUSE,false); - bool value; - bool repeat = true; - unsigned int i; - while(((i=GetFirstAvailable())!=-1) && repeat) - { - //execute command line instructions - if(m_projList.Item(i).id<0) - { - //if(wxFile::Exists(_T("h:\\pictures\\some2.tif"))) - // wxMessageBox( _T("y"),_T("y"),wxOK | wxICON_INFORMATION ); - if(gui) - SetStatusText(_T("Running command \"")+m_projList.Item(i).path+_T("\"")); - else - cout << "Running command \"" << m_projList.Item(i).path.char_str() << "\"" << endl; - m_projList.Item(i).status=Project::RUNNING; - if(!gui) //we create a fake stitchFrame, so program waits for app to complete - { - //cout << "creating stitchframe" << endl; - RunStitchFrame *stitchFrame = new RunStitchFrame(this, wxT("Hugin Stitcher"), wxDefaultPosition, wxSize(640,600)); - stitchFrame->SetProjectId(m_projList.Item(i).id); - - //cout << "adding" << endl; - repeat = false; - int pid = wxExecute(m_projList.Item(i).path, wxEXEC_ASYNC); - stitchFrame->SetProcessId(pid); - m_stitchFrames.Add(stitchFrame); - //cout << "pid is " << pid << endl; - } - else - { - if(wxExecute(m_projList.Item(i).path, wxEXEC_SYNC)==0) - m_projList.Item(i).status=Project::FINISHED; - else - m_projList.Item(i).status=Project::FAILED; - } - } - else - { - if(!parallel) //we run in sequence - { - //wxMessageBox( _T("2"),_T("2"),wxOK | wxICON_INFORMATION ); - m_projList.Item(i).status=Project::RUNNING; - //SetStatusText(_T("Stitching project \"")+m_projList.Item(i).path+_T("\"")); - m_running = true; - value = OnStitch(m_projList.Item(i).path, m_projList.Item(i).prefix, m_projList.Item(i).id); - if(!value) - m_projList.Item(i).status=Project::FAILED; - else - repeat = false; - } - else - { - while((i = GetFirstAvailable())!=-1) - { - //projListBox->Select(i); //select the currently processing project - if(m_projList.Item(i).id<0) - break; - m_projList.Item(i).status=Project::RUNNING; - //SetStatusText(_T("Stitching...")); - m_running = true; - value = OnStitch(m_projList.Item(i).path, m_projList.Item(i).prefix, m_projList.Item(i).id); - if(!value) - m_projList.Item(i).status=Project::FAILED; - else - repeat = false; - } - //projListMutex->Unlock(); - } - } - } - if(AllDone()) - m_running = false; - else if(!gui) - CheckProjectExistence(); -} - -void Batch::SaveBatchFile(wxString file) -{ - wxFileOutputStream fileStream(file); - wxTextOutputStream textStream(fileStream); - //we write current idGenerator to file - wxString line = _T(""); - line << Project::idGenerator; - textStream.WriteString(line+_T("\n")); - //then for each project: project path, prefix, id, status, skip - for(unsigned int i = 0; i< m_projList.GetCount(); i++) - { - textStream.WriteString(m_projList.Item(i).path+_T("\n")); - textStream.WriteString(m_projList.Item(i).prefix+_T("\n")); - line = _T(""); - line << m_projList.Item(i).id; - textStream.WriteString(line+_T("\n")); - line = _T(""); - line << m_projList.Item(i).status; - textStream.WriteString(line+_T("\n")); - if(m_projList.Item(i).skip) - textStream.WriteString(_T("T\n")); - else - textStream.WriteString(_T("F\n")); - } - fileStream.Close(); -} - -void Batch::SaveTemp() -{ - //wxMessageBox( _T("saving temp file"),_T(""),wxOK | wxICON_INFORMATION ); - wxDir* workingDir = new wxDir(wxFileName::GetTempDir()); - wxString fileTemp = _T("~ptbt*"); - //we get the old temp file - fileTemp = workingDir->FindFirst(workingDir->GetName(),fileTemp,wxDIR_FILES); - wxFileName oldFile(fileTemp); - //we alternate between 0 and 1 - wxString suffix; - if(fileTemp.EndsWith(_T("0"))) - suffix = _T("1"); - else - suffix = _T("0"); - SaveBatchFile(wxFileName::GetTempDir()+wxFileName::GetPathSeparator()+_T("~ptbt")+suffix); - if(verbose && !gui) - cout << "Saved temp file." << endl; - //we remove the previous temp file - if(oldFile.FileExists()) - wxRemoveFile(fileTemp); -} - - -void Batch::SetStatus(int index,Project::Status status) -{ - if((unsigned int)index<m_projList.GetCount()) - m_projList.Item(index).status = status; - else if(gui) - wxMessageBox( _T("Error: Could not set status, project with index ")+wxString::Format(_("%d"),index)+_T(" is not in list."),_T("Error!"),wxOK | wxICON_INFORMATION ); - else if(verbose) - cout << "Error: Could not set status, project with index " << index << " is not in list." << endl; -} -void Batch::SwapProject(int index) -{ - Project* proj = m_projList.Detach(index+1); - m_projList.Insert(proj,index); -} Copied: hugin/trunk/src/PTBatcher/Batch.cpp (from rev 3478, hugin/branches/gsoc2008_integration/src/PTBatcher/Batch.cpp) =================================================================== --- hugin/trunk/src/PTBatcher/Batch.cpp (rev 0) +++ hugin/trunk/src/PTBatcher/Batch.cpp 2008-10-08 09:35:22 UTC (rev 3479) @@ -0,0 +1,914 @@ +// -*- c-basic-offset: 4 -*- + +/** @file Batch.cpp + * + * @brief Batch processor for Hugin + * + * @author Marko Kuder <mar...@gm...> + * + * $Id: Batch.cpp 3322 2008-08-18 1:10:07Z mkuder $ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "Batch.h" + +BEGIN_EVENT_TABLE(Batch, wxFrame) + EVT_END_PROCESS(-1, Batch::OnProcessTerminate) +END_EVENT_TABLE() + +Batch::Batch(wxFrame* parent, wxString path, bool bgui) : wxFrame(parent,wxID_ANY,_T("Batch")){ + //default flag settings + parallel = false; + deleteFiles = false; + shutdown = false; + overwrite = true; + verbose = false; + gui = bgui; + m_cancelled = false; + m_paused = false; + m_running = false; + m_clearedInProgress = false; + + // Required to access the preferences of hugin + //SetAppName(wxT("hugin")); + + if(!gui) + m_locale.Init(wxLANGUAGE_DEFAULT); + + // setup the environment for the different operating systems +#if defined __WXMSW__ + wxString huginExeDir = getExePath(path); + + wxString huginRoot; + wxFileName::SplitPath(huginExeDir, &huginRoot, NULL, NULL); + /*wxString huginRoot; + wxFileName::SplitPath(huginExeDir, &huginRoot, NULL, NULL); + m_xrcPrefix = huginRoot + wxT("/share/hugin/xrc/"); + + // locale setup + m_locale.AddCatalogLookupPathPrefix(huginRoot + wxT("/share/locale"));*/ + + if(!gui) + { + wxConfigBase* config = new wxConfig(wxT("hugin")); + m_config = config; + wxConfigBase::Set(m_config); + + // locale setup + m_locale.AddCatalogLookupPathPrefix(huginRoot + wxT("/share/locale")); + } + + progs = getPTProgramsConfig(huginExeDir, wxConfigBase::Get()); +#else + // add the locale directory specified during configure + if(!gui) + m_locale.AddCatalogLookupPathPrefix(wxT(INSTALL_LOCALE_DIR)); + PTPrograms progs = getPTProgramsConfig(wxT(""), wxConfigBase::Get()); +#endif + + // update incompatible configuration entries. + updateHuginConfig(wxConfigBase::Get()); + + // set the name of locale recource to look for + m_locale.AddCatalog(wxT("hugin")); +} + +void Batch::AddAppToBatch(wxString app) +{ + Project *newApp = new Project(app); + m_projList.Add(newApp); +} + +void Batch::AddProjectToBatch(wxString projectFile, wxString outputFile) +{ + wxFileName name(projectFile); + + if(outputFile.Cmp(_T(""))!=0) + { + Project *proj = new Project(projectFile,outputFile); + m_projList.Add(proj); + /*if(gui) + ((wxFrame*)GetParent())->SetStatusText(_T("Added project ")+projectFile+_T(" with output ")+outputFile); + else if(verbose) + cout << "Added project " << projectFile.char_str() << " with output " << outputFile.char_str() << endl;*/ + } + else + { //on output set as "", it defaults to same path and name as project file + Project *proj = new Project(projectFile,name.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR) + name.GetName()); + m_projList.Add(proj); + /*if(gui) + ((wxFrame*)GetParent())->SetStatusText(_T("Added project ")+projectFile); + else if(verbose) + cout << "Added project " << projectFile.char_str() << endl;*/ + } +} + +bool Batch::AllDone() +{ + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(m_projList.Item(i).status==Project::WAITING || + m_projList.Item(i).status==Project::RUNNING || + m_projList.Item(i).status==Project::PAUSED) + { + return false; + } + } + return true; +} + +void Batch::AppendBatchFile(wxString file) +{ + if(wxFileName::FileExists(file)) + { + wxFileInputStream fileStream(file); + wxString projectName = _T(""); + wxTextInputStream textStream(fileStream); + + //TO-DO: batch file error checking? + //first line in file is idGenerator, we save it a temp variable, cause it gets set when adding projects + long idGenTemp = 1; + textStream.ReadLine().ToLong(&idGenTemp); + //then for each project: project path, prefix, id, status, skip + while((projectName = textStream.ReadLine()).Cmp(_(""))!=0) + { + //we add project to internal list + AddProjectToBatch(projectName,textStream.ReadLine()); + textStream.ReadLine().ToLong(&m_projList.Last().id); + long status; + textStream.ReadLine().ToLong(&status); + //if status was RUNNING or PAUSED, we set it to FAILED + if(status==(long)Project::RUNNING || status==(long)Project::PAUSED) + status=(long)Project::FAILED; + m_projList.Last().status = (Project::Status)status; + if(textStream.ReadLine().StartsWith(_T("T"))) + m_projList.Last().skip = true; + } + //we set the id generator we got from file + Project::idGenerator = idGenTemp; + } +} + +void Batch::CancelBatch() +{ + m_cancelled = true; + for(int i=0; i<GetRunningCount(); i++) + CancelProject(i); + m_running = false; +} +void Batch::CancelProject(int index) +{ + wxCommandEvent event; + if(GetRunningCount()==1) + m_paused = false; + m_stitchFrames.Item(index)->OnCancel(event); + if(GetRunningCount()==0) + m_running = false; +} +void Batch::ChangePrefix(int index, wxString newPrefix) +{ + m_projList.Item(index).prefix = newPrefix; +} +bool Batch::CheckProjectExistence() //used only in console version +{ + #ifdef __WXMSW__ //on windows we run a loop every second to check if running processes are still active + bool exist = true; + HANDLE process; + DWORD exitState; + while(exist) + { + exist = false; + + for(unsigned int i=0; i<m_stitchFrames.GetCount(); i++) + { + try + { + process = OpenProcess(PROCESS_QUERY_INFORMATION,true,m_stitchFrames.Item(i)->GetProcessId()); + GetExitCodeProcess(process,&exitState); + } + catch(::exception e) + { + exitState=1; + } + if(exitState==STILL_ACTIVE) + exist=true; + else if(exitState!=0) + SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); + CloseHandle(process); + } + wxSleep(1); + } + #else //not __WXMSW__, on Linux we wait for each of the processes to complete + int status; + int pid; + for(unsigned int i=0; i<m_stitchFrames.GetCount(); i++) + { + pid = m_stitchFrames.Item(i)->GetProcessId(); + if(waitpid(pid,&status,0)==-1) + SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); //we set to failed if waitpid terminated with an error + if(!WIFEXITED(status) || WEXITSTATUS(status)!=0) + SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); //we set to failed if child terminated abnormally or with a bad exit code + } + #endif + + wxProcessEvent event; + for(int i=m_stitchFrames.GetCount()-1; i>=0; i--) + { + event.SetId(m_stitchFrames.Item(i)->GetProjectId()); + if(GetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()))==Project::FAILED) + event.SetTimestamp(-1); //a failed exit code cannot be set to a wxWidgets event, so we fake it inside event's timestamp + OnProcessTerminate(event); + } + return true; +} + +int Batch::ClearBatch() +{ + if(m_stitchFrames.GetCount()!=0) + { + if(gui) + { + wxMessageDialog message(this, _T("Cannot clear batch in progress.\nDo you want to cancel it?"), _T("In progress"), wxYES | wxCANCEL | wxICON_INFORMATION); + if(message.ShowModal()==wxID_YES) + { + CancelBatch(); + + //we set a flag so we don't process terminating events + m_clearedInProgress = true; + Project::idGenerator=1; + m_projList.Clear(); + if(gui) + ((wxFrame*)GetParent())->SetStatusText(_T("Cleared batch.")); + else if(verbose) + cout << "Cleared batch." << endl; + return 2; + } + } + else if(verbose) + cout << "Error: Cannot clear batch in progress." << endl; + return 1; + //TO-DO: return + /*wxMessageDialog message(this, _T("Cannot clear batch in progress.\nDo you want to cancel it?"), _T("In progress"), wxYES | wxCANCEL | wxICON_INFORMATION); + if(message.ShowModal()==wxID_YES) + { + OnButtonCancel(event); + }*/ + } + else + { + Project::idGenerator=1; + m_projList.Clear(); + if(gui) + ((wxFrame*)GetParent())->SetStatusText(_T("Cleared batch.")); + else if(verbose) + cout << "Cleared batch." << endl; + return 0; + } +} + +bool Batch::CompareProjectsInLists(int stitchListIndex, int batchListIndex) +{ + return m_stitchFrames.Item(stitchListIndex)->GetProjectId() == m_projList.Item(batchListIndex).id; +} + +int Batch::GetFirstAvailable() +{ + unsigned int i = 0; + while(i<m_projList.Count()) + { + if(m_projList.Item(i).skip || m_projList.Item(i).status!=Project::WAITING) + i++; + else + break; + } + if((m_projList.Count() == 0) || (i == m_projList.Count())) + { + //no projects are available anymore + return -1; + } + else + { + return i; + } +} + +int Batch::GetIndex(int id) +{ + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(m_projList.Item(i).id==id) + return i; + } + return -1; +} + + +Project* Batch::GetProject(int index) +{ + return (Project*)&m_projList.Item(index); +} +int Batch::GetProjectCount() +{ + return m_projList.GetCount(); +} +int Batch::GetProjectCountByPath(wxString path) +{ + int count = 0; + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(!m_projList.Item(i).skip && (path.Cmp(m_projList.Item(i).path)==0)) + count++; + } + return count; +} + + +int Batch::GetRunningCount() +{ + return m_stitchFrames.GetCount(); +} + +Project::Status Batch::GetStatus(int index) +{ + if((unsigned int)index<m_projList.GetCount()) + return m_projList.Item(index).status; + else if(gui) + wxMessageBox( _T("Error: Could not get status, project with index ")+wxString::Format(_("%d"),index)+_T(" is not in list."),_T("Error!"),wxOK | wxICON_INFORMATION ); + else if(verbose) + cout << "Error: Could not get status, project with index " << index << " is not in list." << endl; + return Project::MISSING; +} +bool Batch::IsPaused() +{ + return m_paused; +} + +void Batch::ListBatch() +{ + if(m_projList.GetCount() == 0) + cout << "Batch is empty." << endl; + else + { + cout << "List of projects in batch:" << endl << + "[ID] [project path] [output filename] [status]" << endl << + "-------------------------------------" << endl; + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + cout << m_projList.Item(i).id << " " << m_projList.Item(i).path.char_str() << " " << m_projList.Item(i).prefix.char_str() << " " << m_projList.Item(i).GetStatusText().char_str() << endl; + } + } +} + + +int Batch::LoadBatchFile(wxString file) +{ + int clearCode = ClearBatch(); + if(clearCode==0) + { + AppendBatchFile(file); + return 0; + } + else if(clearCode==2) + { + AppendBatchFile(file); + return 2; + } + else if(gui) + wxMessageBox(_T("Error: Could not load batch file.")); + else if(verbose) + cout << "Error: Could not load batch file." << endl; + return 1; +} + + +int Batch::LoadTemp() +{ + wxDir* workingDir = new wxDir(wxFileName::GetTempDir()); + wxString pending; + wxString fileTemp = _T("~ptbt*"); + wxString temp = _T(""); + //we check for existing temporary files + if(workingDir->GetFirst(&temp,fileTemp,wxDIR_FILES)) + { + //we find the last existing tempfile (there should be at most two, but we check for multiple just in case) + while(workingDir->GetNext(&pending)) + { + wxFileName tempFile(temp); + wxFileName pendingFile(pending); + wxDateTime* create1 = new wxDateTime(); + wxDateTime* create2 = new wxDateTime(); + if(tempFile.FileExists() && pendingFile.FileExists()) + { + tempFile.GetTimes(NULL,NULL,create1); + pendingFile.GetTimes(NULL,NULL,create2); + if(create2->IsLaterThan(*create1)) + { + wxRemoveFile(temp); + temp=wxString(pending); + } + } + else + { + //wxMessageBox( _T("Error reading temporary file"),_T("Error!"),wxOK | wxICON_INFORMATION ); + return 1; + } + } + } + //we load the data from the temp file + AppendBatchFile(workingDir->GetName()+wxFileName::GetPathSeparator()+temp); + if(verbose && !gui) + cout << "Loaded temp file." << endl; + return 0; +} + + +bool Batch::NoErrors() +{ + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(m_projList.Item(i).status==Project::FAILED) + { + return false; + } + } + return true; +} +void Batch::OnProcessTerminate(wxProcessEvent & event) +{ + //we find the right pointer to remove + unsigned int i = 0; + while(i < m_stitchFrames.GetCount() && + m_stitchFrames.Item(i)->GetProjectId()!=event.GetId()) + { + i++; + } + m_stitchFrames.RemoveAt(i); + if(m_clearedInProgress) + { + if(m_stitchFrames.GetCount()==0) + { + m_paused = false; + m_running = false; + m_cancelled = false; + m_clearedInProgress = false; + } + } + else + { + if(m_stitchFrames.GetCount()==0) + m_paused = false; + i = GetIndex(event.GetId()); + if (event.GetExitCode() != 0 || event.GetTimestamp()==-1) //timestamp is used as a fake exit code because it cannot be set manually + m_projList.Item(i).status=Project::FAILED; + else + m_projList.Item(i).status=Project::FINISHED; + if(!m_cancelled && !m_paused) + { + if(AllDone()) + { + m_running = false; + if(NoErrors()) + { + if(gui) + //SetStatusText(_T("Project \"")+m_projList.Item(i).path+_T("\" finished. Batch successfully completed.")); + SetStatusText(_T("Batch successfully completed.")); + else + //cout << "Project \"" << m_projList.Item(i).path.char_str() << "\" finished. Batch successfully completed." << endl; + cout << "Batch successfully completed." << endl; + } + else + { + if(gui) + //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Batch completed with errors.")); + SetStatusText(_T("Batch completed with errors.")); + else + //cout << "Project \"" << m_projList.Item(i).path.char_str() << "\" finished. Batch completed with errors." << endl; + cout << "Batch completed with errors." << endl; + } + if(shutdown) //after we are finished we turn off the computer if checked + { + if(gui) + { + wxProgressDialog progress(_("Initializing shutdown..."), _T("Shutting down..."),49,this, + wxPD_AUTO_HIDE | wxPD_SMOOTH | wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_CAN_SKIP); + progress.Fit(); + int i = 0; + bool skip = false; + while(progress.Update(i, _T("Shutting down..."),&skip)) + { + if(skip || i==50) + { + /*wxMessageDialog message(this,_T("Krneksa")); + message.ShowModal(); + break;*/ + wxShutdown(wxSHUTDOWN_POWEROFF); + } + i++; + #if defined __WXMSW__ + Sleep(200); + #else + sleep(200); + #endif + } + progress.Close(); + } + else + { + if(!wxShutdown(wxSHUTDOWN_POWEROFF)) + { + if(gui) + #ifdef __WXMSW__ + wxMessageBox(_T("Error shutting down.")); + #else + wxMessageBox(_T("Error shutting down. Do you have root privileges?")); + #endif + else + #ifdef __WXMSW__ + cout << "Error shutting down." << endl; + #else + cout << "Error shutting down. Do you have root privileges?" << endl; + #endif + } + } + } + } + else + { + if(parallel) //if we are running in parallel + { + //the last executed process in parallel runs next + if(GetRunningCount() == 0) + { + //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Running next project...")); + RunNextInBatch(); + } + else + { + //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Waiting for all in parallel to complete...")); + } + } + else + { + //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Running next project...")); + RunNextInBatch(); + } + } + } + else + { //after all processes have ended on a cancel, we reset the boolean back to false + //if(stitchFrames.GetCount()==0) + if(GetRunningCount()==0) + { + m_cancelled=false; + } + } + } +} +bool Batch::OnStitch(wxString scriptFile, wxString outname, int id) //was previously without parameter +{ + //if( parser.GetParamCount() == 0 && wxIsEmpty(scriptFile)) + //{ + if(wxIsEmpty(scriptFile)) + { + wxString defaultdir = wxConfigBase::Get()->Read(wxT("/actualPath"),wxT("")); + wxFileDialog dlg(0, + _("Specify project source project file"), + defaultdir, wxT(""), + _("Project files (*.pto,*.ptp,*.pts,*.oto)|*.pto;*.ptp;*.pts;*.oto;|All files (*)|*"), + wxOPEN, wxDefaultPosition); + + dlg.SetDirectory(wxConfigBase::Get()->Read(wxT("/actualPath"),wxT(""))); + if (dlg.ShowModal() == wxID_OK) { + wxConfig::Get()->Write(wxT("/actualPath"), dlg.GetDirectory()); // remember for later + + //scriptFile = dlg.GetPath(); + wxFileDialog dlg2(0,_("Specify output prefix"), + wxConfigBase::Get()->Read(wxT("/actualPath"),wxT("")), + wxT(""), wxT(""), + wxSAVE, wxDefaultPosition); + dlg2.SetDirectory(wxConfigBase::Get()->Read(wxT("/actualPath"),wxT(""))); + if (dlg2.ShowModal() == wxID_OK) { + //wxConfig::Get()->Write(wxT("/actualPath"), dlg2.GetDirectory()); // remember for later + outname = dlg2.GetPath(); + } else { // bail + wxLogError( _("No output prefix specified")); + return false; + } + scriptFile = dlg.GetPath(); + } else { // bail + return false; + wxLogError( _("No project files specified")); + } + } + + if(!gui) + cout << "Stitching with input file " << (const char *)scriptFile.mb_str(wxConvLocal) << "..." << endl; + + // check output filename + wxFileName outfn(outname); + wxString ext = outfn.GetExt(); + // remove extension if it indicates an image file + if (ext.CmpNoCase(wxT("jpg")) == 0 || ext.CmpNoCase(wxT("jpeg")) == 0 || + ext.CmpNoCase(wxT("tif")) == 0 || ext.CmpNoCase(wxT("tiff")) == 0 || + ext.CmpNoCase(wxT("png")) == 0 || ext.CmpNoCase(wxT("exr")) == 0 || + ext.CmpNoCase(wxT("pnm")) == 0 || ext.CmpNoCase(wxT("hdr")) == 0) + { + outfn.ClearExt(); + outname = outfn.GetFullPath(); + } + + RunStitchFrame *stitchFrame = new RunStitchFrame(this, wxT("Hugin Stitcher"), wxDefaultPosition, wxSize(640,600)); //,wxGetApp().m_projList, projListBox ); + //stitchFrame->SetEventHandler(this); + stitchFrame->SetProjectId(id); + if(verbose && gui) + { + stitchFrame->Show( true ); + wxTheApp->SetTopWindow( stitchFrame ); + } + + wxFileName basename(scriptFile); + stitchFrame->SetTitle(wxString::Format(_("%s - Stitching"), basename.GetName().c_str())); + if(overwrite) + stitchFrame->m_stitchPanel->SetOverwrite(true); + + bool n = stitchFrame->StitchProject(scriptFile, outname, progs); + m_stitchFrames.Add(stitchFrame); + if(!n) + stitchFrame->Close(); + /*if (parser.Found(wxT("d")) ) { + wxRemoveFile(scriptFile); + }*/ + return n; + +} + + + + +void Batch::PauseBatch() +{ + if(!m_paused) + { + m_paused = true; + for(int i=0; i<GetRunningCount(); i++) + { + m_stitchFrames.Item(i)->m_stitchPanel->PauseStitch(); + } + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(m_projList.Item(i).status==Project::RUNNING) + m_projList.Item(i).status=Project::PAUSED; + } + } + else + { + m_paused = false; + for(int i=0; i<GetRunningCount(); i++) + { + m_stitchFrames.Item(i)->m_stitchPanel->ContinueStitch(); + } + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(m_projList.Item(i).status==Project::PAUSED) + m_projList.Item(i).status=Project::RUNNING; + } + } +} + + +void Batch::RemoveProject(int id) +{ + int index; + if((index=GetIndex(id)) != -1) + { + RemoveProjectAtIndex(GetIndex(id)); + } + else if(gui) + wx... [truncated message content] |
From: <yu...@us...> - 2008-10-08 22:44:13
|
Revision: 3486 http://hugin.svn.sourceforge.net/hugin/?rev=3486&view=rev Author: yuv Date: 2008-10-08 22:44:10 +0000 (Wed, 08 Oct 2008) Log Message: ----------- - updated fast preview to include GLEW library statically - notched CMakeLists.txt to build against wxWidgets 2.8.9 Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/src/hugin1/hugin/GLViewer.cpp hugin/trunk/src/hugin1/hugin/PreviewDifferenceTool.cpp hugin/trunk/src/hugin1/hugin/TextureManager.cpp hugin/trunk/src/hugin_config_msvc.h Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2008-10-08 21:02:42 UTC (rev 3485) +++ hugin/trunk/CMakeLists.txt 2008-10-08 22:44:10 UTC (rev 3486) @@ -84,7 +84,12 @@ # search boost there SET(BOOST_DIR_SEARCH_USER ${SOURCE_BASE_DIR}) - SET(wxWidgets_ROOT_DIR ${SOURCE_BASE_DIR}/wxMSW-2.8.7) + # wxWidgets + SET(wxWidgets_ROOT_DIR ${SOURCE_BASE_DIR}/wxMSW-2.8.9) + # GLEW + SET(GLEW_INCLUDE_DIR ${SOURCE_BASE_DIR}/glew/include) + # for dynamic build, it's glew32.lib and the dll must be copied into hugin's bin folder + SET(GLEW_LIBRARIES ${SOURCE_BASE_DIR}/glew/lib/glew32s.lib) ENDIF(WIN32) ## Modified: hugin/trunk/src/hugin1/hugin/GLViewer.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/GLViewer.cpp 2008-10-08 21:02:42 UTC (rev 3485) +++ hugin/trunk/src/hugin1/hugin/GLViewer.cpp 2008-10-08 22:44:10 UTC (rev 3486) @@ -21,6 +21,7 @@ #include "panoinc.h" #include <config.h> +#define GLEW_STATIC #include <GL/glew.h> #include <base_wx/platform.h> #include <wx/settings.h> Modified: hugin/trunk/src/hugin1/hugin/PreviewDifferenceTool.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/PreviewDifferenceTool.cpp 2008-10-08 21:02:42 UTC (rev 3485) +++ hugin/trunk/src/hugin1/hugin/PreviewDifferenceTool.cpp 2008-10-08 22:44:10 UTC (rev 3486) @@ -20,6 +20,8 @@ */ #include "PreviewDifferenceTool.h" +#include <config.h> +#define GLEW_STATIC #include <GL/glew.h> #include <wx/platform.h> #ifdef __WXMAC__ Modified: hugin/trunk/src/hugin1/hugin/TextureManager.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/TextureManager.cpp 2008-10-08 21:02:42 UTC (rev 3485) +++ hugin/trunk/src/hugin1/hugin/TextureManager.cpp 2008-10-08 22:44:10 UTC (rev 3486) @@ -35,6 +35,7 @@ // The OpenGL Extension wrangler libray will find extensions and the latest // supported OpenGL version on all platforms. +#define GLEW_STATIC #include <GL/glew.h> #include <wx/platform.h> Modified: hugin/trunk/src/hugin_config_msvc.h =================================================================== --- hugin/trunk/src/hugin_config_msvc.h 2008-10-08 21:02:42 UTC (rev 3485) +++ hugin/trunk/src/hugin_config_msvc.h 2008-10-08 22:44:10 UTC (rev 3486) @@ -98,3 +98,6 @@ /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 + +// build against static glew libraries, which is good for Windows +#define GLEW_STATIC \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bl...@us...> - 2008-10-10 09:56:31
|
Revision: 3491 http://hugin.svn.sourceforge.net/hugin/?rev=3491&view=rev Author: blimbo Date: 2008-10-10 09:53:47 +0000 (Fri, 10 Oct 2008) Log Message: ----------- Integration of sky identification code Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/src/CMakeLists.txt hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp hugin/trunk/src/hugin1/hugin/CMakeLists.txt hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp hugin/trunk/src/hugin1/hugin/CPEditorPanel.h hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp hugin/trunk/src/hugin1/hugin/config_defaults.h hugin/trunk/src/hugin1/hugin/xrc/cp_editor_panel.xrc hugin/trunk/src/hugin1/hugin/xrc/pref_dialog.xrc Added Paths: ----------- hugin/trunk/src/celeste/ hugin/trunk/src/celeste/CMakeLists.txt hugin/trunk/src/celeste/Celeste.cpp hugin/trunk/src/celeste/Celeste.h hugin/trunk/src/celeste/CelesteGlobals.cpp hugin/trunk/src/celeste/CelesteGlobals.h hugin/trunk/src/celeste/Config.h hugin/trunk/src/celeste/Config.h.linux hugin/trunk/src/celeste/Config.h.win32 hugin/trunk/src/celeste/ContrastFilter.cpp hugin/trunk/src/celeste/ContrastFilter.h hugin/trunk/src/celeste/Gabor.cpp hugin/trunk/src/celeste/Gabor.h hugin/trunk/src/celeste/GaborFilter.cpp hugin/trunk/src/celeste/GaborFilter.h hugin/trunk/src/celeste/GaborGlobal.h hugin/trunk/src/celeste/GaborJet.cpp hugin/trunk/src/celeste/GaborJet.h hugin/trunk/src/celeste/ImageFile.cpp hugin/trunk/src/celeste/ImageFile.h hugin/trunk/src/celeste/LogPolar.cpp hugin/trunk/src/celeste/LogPolar.h hugin/trunk/src/celeste/Main.cpp hugin/trunk/src/celeste/PGMImage.cpp hugin/trunk/src/celeste/PGMImage.h hugin/trunk/src/celeste/Utilities.cpp hugin/trunk/src/celeste/Utilities.h hugin/trunk/src/celeste/data/ hugin/trunk/src/celeste/data/celeste.model hugin/trunk/src/celeste/svm.cpp hugin/trunk/src/celeste/svm.h hugin/trunk/src/celeste/training/ hugin/trunk/src/celeste/training/README hugin/trunk/src/celeste/training/create_svm_data_10_fold.pl hugin/trunk/src/celeste/training/parse_results.pl Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2008-10-09 21:33:26 UTC (rev 3490) +++ hugin/trunk/CMakeLists.txt 2008-10-10 09:53:47 UTC (rev 3491) @@ -57,8 +57,8 @@ include_directories( ${CMAKE_SOURCE_DIR}/src/hugin_base ) include_directories( ${CMAKE_SOURCE_DIR}/src/foreign ) include_directories( ${CMAKE_SOURCE_DIR}/src/foreign/vigra ) +include_directories( ${CMAKE_SOURCE_DIR}/src/celeste ) - # # find dependencies # Modified: hugin/trunk/src/CMakeLists.txt =================================================================== --- hugin/trunk/src/CMakeLists.txt 2008-10-09 21:33:26 UTC (rev 3490) +++ hugin/trunk/src/CMakeLists.txt 2008-10-10 09:53:47 UTC (rev 3491) @@ -15,6 +15,7 @@ set(image_libs huginvigraimpex ${OPENEXR_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${EXIV2_LIBRARIES}) +add_subdirectory(celeste) add_subdirectory(foreign) add_subdirectory(hugin_base) add_subdirectory(tools) Added: hugin/trunk/src/celeste/CMakeLists.txt =================================================================== --- hugin/trunk/src/celeste/CMakeLists.txt (rev 0) +++ hugin/trunk/src/celeste/CMakeLists.txt 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,66 @@ +# Windows needs an #include "direct.h +# Linux and Apple are both OK without +# Set this up here +IF(WIN32) + ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Config.h + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Config.h.win32 ${CMAKE_CURRENT_SOURCE_DIR}/Config.h + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Config.h.win32 + ) +ELSE (WIN32) + ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Config.h + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Config.h.linux ${CMAKE_CURRENT_SOURCE_DIR}/Config.h + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/Config.h.linux + ) +ENDIF(WIN32) + +# a list of all files belonging to celeste library + +SET(CELESTE_SRC +CelesteGlobals.cpp +CelesteGlobals.h +Celeste.cpp +Celeste.h +Config.h +ContrastFilter.cpp +ContrastFilter.h +Gabor.cpp +Gabor.h +GaborGlobal.h +GaborFilter.cpp +GaborFilter.h +GaborJet.cpp +GaborJet.h +ImageFile.cpp +ImageFile.h +LogPolar.cpp +LogPolar.h +PGMImage.cpp +PGMImage.h +svm.cpp +svm.h +Utilities.cpp +Utilities.h +) + +IF (${HUGIN_SHARED_LIBS}) + ADD_LIBRARY(celeste SHARED ${CELESTE_SRC}) + set_target_properties(celeste PROPERTIES VERSION ${HUGIN_LIB_VERSION}) + install(TARGETS celeste DESTINATION ${LIBDIR}) +ELSE (${HUGIN_SHARED_LIBS}) + ADD_LIBRARY(celeste STATIC ${CELESTE_SRC}) +ENDIF (${HUGIN_SHARED_LIBS}) + +# standalone +ADD_EXECUTABLE(celeste_standalone ../hugin_config.h Main.cpp ) +target_link_libraries( celeste_standalone celeste ${image_libs} ) + +SET (CELESTE_MODEL + data/celeste.model +) + +INSTALL(TARGETS celeste_standalone DESTINATION ${BINDIR}) +INSTALL(FILES ${CELESTE_MODEL} DESTINATION ${HUGINDATADIR}/xrc/data) + +add_subdirectory(training) Added: hugin/trunk/src/celeste/Celeste.cpp =================================================================== --- hugin/trunk/src/celeste/Celeste.cpp (rev 0) +++ hugin/trunk/src/celeste/Celeste.cpp 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,543 @@ +/*************************************************************************** + * Copyright (C) 2008 by Tim Nugent * + * tim...@gm... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include <iostream> +#include "vigra/stdimage.hxx" +#include "vigra/resizeimage.hxx" +#include "vigra/impex.hxx" +#include "vigra/colorconversions.hxx" +#include <sys/types.h> +#include <sys/stat.h> +#include <stdlib.h> +#include <string> +#include <vector> +#include "Gabor.h" +#include "Utilities.h" +#include "CelesteGlobals.h" +#include "svm.h" + +using namespace vigra; +using namespace std; + +typedef vigra::BRGBImage::PixelType RGB; + +void get_gabor_response(string& imagefile, unsigned int& mask, string& model_file, double& threshold,string& +mask_format,vector<double>& svm_responses){ + + // Open SVM model file + struct svm_model* model; + + if((model = svm_load_model(model_file.c_str())) == 0){ + cout << "Couldn't load model file '" << model_file << "'" << endl << endl; + for (int j = 0; j < gNumLocs; j++){ + svm_responses.push_back(0); + } + return; + }else{ + //cout << "Loaded model file " << model_file << endl; + } + + // Integers and containers for libsvm + int svm_type=svm_get_svm_type(model); + int nr_class=svm_get_nr_class(model); + int max_nr_attr = 56; + struct svm_node *gabor_responses = (struct svm_node *) malloc(max_nr_attr*sizeof(struct svm_node)); + double *prob_estimates = (double *) malloc(nr_class*sizeof(double)); + + // Open image using Vigra + try{ + + cout << "Generating feature vector by Gabor filtering..." << endl; + cout << "Opening image file:\t" << imagefile << endl; + + // Read image given as first argument + // File type is determined automatically + vigra::ImageImportInfo info(imagefile.c_str()); + + // Create RGB images of appropriate size + vigra::FRGBImage in(info.width(), info.height()); + + // Import the image + importImage(info, destImage(in)); + + // Max dimension + double sizefactor = 1; + int nw = info.width(), nh = info.height(); + + // In case we want to save filters + // Create this directory and change option in Globals.cpp + char basename[] = "gabor_filters/celeste"; + + if (info.width() >= info.height()){ + if (resize_dimension >= info.width() ){ + resize_dimension = info.width(); + } + }else{ + if (resize_dimension >= info.height()){ + resize_dimension = info.height(); + } + } + //cout << "Re-size dimenstion:\t" << resize_dimension << endl; + + cout << "Image dimensions:\t" << info.width() << " x " << info.height() << endl; + + // Re-size to max dimension + if (info.width() > resize_dimension || info.height() > resize_dimension){ + + if (info.width() >= info.height()){ + + + sizefactor = (double)resize_dimension/info.width(); + + // calculate new image size + nw = resize_dimension; + nh = static_cast<int>(0.5 + (sizefactor*info.height())); + + }else{ + sizefactor = (double)resize_dimension/info.height(); + + + // calculate new image size + nw = static_cast<int>(0.5 + (sizefactor*info.width())); + nh = resize_dimension; + + } + + cout << "Scaling by:\t\t" << sizefactor << endl; + cout << "New dimensions:\t\t" << nw << " x " << nh << endl; + + // create a RGB image of appropriate size + vigra::FRGBImage out(nw, nh); + + // resize the image, using a bi-cubic spline algorithm + resizeImageNoInterpolation(srcImageRange(in),destImageRange(out)); + + in = out; + + } + + // Convert to LUV colour space + FRGBImage luv(in.width(),in.height()); + transformImage(srcImageRange(in), destImage(luv), RGBPrime2LuvFunctor<double>() ); + + // Prepare Gabor API array + float *frameBuf = new float[in.width()*in.height()]; + float *u_values = new float[in.width()*in.height()]; + float *v_values = new float[in.width()*in.height()]; + float** pixels = CreateMatrix( (float)0, in.height(), in.width() ); + + // Do something with each pixel... + unsigned int counter = 0; + vigra::FRGBImage::iterator img_iter(luv.begin()),end(luv.end()); + for(; img_iter != end; ++img_iter) { + + // [0] is L, [1] is U, [2] is V + // We only want L for Gabor filtering + frameBuf[counter] = (*img_iter)[0]; + + u_values[counter] = (*img_iter)[1]; + v_values[counter] = (*img_iter)[2]; + + //cout << "Pixel " << counter << " - L: " << (*img_iter)[0] << endl; + //cout << "Pixel " << counter << " - U: " << (*img_iter)[1] << endl; + //cout << "Pixel " << counter << " - V: " << (*img_iter)[2] << endl; + counter++; + } + + // Prepare framebuf for Gabor API + unsigned int k = 0; + for (int i = 0; i < in.height(); i++ ){ + for (int j = 0; j < in.width(); j++ ){ + pixels[i][j] = frameBuf[k]; + //cout << i << " " << j << " = " << k << " - " << frameBuf[k] << endl; + k++; + } + } + + if (gNumLocs){ + + float *response = NULL; + int len = 0; + + // Scale control points by sizefactor + for (int j = 0; j < gNumLocs; j++){ + + //cout << sizefactor << ": " << gLocations[j][0] << "," << gLocations[j][1] << " ---> "; + gLocations[j][0] = int(gLocations[j][0] * sizefactor); + gLocations[j][1] = int(gLocations[j][1] * sizefactor); + //cout << gLocations[j][0] << "," << gLocations[j][1] << endl; + + // Move CPs to border if the filter radius is out of bounds + if (gLocations[j][0] <= gRadius){ + //cout << "Moving CP to border" << endl; + gLocations[j][0] = gRadius + 1; + } + if (gLocations[j][1] <= gRadius){ + //cout << "Moving CP to border" << endl; + gLocations[j][1] = gRadius + 1; + } + if (gLocations[j][0] >= nw - gRadius){ + //cout << "Moving CP to border" << endl; + gLocations[j][0] = nw - gRadius - 1; + } + if (gLocations[j][1] >= nh - gRadius){ + //cout << "Moving CP to border" << endl; + gLocations[j][1] = nh - gRadius - 1; + } + } + + // Do Gabor filtering + response = ProcessChannel( pixels, in.height(), in.width(), response, &len, basename ); + + // Turn the response into SVM vector, and add colour features + int vector_length = (int)len/gNumLocs; + + for (int j = 0; j < gNumLocs; j++){ + + int pixel_number = gLocations[j][0] + (in.width() * (gLocations[j][1] - 1)) - 1; + unsigned int feature = 1; + double score = 0; + + //cout << "0 "; + for ( int v = (j * vector_length); v < ((j + 1) * vector_length); v++){ + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = response[v]; + //cout << feature << ":" << response[v] << " "; + feature++; + } + + // Work out average colour - U + V channels + float u_sum = 0, v_sum = 0; + unsigned int pixels_in_region = (gRadius * 2)*(gRadius * 2); + + for (int t = 1 - gRadius; t <= gRadius; t++){ + + unsigned int this_y_pixel = pixel_number + (t * in.width()); + + for (int r = 1 - gRadius; r <= gRadius; r++){ + + unsigned int this_x_pixel = this_y_pixel + r; + u_sum += u_values[this_x_pixel]; + v_sum += v_values[this_x_pixel]; + } + } + + + float u_ave = (float)u_sum/pixels_in_region; + float v_ave = (float)v_sum/pixels_in_region; + + // Now work out standard deviation for U and V channels + u_sum = 0, v_sum = 0; + + for (int t = 1 - gRadius; t <= gRadius; t++){ + + unsigned int this_y_pixel = pixel_number + (t * in.width()); + + for (int r = 1 - gRadius; r <= gRadius; r++){ + + unsigned int this_x_pixel = this_y_pixel + r; + + u_sum += pow(u_values[this_x_pixel]-u_ave,2); + v_sum += pow(v_values[this_x_pixel]-v_ave,2); + + } + } + + + float std_u = sqrt(u_sum/(pixels_in_region-1)); + float std_v = sqrt(v_sum/(pixels_in_region-1)); + + // Add these colour features to feature vector + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = u_ave; + //cout << feature << ":" << u_ave << " "; + feature++; + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = std_u; + //cout << feature << ":" << std_u << " "; + feature++; + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = v_ave; + //cout << feature << ":" << v_ave << " "; + feature++; + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = std_v; + //cout << feature << ":" << std_v << " "; + feature++; + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = u_values[pixel_number]; + //cout << feature << ":" << u_values[pixel_number] << " "; + feature++; + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = v_values[pixel_number]; + //cout << feature << ":" << v_values[pixel_number] << " " << endl; + gabor_responses[feature].index = -1; + + score = svm_predict_probability(model,gabor_responses,prob_estimates); + //cout << score << " " << prob_estimates[0] << endl; + + svm_responses.push_back(prob_estimates[0]); + + } + + delete[] response; + } + + // Create mask + if (mask){ + + // Create mask file name + string mask_name = (""); + if (imagefile.substr(imagefile.length()-4,1) == (".")){ + + mask_name.append(imagefile.substr(0,imagefile.length()-4)); + + }else{ + + mask_name.append(imagefile.substr(0,imagefile.length()-4)); + } + mask_name.append("_mask."); + mask_name.append(mask_format); + + cout << "Generating mask:\t" << mask_name << endl; + // Create mask of same dimensions + vigra::BRGBImage mask_out(nw, nh); + + // Set mask to white + vigra::initImage(srcIterRange(mask_out.upperLeft(), + mask_out.upperLeft() + vigra::Diff2D(nw,nh)), + RGB(255,255,255) ); + + float *mask_response = NULL; + gLocations = NULL; + gNumLocs = 0; + + // Create grid of fiducial points + for (int i = gRadius; i < in.height() - gRadius; i += spacing ){ + for (int j = gRadius; j < in.width() - gRadius; j += spacing ){ + gNumLocs++; + } + // Add extra FP at the end of each row in case nw % gRadius + gNumLocs++; + } + + // Add extra FP at the end of each row in case nh % gRadius + for (int j = gRadius; j < in.width() - gRadius; j += spacing ){ + gNumLocs++; + } + + // Create the storage matrix + gLocations = CreateMatrix( (int)0, gNumLocs, 2); + gNumLocs = 0; + for (int i = gRadius; i < in.height() - gRadius; i += spacing ){ + for (int j = gRadius; j < in.width() - gRadius; j += spacing ){ + + gLocations[gNumLocs][0] = j; + gLocations[gNumLocs][1] = i; + //cout << "fPoint " << gNumLocs << ":\t" << i << " " << j << endl; + gNumLocs++; + } + + // Add extra FP at the end of each row in case nw % spacing + if (nw % spacing){ + + gLocations[gNumLocs][0] = nw - gRadius - 1; + gLocations[gNumLocs][1] = i; + //cout << "efPoint " << gNumLocs << ":\t" << i << " " << nw - gRadius - 1 << endl; + gNumLocs++; + } + + } + + // Add extra FP at the end of each row in case nh % spacing + if (nh % spacing){ + + for (int j = gRadius; j < in.width() - gRadius; j += spacing ){ + + gLocations[gNumLocs][0] = j; + gLocations[gNumLocs][1] = nh - gRadius - 1; + //cout << "efPoint " << gNumLocs << ":\t" << nh - gRadius - 1 << " " << j << endl; + gNumLocs++; + + } + } + + //cout << "Total FPs:\t" << gNumLocs << endl; + + int len = 0; + //cout << "Pre-response " << in.height() << ","<< in.width() << endl; + mask_response = ProcessChannel( pixels, in.height(), in.width(), mask_response, &len, basename ); + //cout << "Post-response" << endl; + + // Turn the response into SVM vector, and add colour features + + int vector_length = (int)len/gNumLocs; + + for ( int j = 0; j < gNumLocs; j++ ){ + + //cout << j << ":"<<endl; + + unsigned int pixel_number = gLocations[j][0] + (in.width() * (gLocations[j][1] - 1)) - 1; + unsigned int feature = 1; + double score = 0; + + // need one more for index = -1 + if(j >= max_nr_attr - 1){ + max_nr_attr *= 2; + gabor_responses = (struct svm_node *) realloc(gabor_responses,max_nr_attr*sizeof(struct svm_node)); + } + + + for ( int v = (j * vector_length); v < ((j + 1) * vector_length); v++){ + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = mask_response[v]; + //cout << feature << ":" << mask_response[v] << " "; + feature++; + } + + // Work out average colour - U + V channels + float u_sum = 0, v_sum = 0; + int pixels_in_region = (gRadius * 2)*(gRadius * 2); + + for (int t = 1 - gRadius; t <= gRadius; t++){ + + unsigned int this_y_pixel = pixel_number + (t * in.width()); + + for (int r = 1 - gRadius; r <= gRadius; r++){ + + unsigned int this_x_pixel = this_y_pixel + r; + + u_sum += u_values[this_x_pixel]; + v_sum += v_values[this_x_pixel]; + + } + } + + float u_ave = (float)u_sum/pixels_in_region; + float v_ave = (float)v_sum/pixels_in_region; + + // Now work out standard deviation for U and V channels + u_sum = 0, v_sum = 0; + + for (int t = 1 - gRadius; t <= gRadius; t++){ + + unsigned int this_y_pixel = pixel_number + (t * in.width()); + + for (int r = 1 - gRadius; r <= gRadius; r++){ + + unsigned int this_x_pixel = this_y_pixel + r; + + u_sum += pow(u_values[this_x_pixel]-u_ave,2); + v_sum += pow(v_values[this_x_pixel]-v_ave,2); + + } + } + + float std_u = sqrt(u_sum/(pixels_in_region-1)); + float std_v = sqrt(v_sum/(pixels_in_region-1)); + + // Add these colour features to feature vector + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = u_ave; + //cout << feature << ":" << u_ave << " "; + feature++; + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = std_u; + //cout << feature << ":" << std_u << " "; + feature++; + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = v_ave; + //cout << feature << ":" << v_ave << " "; + feature++; + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = std_v; + //cout << feature << ":" << std_v << " "; + feature++; + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = u_values[pixel_number]; + //cout << feature << ":" << u_values[pixel_number] << " "; + feature++; + gabor_responses[feature-1].index = feature; + gabor_responses[feature-1].value = v_values[pixel_number]; + //cout << feature << ":" << v_values[pixel_number] << " " << endl; + gabor_responses[feature].index = -1; + + score = svm_predict_probability(model,gabor_responses,prob_estimates); + //cout << score << " " << prob_estimates[0] << endl; + + if (prob_estimates[0] >= threshold){ + + //cout << "Cloud\t\t(score " << m.classify(feature_vector.c_str()) << " > " << threshold << ")" << endl; + + unsigned int sub_x0 = gLocations[j][0] - gRadius; + unsigned int sub_y0 = gLocations[j][1] - gRadius; + unsigned int sub_x1 = gLocations[j][0] + gRadius + 1; + unsigned int sub_y1 = gLocations[j][1] + gRadius + 1; + + //cout << sub_x0 << ","<< sub_y0 << " - " << sub_x1 << "," << sub_y1 << endl; + + // Set region to black + vigra::initImage(srcIterRange(mask_out.upperLeft() + vigra::Diff2D(sub_x0, sub_y0), + mask_out.upperLeft() + vigra::Diff2D(sub_x1, sub_y1)), + RGB(0,0,0) ); + + }else{ + //cout << "Non-cloud\t(score " << m.classify(feature_vector.c_str()) << " <= " << threshold << ")" << endl; + + } + //cout << feature_vector << endl; + + } + + delete [] mask_response; + + // Re-size mask to match original image + vigra::BRGBImage mask_resize(info.width(),info.height()); + resizeImageNoInterpolation(srcImageRange(mask_out),destImageRange(mask_resize)); + exportImage(srcImageRange(mask_resize), ImageExportInfo(mask_name.c_str()).setPixelType("UINT8")); + + } + + DisposeMatrix( pixels, in.height() ); + delete[] frameBuf; + delete[] u_values; + delete[] v_values; + gNumLocs = 0; + cout << endl; + + }catch (vigra::StdException & e){ + + // catch any errors that might have occured and print their reason + cout << "Unable to open file:\t" << imagefile << endl << endl; + cout << e.what() << endl << endl; + for (int j = 0; j < gNumLocs; j++){ + svm_responses.push_back(0); + } + return; + + } + + // Free up libsvm stuff + free(gabor_responses); + free(prob_estimates); + svm_destroy_model(model); + +} + Added: hugin/trunk/src/celeste/Celeste.h =================================================================== --- hugin/trunk/src/celeste/Celeste.h (rev 0) +++ hugin/trunk/src/celeste/Celeste.h 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,13 @@ +#ifndef __CELESTE__ +#define __CELESTE__ + +#include "svm.h" +#include <string> +#include <vector> + +using namespace std; + +void get_gabor_response(string&,unsigned int&,string&,double&,string&,vector<double>&); + +#endif + Added: hugin/trunk/src/celeste/CelesteGlobals.cpp =================================================================== --- hugin/trunk/src/celeste/CelesteGlobals.cpp (rev 0) +++ hugin/trunk/src/celeste/CelesteGlobals.cpp 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,38 @@ +#include "CelesteGlobals.h" +#include <stdlib.h> + +// GLOBAL GLOBALS + +bool kSaveFilter = true; // in case of multiple files, we save GFs only once +bool kVerbosity = false; // whether to output any messages or not + +// LOCAL GLOBALS + +// -r : Radius of filter +int gRadius = 20; + +// -s : Sigma modulator +float gS = 18.0; + +// -a : Number of angles +int gA = 8; + +// -f : Number of frequencies +int gF = 6; + +// -l : Lower bound of frequency +float gL = 0.1; + +// -u : Upper bound of frequency +float gU = 1.8; + +// Number of fiducials +int gNumLocs = 0; + +// Co-ordinates of fiducials +int **gLocations = NULL; + +// Spacing between fiducial points +int spacing = (gRadius * 2) + 1; + +int resize_dimension = 820; Added: hugin/trunk/src/celeste/CelesteGlobals.h =================================================================== --- hugin/trunk/src/celeste/CelesteGlobals.h (rev 0) +++ hugin/trunk/src/celeste/CelesteGlobals.h 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,18 @@ +#ifndef GLOBALS_H +#define GLOBALS_H + +extern bool kSaveFilter; +extern bool kVerbosity; +extern int gRadius; +extern float gS; +extern int gA; +extern int gF; +extern float gL; +extern float gU; +extern int gNumLocs; +extern int **gLocations; +extern int spacing; +extern int resize_dimension; + +#endif + Added: hugin/trunk/src/celeste/Config.h =================================================================== --- hugin/trunk/src/celeste/Config.h (rev 0) +++ hugin/trunk/src/celeste/Config.h 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,4 @@ +#ifndef __CELESTE_CONFIG__ +#define __CELESTE_CONFIG__ + +#endif Added: hugin/trunk/src/celeste/Config.h.linux =================================================================== --- hugin/trunk/src/celeste/Config.h.linux (rev 0) +++ hugin/trunk/src/celeste/Config.h.linux 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,4 @@ +#ifndef __CELESTE_CONFIG__ +#define __CELESTE_CONFIG__ + +#endif Added: hugin/trunk/src/celeste/Config.h.win32 =================================================================== --- hugin/trunk/src/celeste/Config.h.win32 (rev 0) +++ hugin/trunk/src/celeste/Config.h.win32 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,6 @@ +#ifndef __CELESTE_CONFIG__ +#define __CELESTE_CONFIG__ + +#include "direct.h" + +#endif Added: hugin/trunk/src/celeste/ContrastFilter.cpp =================================================================== --- hugin/trunk/src/celeste/ContrastFilter.cpp (rev 0) +++ hugin/trunk/src/celeste/ContrastFilter.cpp 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,177 @@ +/* + Description: Abstract class for contrast filter + Original Author: Yasunobu Honma + Modifications by: Adriaan Tijsseling (AGT) +*/ + +#include "ContrastFilter.h" + +float CONTRAST[9][9] = { + { + -0.00601522, + -0.00815698, + -0.00576532, + -0.000761649, + 0.00105624, + -0.000761649, + -0.00576532, + -0.00815698, + -0.00601522 + }, + + { + -0.00815698, + -0.00235211, + 0.00300229, + -0.0157626, + -0.0304662, + -0.0157626, + 0.00300229, + -0.00235211, + -0.00815698 + }, + + { + -0.00576532, + 0.00300229, + -0.0505102, + -0.115416, + -0.115769, + -0.115416, + -0.0505102, + 0.00300229, + -0.00576532 + }, + + { + -0.000761649, + -0.0157626, + -0.115416, + 0.0361012, + 0.273771, + 0.0361012, + -0.115416, + -0.0157626, + -0.000761649 + }, + + { + 0.00105624, + -0.0304662, + -0.115769, + 0.273771, + 0.719623, + 0.273771, + -0.115769, + -0.0304662, + 0.00105624 + }, + + { + -0.000761649, + -0.0157626, + -0.115416, + 0.0361012, + 0.273771, + 0.0361012, + -0.115416, + -0.0157626, + -0.000761649 + }, + + { + -0.00576532, + 0.00300229, + -0.0505102, + -0.115416, + -0.115769, + -0.115416, + -0.0505102, + 0.00300229, + -0.00576532 + }, + + { + -0.00815698, + -0.00235211, + 0.00300229, + -0.0157626, + -0.0304662, + -0.0157626, + 0.00300229, + -0.00235211, + -0.00815698 + }, + + { + -0.00601522, + -0.00815698, + -0.00576532, + -0.000761649, + 0.00105624, + -0.000761649, + -0.00576532, + -0.00815698, + -0.00601522 + }}; + +// construct class and apply filter +ContrastFilter::ContrastFilter( float **img, int height, int width ) +{ + mHeight = height-8; + mWidth = width-8; + + mContrast = new float*[mHeight]; + for ( int i = 0; i < mHeight; i++ ) + { + mContrast[i] = new float[mWidth]; + for ( int j = 0; j < mWidth; j++ ) + mContrast[i][j] = 0.0; + } + + ApplyFilter( img, height, width ); +} + + +// free memory +ContrastFilter::~ContrastFilter() +{ + if( mContrast != NULL ) + { + for( int y = 0; y < mHeight; y++ ) + delete[] mContrast[y]; + delete[] mContrast; + } +} + + +// apply filter to image +void ContrastFilter::ApplyFilter( float** img, int height, int width ) +{ + int x, y, i, j;//, k, l; + float tmp; + + for( i = 0; i < height-8; i++ ) + for( j = 0; j < width-8; j++ ) + { + tmp = 0.0; + for( x = 0; x < 9; x++ ) + for( y = 0; y < 9; y++) + tmp += CONTRAST[x][y] * img[i+x][j+y]; + mContrast[i][j] = tmp; + } +} + + +// write out contrast data to pgm file +void ContrastFilter::Save( void ) +{ + PGMImage pgmI; + char tmpName[256]; + + strcpy( tmpName, mFile ); + strcat( tmpName, "-contrast.pgm" ); + pgmI.WriteScaled( tmpName, mContrast, mHeight, mWidth ); +} + + Added: hugin/trunk/src/celeste/ContrastFilter.h =================================================================== --- hugin/trunk/src/celeste/ContrastFilter.h (rev 0) +++ hugin/trunk/src/celeste/ContrastFilter.h 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,36 @@ +/* + Description: Abstract class for contrast filter + Original Author: Yasunobu Honma + Modifications by: Adriaan Tijsseling (AGT) +*/ + +#ifndef __CONTRAST_FILTER_CLASS__ +#define __CONTRAST_FILTER_CLASS__ + +#include "PGMImage.h" + +class ContrastFilter +{ +public: + + ContrastFilter(){ mContrast = NULL; } + ContrastFilter( float**, int, int ); + ~ContrastFilter(); + + void ApplyFilter( float** img, int height, int width ); + void Save( void ); + + inline void SetFileName( char* file ) { strcpy( mFile, file ); } + inline float** GetContrast( void ) { return mContrast; } + inline int GetWidth() { return mWidth; } + inline int GetHeight(){ return mHeight; } + +protected: + + float **mContrast; // applied contrast + char mFile[256]; // file name + int mHeight; // height of filter + int mWidth; // width of filter +}; + +#endif Added: hugin/trunk/src/celeste/Gabor.cpp =================================================================== --- hugin/trunk/src/celeste/Gabor.cpp (rev 0) +++ hugin/trunk/src/celeste/Gabor.cpp 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,130 @@ +/*************************************************************************** + * Copyright (C) 2008 by Tim Nugent * + * tim...@gm... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include <iostream> +#include <sys/types.h> +#include <sys/stat.h> +#include <stdlib.h> +#include "GaborGlobal.h" +#include "GaborJet.h" +#include "ContrastFilter.h" +#include "PGMImage.h" +#include "Utilities.h" +#include "CelesteGlobals.h" +#define kUseContrast 1 + +using namespace std; + +float* ProcessChannel( float** image, int h, int w, float* response, int* len, char* file ){ + + ContrastFilter* contrastFilter = NULL; + GaborJet* gaborJet = NULL; + int height = h; + int width = w; + float** pixels; + int gflen, dummy; + int i, j, offset = 0; + char filename[256], suffix[5]; + + // copy pointer + pixels = image; + +#if kUseContrast + + // apply contrast filter to image + contrastFilter = new ContrastFilter( image, height, width ); + // set filename if intermediate files should be saved + if ( kSaveFilter == 1 ) { + contrastFilter->SetFileName( file ); + contrastFilter->Save(); // save contrast image + } + pixels = contrastFilter->GetContrast(); // get contrast map + width = contrastFilter->GetWidth(); // obtain contrast dimensions + height = contrastFilter->GetHeight(); +#endif + +// initialize gabor jet for the first fiducial point + gaborJet = new GaborJet; + if ( kSaveFilter == 1 ) + { + strcpy( filename, file ); + sprintf( suffix, "%d-", 0 ); + strcat( filename, suffix ); + gaborJet->SetFileName( filename ); + } + gaborJet->Initialize( height, width, gLocations[0][0], gLocations[0][1], + gRadius, gS, gF, gU, gL, gA, kSaveFilter ); + +// filter image + // response vector is initialized here, but needs to be disposed by user + + gaborJet->Filter( pixels, &gflen ); + + if ( *len == 0 ) + { + *len = gflen * gNumLocs; + response = new float[(*len)]; // numLocs locations + + } + + //cout << "off " << offset << " gflen " << gflen << " len " << *len << endl; + + for ( i = 0; i < *len; i++ ){ + + + response[i+offset] = gaborJet->GetResponse(i); + //cout << i << " / " << gaborJet->GetResponse(i) << endl; + } + + delete gaborJet; + +// we already save the filters for the first fiducial, so turn it off for the others + kSaveFilter = 0; + + +// process the rest of the fiducial points + for ( i = 1; i < gNumLocs; i++ ) + { + offset = offset + gflen; + + gaborJet = new GaborJet; + if ( kSaveFilter == 1 ) + { + strcpy( filename, file ); + sprintf( suffix, "%d-", i ); + strcat( filename, suffix ); + gaborJet->SetFileName( filename ); + } + gaborJet->Initialize( height, width, gLocations[i][0], gLocations[i][1], + gRadius, gS, gF, gU, gL, gA ); + + // filter image + // response vector is initialized here, but needs to be disposed by user + gaborJet->Filter( pixels, &dummy ); + for ( j = 0; j < gflen; j++ ) response[j+offset] = gaborJet->GetResponse(j); + delete gaborJet; + } + +#if kUseContrast + delete contrastFilter; +#endif + + return response; +} Added: hugin/trunk/src/celeste/Gabor.h =================================================================== --- hugin/trunk/src/celeste/Gabor.h (rev 0) +++ hugin/trunk/src/celeste/Gabor.h 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,7 @@ +#ifndef __GABOR__ +#define __GABOR__ + +float* ProcessChannel( float**, int, int, float*, int*, char*); + +#endif + Added: hugin/trunk/src/celeste/GaborFilter.cpp =================================================================== --- hugin/trunk/src/celeste/GaborFilter.cpp (rev 0) +++ hugin/trunk/src/celeste/GaborFilter.cpp 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,102 @@ +/* +Description: Implementation for GaborFilter class +Author: Adriaan Tijsseling (AGT) +Copyright: (c) Copyright 2002 Adriaan Tijsseling. All rights reserved. +Change History (most recent first): + 18/04/2002 - AGT - initial version +*/ + +#include "GaborFilter.h" + +#ifndef M_PI +#define M_PI 3.1415926535897932384626433832795 +#endif + +// default constructor just sets everything to default +GaborFilter::GaborFilter() +{ + mRadius = 16; + mSigma = M_PI; + mAngle = 0; + mPhase = 0; + mFrequency = 1.0; + mReal = NULL; + mImaginary = NULL; +} + +// destructor: free up memory +GaborFilter::~GaborFilter() +{ + int i; + + if ( mReal != NULL ) + { + for ( i = 0; i < mRadius; i++ ) delete[] mReal[i]; + delete[] mReal; + } + if ( mImaginary != NULL ) + { + for ( i = 0; i < mRadius; i++ ) delete[] mImaginary[i]; + delete[] mImaginary; + } +} + + +// set up the filter +void GaborFilter::Initialize( int radius, float a, float f, float s, float p ) +{ + float x, y, exponential, sincos; + +// set internal variables + mRadius = 2 * radius; + mXYO = radius; // origin of filter + mSigma = s; + mAngle = a; + mPhase = p; + mFrequency = f * M_PI / 2.0; + +// allocate memory for this filter + mReal = new float*[mRadius]; // real part of filter + mImaginary = new float*[mRadius]; // imaginary part of filter + +// initialize values of filter + for ( int i = 0; i < mRadius; i++ ) + { + mReal[i] = new float[mRadius]; + mImaginary[i] = new float[mRadius]; + + for ( int j = 0; j < mRadius; j++ ) + { + // offset from origin + y = (float)( i - mXYO ); + x = (float)( j - mXYO ); + + // calculate exponential part + exponential = exp( - ( x*x + y*y ) / mSigma ); + + // calculate sin-cos sum + sincos = mFrequency * ( y * cos( mAngle ) - x * sin( mAngle ) ); + mReal[i][j] = exponential * sin( sincos ); + mImaginary[i][j] = exponential * ( cos( sincos ) - exp((-1.0*M_PI*M_PI)/2.0) ); + } + } +} + + +// save the filter image +void GaborFilter::Save( char* file, int angle, int freq ) +{ + PGMImage pgmImage; + char filename[256]; + char suffix[32]; + + strcpy( filename, file ); + sprintf( suffix, "gf_i_%d_%d.pgm", angle, freq ); + strcat( filename, suffix ); + pgmImage.WriteScaled( filename, mImaginary, mRadius, mRadius ); + strcpy( filename, file ); + sprintf( suffix, "gf_r_%d_%d.pgm", angle, freq ); + strcat( filename, suffix ); + pgmImage.WriteScaled( filename, mReal, mRadius, mRadius ); +} + Added: hugin/trunk/src/celeste/GaborFilter.h =================================================================== --- hugin/trunk/src/celeste/GaborFilter.h (rev 0) +++ hugin/trunk/src/celeste/GaborFilter.h 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,39 @@ +/* + Description: Class definition for a single Gabor Filter + Author: Adriaan Tijsseling (AGT) + Copyright: (c) Copyright 2002-3 Adriaan Tijsseling. All rights reserved. +*/ + + +#ifndef __GABORFILTER__ +#define __GABORFILTER__ + +#include "GaborGlobal.h" +#include "PGMImage.h" + +class GaborFilter +{ +public: + + GaborFilter(); + ~GaborFilter(); + + void Initialize( int radius, float a, float f, float s, float p = 0 ); + void Save( char* file, int angle, int freq ); + + inline float GetReal( int x, int y ) { return mReal[x][y]; } + inline float GetImaginary( int x, int y ) { return mImaginary[x][y]; } + +protected: + + int mXYO; // origin + int mRadius; // radius of filter + float mSigma; // curve of gaussian (sually set to PI) + float mAngle; // orientation of filter (theta) + float mPhase; // phase of filter (rho) + float mFrequency; // wavelengths of filter (omega) + float** mReal; // real part of filter + float** mImaginary; // imaginary part of filter +}; + +#endif Added: hugin/trunk/src/celeste/GaborGlobal.h =================================================================== --- hugin/trunk/src/celeste/GaborGlobal.h (rev 0) +++ hugin/trunk/src/celeste/GaborGlobal.h 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,18 @@ +#ifndef __GABORGLOBAL__ +#define __GABORGLOBAL__ + +#include <iostream> +#include <fstream> +#include <string> +#include <math.h> +#include <stdio.h> + +// Quick access to maximum and minimum values +#define Max(a,b) (a>b?a:b) +#define Min(a,b) (a<b?a:b) + +extern bool kSaveFilter; +extern bool kVerbosity; + +#endif + Added: hugin/trunk/src/celeste/GaborJet.cpp =================================================================== --- hugin/trunk/src/celeste/GaborJet.cpp (rev 0) +++ hugin/trunk/src/celeste/GaborJet.cpp 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,137 @@ +/* + Description: Implementation for GaborJet class + Author: Adriaan Tijsseling (AGT) + Copyright: (c) Copyright 2002-3 Adriaan Tijsseling. All rights reserved. +*/ + +#include "GaborJet.h" + +#ifndef M_PI +#define M_PI 3.1415926535897932384626433832795 +#endif + +using namespace std; + +// default constructor just sets everything to default +GaborJet::GaborJet() +{ + mHeight = 512; + mWidth = 512; + mX = 128; + mY = 128; + mShowFilter = false; + mFilters = NULL; + mFiducials = NULL; +} + +// destructor: free up memory +GaborJet::~GaborJet() +{ + if ( mFilters != NULL ) + { + for ( int i = 0; i < mAngles; i++ ) delete[] mFilters[i]; + delete[] mFilters; + } + if ( mFiducials != NULL ) delete[] mFiducials; +} + + +// set up the filter +void GaborJet::Initialize( int y, int x, int x0, int y0, int r, + float s, int f, float maxF, float minF, int a, bool save ) +{ + int i, j; + float angle, freq; + +// set internal variables + mHeight = y; + mWidth = x; + mX = x0; + mY = y0; + mSigma = s * M_PI * M_PI; + mAngles = a; + mFreqs = f; + mRadius = r; + mMinFreq = minF; + mMaxFreq = maxF; + mShowFilter = save; + mFiducials = new float[mAngles * mFreqs]; + +// allocate memory for filters (angles * freqs = total filters) + mFilters = new GaborFilter * [mAngles]; + for ( i = 0; i < mAngles; i++ ) + { + // calculate angle + angle = (float)i * M_PI / (float)mAngles; + + // allocate filters for this angle + mFilters[i] = new GaborFilter[mFreqs]; + + // initialize each one + for ( j = 0; j < mFreqs; j++ ) + { + // calculate frequency + freq = minF + ( j * ( maxF - minF ) ) / (float)mFreqs; + + // initialize filter + mFilters[i][j].Initialize( mRadius, angle, freq, mSigma ); + if ( mShowFilter ) mFilters[i][j].Save( mFile, i, j ); + } + } +} + + +// process an image +void GaborJet::Filter( float** image, int* len ) +{ + int x, y; // iterating over location + int gx, gy; // iterating over filters + int a, f; // iterating over angles and frequencies + int h, i, j; // iterating over filter field + float sumI, sumR; // sum of imaginary and of real parts + + if ( kVerbosity ) cerr << "convoluting..." << endl; + +// convolve at center of filter location + // collect responses over angles and frequencies + h = 0; + for ( a = 0; a < mAngles; a++ ) + { + for ( f = 0; f < mFreqs; f++ ) + { + sumR = 0.0; + sumI = 0.0; + + // start from bottom-left corner of filter location + y = mY - mRadius; + for ( gy = y; gy < y + 2 * mRadius; gy++ ) + { + // make sure we are not out of bounds + if ( gy < 0 || gy >= mHeight ) break; + + // offset to local coordinates of filter + i = gy - y; + + x = mX - mRadius; + for ( gx = x; gx < x + 2 * mRadius; gx++ ) + { + // make sure we are not out of bounds + if ( gx < 0 || gx >= mWidth ) break; + + // offset to local coordinates of filter + j = gx - x; + + sumR += image[gy][gx] * mFilters[a][f].GetReal(i,j); + sumI += image[gy][gx] * mFilters[a][f].GetImaginary(i,j); + } + } + mFiducials[h] = sqrt( sumR*sumR + sumI*sumI ); + h++; + } // f + } // a + + *len = mAngles * mFreqs; +} + + + Added: hugin/trunk/src/celeste/GaborJet.h =================================================================== --- hugin/trunk/src/celeste/GaborJet.h (rev 0) +++ hugin/trunk/src/celeste/GaborJet.h 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,49 @@ +/* +Description: Class definition for a Gabor Jet +Author: Adriaan Tijsseling (AGT) +Copyright: (c) Copyright 2002 Adriaan Tijsseling. All rights reserved. +Change History (most recent first): +18/04/2002 - AGT - initial version +*/ + +#ifndef __GABORJET__ +#define __GABORJET__ + +#include "GaborGlobal.h" +#include "GaborFilter.h" + + +class GaborJet +{ +public: + + GaborJet(); + ~GaborJet(); + + void Initialize( int y, int x, int x0, int y0, int r, float s = 2.0, int f = 2, + float maxF = 2, float minF = 1, int a = 8, bool save = false ); + void Filter( float** image, int* len ); + float GetResponse( int idx ) { return mFiducials[idx]; } + + inline void SetFileName( char* file ) { strcpy( mFile, file ); } + +protected: + + bool mShowFilter;// indicates whether to save images of used filters + int mHeight; // vertical size of image + int mWidth; // horizontal size of image + int mX; // origin of Gabor Jet + int mY; + float mSigma; // modulator for standard deviation sigma + int mAngles; // number of orientations + int mFreqs; // number of frequencies + int mRadius; // radius of filter + float mMinFreq; // minimum frequency + float mMaxFreq; // maximum frequency + GaborFilter** mFilters; // set of filters in use + float* mFiducials; // vector with Gabor responses at center + char mFile[256]; // filename +}; + +#endif + Added: hugin/trunk/src/celeste/ImageFile.cpp =================================================================== --- hugin/trunk/src/celeste/ImageFile.cpp (rev 0) +++ hugin/trunk/src/celeste/ImageFile.cpp 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,126 @@ +/* + Description: Abstract class for reading and storing images + Original Author: Mickael Pic + Modifications by: Adriaan Tijsseling (AGT) +*/ + + +#include "ImageFile.h" + +ImageFile::ImageFile() +{ + mPixels = NULL; + mFloats = NULL; + mRGB = NULL; + mWidth = 0; + mHeight = 0; + mVerbosity = true; +} + +ImageFile::~ImageFile() +{ + Deallocate(); +} + + +// allocate pixel storage +void ImageFile::Allocate( int dataset ) +{ + int i, j; + + if ( dataset & kChars ) + { + mPixels = new unsigned char*[mHeight]; + for ( i = 0; i < mHeight; i++ ) + { + mPixels[i] = new unsigned char[mWidth]; + for ( j = 0; j < mWidth; j++ ) + mPixels[i][j] = 0; + } + } + if ( dataset & kFloats ) + { + mFloats = new float*[mHeight]; + for ( i = 0; i < mHeight; i++ ) + { + mFloats[i] = new float[mWidth]; + for ( j = 0; j < mWidth; j++ ) + mFloats[i][j] = 0.0; + } + } + if ( dataset & kRGB ) + { + mRGB = new int**[3]; + for ( i = 0; i < 3; i++ ) + { + mRGB[i] = new int*[mHeight]; + for ( j = 0; j < mHeight; j++ ) + { + mRGB[i][j] = new int[mWidth]; + for ( int k = 0; k < mWidth; k++ ) + mRGB[i][j][k] = 255; + } + } + } +} + + +// allocate pixel storage +void ImageFile::Deallocate() +{ + int i; + + if ( mPixels != NULL ) + { + for ( i = 0; i < mHeight; i++ ) + delete[] mPixels[i]; + delete[] mPixels; + } + if ( mFloats != NULL ) + { + for ( i = 0; i < mHeight; i++ ) + delete[] mFloats[i]; + delete[] mFloats; + } + if ( mRGB == NULL ) return; + for ( i = 0; i < 3; i++ ) + { + for ( int j = 0; j < mHeight; j++ ) + delete[] mRGB[i][j]; + delete[] mRGB[i]; + } + delete[] mRGB; +} + + +// get one single pixel +unsigned char ImageFile::GetPixel( int x, int y ) +{ + if ( mPixels != NULL ) + return mPixels[x][y]; + else + return 0; +} + + +// Set the image from a table of float +void ImageFile::SetPixels( float** pixels ) +{ + for ( int i = 0; i < mHeight; i++ ) + for ( int j = 0; j < mWidth; j++ ) + mPixels[i][j] = (unsigned char)pixels[i][j]; +} + + +// return float cast of pixel storage +float** ImageFile::GetPixels( void ) +{ + // allocate pixel storage + Allocate( kFloats ); + + for ( int i = 0; i < mHeight; i++ ) + for ( int j = 0; j < mWidth; j++ ) + mFloats[i][j] = (float)mPixels[i][j]; + + return mFloats; +} Added: hugin/trunk/src/celeste/ImageFile.h =================================================================== --- hugin/trunk/src/celeste/ImageFile.h (rev 0) +++ hugin/trunk/src/celeste/ImageFile.h 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,67 @@ +/* + Description: Abstract class for reading and storing images + Original Author: Mickael Pic + Modifications by: Adriaan Tijsseling (AGT) +*/ + +#ifndef __IMAGE_FILE_CLASS__ +#define __IMAGE_FILE_CLASS__ + +#include <iostream> +#include <fstream> +#include <string> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> + +enum +{ + kChars = 0x01, + kFloats = 0x02, + kRGB = 0x04 +}; + +class ImageFile +{ +public: + + ImageFile(); + virtual ~ImageFile(); + + // set or get width of image + inline void SetWidth( int w ) { mWidth = w; } + inline int GetWidth() { return mWidth; } + + // set or get height of image + inline void SetHeight( int h ){ mHeight = h; } + inline int GetHeight(){ return mHeight; } + + // set or get one single pixel + inline void SetPixel( int x, int y, unsigned char p ) { if ( mPixels != NULL ) mPixels[x][y] = p; } + unsigned char GetPixel( int x, int y ); + + // set or get pixels + inline int*** GetRGBPixels( void ) { return mRGB; } + void SetPixels( float** ); + float** GetPixels( void ); + + // allocate pixelmap + void Allocate( int dataset ); + void Deallocate(); + + // read to or write image from file + virtual int Read( char* ) = 0; + virtual void Write( char* ) = 0; + +protected: + + int*** mRGB; // rgb pixels + unsigned char** mPixels; // pixel storage + float** mFloats; // converted to floats + int mWidth; // image width + int mHeight; // image height + bool mVerbosity; // verbosity level + + }; + +#endif Added: hugin/trunk/src/celeste/LogPolar.cpp =================================================================== --- hugin/trunk/src/celeste/LogPolar.cpp (rev 0) +++ hugin/trunk/src/celeste/LogPolar.cpp 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,115 @@ +/* + Description: class for log polar filter + Original Author: Takio Kurita + Ported by: Adriaan Tijsseling (AGT) +*/ + +#include "LogPolar.h" + +#ifndef M_PI +#define M_PI 3.1415926535897932384626433832795 +#endif + +// construct class and apply filter +LogPolar::LogPolar( float** img, int height, int width, int minS, int ry, int rx ) +{ + mImgHeight = height; + mImgWidth = width; + mHeight = ry; + mWidth = rx; + mMinHW = minS; + + // allocate output image + mPolarized = new float*[mHeight]; + for ( int i = 0; i < mHeight; i++ ) + { + mPolarized[i] = new float[mWidth]; + for ( int j = 0; j < mWidth; j++ ) + mPolarized[i][j] = 0.0; + } + // allocate coordinates image + mCoords = new float*[mImgHeight]; + for ( int i = 0; i < mImgHeight; i++ ) + { + mCoords[i] = new float[mImgWidth]; + for ( int j = 0; j < mImgWidth; j++ ) + mCoords[i][j] = 0.0; + } + // apply filter + ApplyFilter( img, height, width ); +} + + +// free memory +LogPolar::~LogPolar() +{ + if( mCoords != NULL ) + { + for( int y = 0; y < mImgHeight; y++ ) + delete[] mCoords[y]; + delete[] mCoords; + } + if( mPolarized != NULL ) + { + for( int y = 0; y < mHeight; y++ ) + delete[] mPolarized[y]; + delete[] mPolarized; + } +} + + +// apply filter to image +void LogPolar::ApplyFilter( float** img, int height, int width ) +{ + float rho, theta, x, y, sum; + int i, j, k, l, f, g; + + for( k = 0; k < mHeight; k++ ) + { + theta = 2.0 * M_PI * (float)k / (float)mHeight; + + for( l = 0; l < mWidth; l++ ) + { + rho = exp( log( (float)mMinHW / 2.0 ) * (float)l / (float)mWidth ); + + x = rho * cos( theta ); + y = rho * sin( theta ); + + if ( x >= 0.0 ) x += 0.5; + else x -= 0.5; + if ( y >= 0.0 ) y += 0.5; + else y -= 0.5; + + f = (int)(y) + (int)height/2; + g = (int)(x) + (int)width/2; + + sum = 0.0; + for( i = f-1; i <= f+1; i++ ) + for( j = g-1; j <= g+1; j++ ) + sum += img[i][j]; + + mPolarized[k][l] = sum / 9.0; + mCoords[f][g] = 255.0; + } + } +} + + +// write out contrast data to pgm file +void LogPolar::Save( void ) +{ + PGMImage pgmI; + char tmpname[256]; + + strcpy( tmpname, mFile ); + strcat( tmpname, "-lp-hist.pgm" ); + pgmI.WriteScaled( tmpname, mPolarized, mHeight, mWidth ); + if ( kSaveFilter ) + { + strcpy( tmpname, mFile ); + strcat( tmpname, "-lp-img.pgm" ); + pgmI.WriteScaled( tmpname, mCoords, mImgHeight, mImgWidth ); + } +} + + Added: hugin/trunk/src/celeste/LogPolar.h =================================================================== --- hugin/trunk/src/celeste/LogPolar.h (rev 0) +++ hugin/trunk/src/celeste/LogPolar.h 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,41 @@ +/* + Description: class for log polar filter + Original Author: Takio Kurita + Ported by: Adriaan Tijsseling (AGT) +*/ + +#ifndef __LOGPOLAR_CLASS__ +#define __LOGPOLAR_CLASS__ + +#include "GaborGlobal.h" +#include "PGMImage.h" + +class LogPolar +{ +public: + + LogPolar(){ mCoords = NULL; mPolarized = NULL; } + LogPolar( float** img, int height, int width, int minS, int ry = 30, int rx = 11 ); + ~LogPolar(); + + void ApplyFilter( float** img, int height, int width ); + void Save( void ); + + inline void SetFileName( char* file ) { strcpy( mFile, file ); } + inline float** GetPolars( void ) { return mPolarized; } + inline int GetWidth() { return mWidth; } + inline int GetHeight(){ return mHeight; } + +protected: + + float **mCoords; // logpolar coordinates img + float **mPolarized; // result + char mFile[256]; // file name + int mMinHW; // shortest size of image + int mHeight; // height of filter + int mWidth; // width of filter + int mImgHeight; // height of output image + int mImgWidth; // width of output image +}; + +#endif Added: hugin/trunk/src/celeste/Main.cpp =================================================================== --- hugin/trunk/src/celeste/Main.cpp (rev 0) +++ hugin/trunk/src/celeste/Main.cpp 2008-10-10 09:53:47 UTC (rev 3491) @@ -0,0 +1,558 @@ +/*************************************************************************** + * Copyright (C) 2008 by Tim Nugent * + * tim...@gm... * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include <stdio.h> +#include <fstream> +#include <iostream> +#include <sstream> +#include <vector> +#include <cctype> +#include <string> +#include <algorithm> +#include "svm.h" +#include "CelesteGlobals.h" +#include "Utilities.h" +#include "Celeste.h" +#include <sys/stat.h> +#include "hugin_config.h" + +#define VERSION 1.2 + +using namespace std; + +bool fileexists(string strFilename) { + + struct stat stFileInfo; + bool blnReturn; + int intStat; + + // Attempt to get the file attributes + intStat = stat(strFilename.c_str(),&stFileInfo); + if(intStat == 0) { + + blnReturn = true; + }else{ + + blnReturn = false; + } + + return(blnReturn); +} + +static void tokenize(const string& str, vector<string>& tokens, const string& delimiters = " "){ + + // Skip delimiters at beginning + string::size_type lastPos = str.find_first_not_of(delimiters, 0); + + // Find first non-delimiter + string::size_type pos = str.find_first_of(delimiters, lastPos); + + while (string::npos != pos || string::npos != lastPos){ + + // Found a token, add it to the vector + tokens.push_back(str.substr(lastPos, pos - lastPos)); + + // Skip delimiters. Note the not_of + lastPos = str.find_first_not_of(delimiters, pos); + + // Find next non-delimiter + pos = str.find_first_of(delimiters, lastPos); + } + +} + +static void parse_pto(string& f,vector<string>& images,vector<string>& pto_file_top,vector<string>& +pto_file_cps,vector<string>& pto_file_end, unsigned int& mask, string& m, double& threshold,string& +mask_format,vector<double>& svm_responses){ + + // Create some vectors to store image and control point data + vector<unsigned int> xcps; + vector<unsigned int> ycps; + + // Open the .pto file and make sure it's good to go + ifstream is(f.c_str()); + + if(!is.good()){ + cout << "Couldn't open Hugin project file " << f << endl << endl; + exit(1); + } + + // Get line from stream + string line; + unsigned int current = 0, counter = 0, at_cps = 0, done_cps = 0; + + while(getline(is,line)){ + + string start = line.substr(0, 1); + string autopano_start = line.substr(0, 9); + + if (at_cps == 0){ + pto_file_top.push_back(line); + } + + if (start == ("i") || autopano_start == ("#-imgfile")){ + + // Parse images from lines beginning 'i' + + //vector<string> tokens; + //tokenize(line, tokens); + //string imagename = tokens.back().substr(2, tokens.back().length()-3); + + size_t found; + string imagename = (""); + + // Hugin files + if (start == ("i")){ + + found = line.find("\""); + imagename = line.substr(found + 1, line.length() - found - 2); + //cout << imagename << endl; + + // (Old?) Autopano Pro files + }else{ + + found = line.find("\""); + imagename = line.substr(found + 1, line.length() - found - 2); + + } + + if (fileexists(imagename)){ + + // Put filenames into a vector + images.push_back(imagename); + + // Seach for the image if we can't find it, using path of PTO file + }else{ + + //cout << imagename << " doesn't exist." << endl; + + vector<string> tokens; + imagename = (""); + + // *nix file paths + if (f.find("/") < f.length() || f.substr(0, 1) == ("/")){ + + if (f.substr(0, 1) == ("/")){ + imagename += ("/"); + } + + tokenize(f, tokens, "/"); + for (unsigned int p = 0; p < tokens.size() - 1; p++){ + imagename += tokens[p]; + imagename += "/"; + } + imagename += line.substr(found + 1, line.length() - found - 2); + + // Windows file paths... experimental! + }else{ + + tokenize(f, tokens, "\\"); + for (unsigned int p = 0; p < tokens.size() - 1; p++){ + imagename += tokens[p]; + imagename += "\\"; + } + imagename += line.substr(found + 1, line.length() - found - 2); + + } + + //cout << "New search path " << imagename << endl; + + if (fileexists(imagename)){ + + // Put filenames into a vector + images.push_back(imagename); + + }else{ + + cout << "Couldn't open image " << line.substr(found + 2, line.length() -... [truncated message content] |
From: <yu...@us...> - 2008-10-14 08:33:22
|
Revision: 3503 http://hugin.svn.sourceforge.net/hugin/?rev=3503&view=rev Author: yuv Date: 2008-10-14 08:28:01 +0000 (Tue, 14 Oct 2008) Log Message: ----------- - CMake top level now stores the revision number in rev.txt for tarball perusal - moved the Windows GLEW settings from top level to CMakeModules/FindGLEW.cmake Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/CMakeModules/FindGLEW.cmake Property Changed: ---------------- hugin/trunk/ Property changes on: hugin/trunk ___________________________________________________________________ Modified: svn:ignore - ABOUT-NLS aclocal.m4 autom4te.cache config config.log config.status configure libtool Makefile Makefile.in po + ABOUT-NLS aclocal.m4 autom4te.cache config config.log config.status configure libtool Makefile Makefile.in po rev.txt Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2008-10-13 23:33:00 UTC (rev 3502) +++ hugin/trunk/CMakeLists.txt 2008-10-14 08:28:01 UTC (rev 3503) @@ -40,10 +40,13 @@ ENDIF(WIN32 AND NOT CMAKE_CROSSCOMPILING) SET(HUGIN_PACKAGE_VERSION ${V_MAJOR}.${V_MINOR}.${V_PATCH}.${HUGIN_WC_REVISION}) SET(HUGIN_DEVELOPMENT_VERSION 1) + FILE(WRITE ${PROJECT_SOURCE_DIR}/rev.txt "${HUGIN_WC_REVISION}") ELSE (EXISTS ${PROJECT_SOURCE_DIR}/.svn) SET(HUGIN_PACKAGE_VERSION ${V_MAJOR}.${V_MINOR}.${V_PATCH}) # TODO: at each release, set current SVN revision here! SET(HUGIN_WC_REVISION 0) + FILE(READ "${PROJECT_SOURCE_DIR}/rev.txt" HUGIN_WC_REVISION) + MESSAGE("-- Current SVN revision is ${HUGIN_WC_REVISION}") ENDIF (EXISTS ${PROJECT_SOURCE_DIR}/.svn) # version for internal libraries. @@ -87,10 +90,10 @@ SET(BOOST_DIR_SEARCH_USER ${SOURCE_BASE_DIR}) # wxWidgets SET(wxWidgets_ROOT_DIR ${SOURCE_BASE_DIR}/wxMSW-2.8.9) - # GLEW - SET(GLEW_INCLUDE_DIR ${SOURCE_BASE_DIR}/glew/include) + # GLEW moved to FildGLEW.cmake module + # SET(GLEW_INCLUDE_DIR ${SOURCE_BASE_DIR}/glew/include) # for dynamic build, it's glew32.lib and the dll must be copied into hugin's bin folder - SET(GLEW_LIBRARIES ${SOURCE_BASE_DIR}/glew/lib/glew32s.lib) + # SET(GLEW_LIBRARIES ${SOURCE_BASE_DIR}/glew/lib/glew32s.lib) ENDIF(WIN32) ## Modified: hugin/trunk/CMakeModules/FindGLEW.cmake =================================================================== --- hugin/trunk/CMakeModules/FindGLEW.cmake 2008-10-13 23:33:00 UTC (rev 3502) +++ hugin/trunk/CMakeModules/FindGLEW.cmake 2008-10-14 08:28:01 UTC (rev 3503) @@ -3,14 +3,19 @@ # GLEW_INCLUDE_DIR - glew include directory # GLEW_LIBRARIES - Libraries needed to use glew -FIND_PATH(GLEW_INCLUDE_DIR GL/glew.h PATHS /usr/include /usr/local/include) - -FIND_LIBRARY(GLEW_LIBRARIES GLEW PATHS /usr/lib /usr/local/lib) +IF(WIN32) + FIND_PATH(GLEW_INCLUDE_DIR GL/glew.h PATHS ${SOURCE_BASE_DIR}/glew/include) + # for dynamic build, it's glew32.lib and the dll must be copied into hugin's bin folder + SET(GLEW_LIBRARIES ${SOURCE_BASE_DIR}/glew/lib/glew32s.lib) +ELSE(WIN32) + FIND_PATH(GLEW_INCLUDE_DIR GL/glew.h PATHS /usr/include /usr/local/include) + FIND_LIBRARY(GLEW_LIBRARIES GLEW PATHS /usr/lib /usr/local/lib) +ENDIF(WIN32) + IF (GLEW_INCLUDE_DIR AND GLEW_LIBRARIES) SET(GLEW_FOUND TRUE) ENDIF (GLEW_INCLUDE_DIR AND GLEW_LIBRARIES) - IF (GLEW_FOUND) IF (NOT GLEW_FIND_QUIETLY) MESSAGE(STATUS "Found Glew: ${FOO_LIBRARY}") @@ -20,4 +25,3 @@ MESSAGE(FATAL_ERROR "Could not find Glew, install it with your package manager, or get it from http://glew.sourceforge.net/.") ENDIF (GLEW_FIND_REQUIRED) ENDIF (GLEW_FOUND) - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2008-11-06 23:42:00
|
Revision: 3531 http://hugin.svn.sourceforge.net/hugin/?rev=3531&view=rev Author: brunopostle Date: 2008-11-06 23:41:54 +0000 (Thu, 06 Nov 2008) Log Message: ----------- cleanup Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/Makefile.equirect.mk Removed Paths: ------------- hugin/trunk/doc/batch-processing/Makefile.flickr.mk hugin/trunk/doc/batch-processing/Makefile.psd.mk hugin/trunk/doc/batch-processing/Makefile.qtvr.mk Deleted: hugin/trunk/doc/batch-processing/Makefile.flickr.mk =================================================================== --- hugin/trunk/doc/batch-processing/Makefile.flickr.mk 2008-11-06 17:02:05 UTC (rev 3530) +++ hugin/trunk/doc/batch-processing/Makefile.flickr.mk 2008-11-06 23:41:54 UTC (rev 3531) @@ -1,89 +0,0 @@ -#!/usr/bin/make -f - -# hugin Makefile to create stereographic skys and little planets from -# equirectangular enfused projects. Output is 1280x1280 JPEG images suitable -# for uploading to a free flickr account. Requires Panotools::Script, -# ImageMagick and nona - -# Simple usage: -# make -f Makefile.flickr.mk flickr PTO=myproject.pto - -# FIXME -# Roll pitch yaw for downerect. -# Picking between fused and normal has to be done by resetting FUSED_SUFFIX. -# Doesn't use _SHELL safe paths - -JPEG_QUALITY = 90 -FLICKR_GEOMETRY = 1280x1280 -FUSED_SUFFIX = _fused - -EQUIRECT_PREFIX = $(LDR_REMAPPED_PREFIX)$(FUSED_SUFFIX) - -include $(PTO).mk - -PTO_SGRAPHIC = $(EQUIRECT_PREFIX)-sgraphic.pto -PTO_MERCATOR = $(EQUIRECT_PREFIX)-mercator.pto - -SKY_PREFIX = $(EQUIRECT_PREFIX)-sky -PTO_SKY = $(SKY_PREFIX).pto -TIFF_SKY = $(SKY_PREFIX)_0000.tif -JPEG_SKY = $(SKY_PREFIX).jpg - -PLANET_PREFIX = $(EQUIRECT_PREFIX)-planet -PTO_PLANET = $(PLANET_PREFIX).pto -TIFF_PLANET = $(PLANET_PREFIX)_0000.tif -JPEG_PLANET = $(PLANET_PREFIX).jpg - -MERCATOR_PREFIX = $(EQUIRECT_PREFIX)-mercator -PTO_MERCATOR = $(MERCATOR_PREFIX).pto -TIFF_MERCATOR = $(MERCATOR_PREFIX)_0000.tif -JPEG_MERCATOR = $(MERCATOR_PREFIX).jpg - -.PHONY : flickr sky planet flickr_clean -.SECONDARY : $(LDR_EXPOSURE_LAYERS_REMAPPED) $(LDR_STACKS) $(LDR_LAYERS) - -flickr : sky planet -sky : $(JPEG_SKY) -planet : $(JPEG_PLANET) -mercator : $(JPEG_MERCATOR) - -$(PTO_SGRAPHIC) : $(EQUIRECT_PREFIX).tif - erect2planet $(EQUIRECT_PREFIX).tif - - -$(PTO_SKY) : $(PTO_SGRAPHIC) - transform-pano 0 -90 0 $(PTO_SGRAPHIC) $(PTO_SKY) - -$(TIFF_SKY) : $(PTO_SKY) - $(NONA) -r ldr -m TIFF_m -i 0 -o $(SKY_PREFIX)_ $(PTO_SKY) - -$(JPEG_SKY) : $(TIFF_SKY) - convert -geometry $(FLICKR_GEOMETRY) -quality $(JPEG_QUALITY) $(TIFF_SKY) $(JPEG_SKY) - $(EXIFTOOL) -overwrite_original_in_place -TagsFromFile $(INPUT_IMAGE_1) $(EXIFTOOL_COPY_ARGS) $(JPEG_SKY) - - -$(PTO_PLANET) : $(PTO_SGRAPHIC) - transform-pano 0 90 0 $(PTO_SGRAPHIC) $(PTO_PLANET) - -$(TIFF_PLANET) : $(PTO_PLANET) - $(NONA) -r ldr -m TIFF_m -i 0 -o $(PLANET_PREFIX)_ $(PTO_PLANET) - -$(JPEG_PLANET) : $(TIFF_PLANET) - convert -geometry $(FLICKR_GEOMETRY) -quality $(JPEG_QUALITY) $(TIFF_PLANET) $(JPEG_PLANET) - $(EXIFTOOL) -overwrite_original_in_place -TagsFromFile $(INPUT_IMAGE_1) $(EXIFTOOL_COPY_ARGS) $(JPEG_PLANET) - - -$(PTO_MERCATOR) : $(EQUIRECT_PREFIX).tif - erect2mercator $(EQUIRECT_PREFIX).tif - -$(TIFF_MERCATOR) : $(PTO_MERCATOR) - $(NONA) -r ldr -m TIFF_m -i 0 -o $(MERCATOR_PREFIX)_ $(PTO_MERCATOR) - -$(JPEG_MERCATOR) : $(TIFF_MERCATOR) - convert -geometry $(FLICKR_GEOMETRY) -quality $(JPEG_QUALITY) $(TIFF_MERCATOR) $(JPEG_MERCATOR) - $(EXIFTOOL) -overwrite_original_in_place -TagsFromFile $(INPUT_IMAGE_1) $(EXIFTOOL_COPY_ARGS) $(JPEG_MERCATOR) - - -flickr_clean : - $(RM) -f $(TIFF_SKY) $(TIFF_PLANET) $(TIFF_MERCATOR) - Deleted: hugin/trunk/doc/batch-processing/Makefile.psd.mk =================================================================== --- hugin/trunk/doc/batch-processing/Makefile.psd.mk 2008-11-06 17:02:05 UTC (rev 3530) +++ hugin/trunk/doc/batch-processing/Makefile.psd.mk 2008-11-06 23:41:54 UTC (rev 3531) @@ -1,30 +0,0 @@ -#!/usr/bin/make -f - -# Creates a multilayer PSD file consisting of both enblend input and output, -# useful for manual retouching in the Gimp or Photoshop. -# -# Usage for blended panorama: -# make -f Makefile.psd.mk ldr_psd PTO=myproject.pto -# -# Usage for blended fused stacks: -# make -f Makefile.psd.mk ldr_fused_psd PTO=myproject.pto - -# FIXME -# Two parallel targets isn't so clean. -# PTtiff2psd crashes with more than five input files. -# PTtiff2psd chokes on cropped TIFF. - -PTTIFF2PSD=PTtiff2psd - -include $(PTO).mk - -.PHONY : ldr_psd ldr_fused_psd - -ldr_psd : $(LDR_LAYERS) $(LDR_BLENDED) - $(PTTIFF2PSD) -o $(LDR_REMAPPED_PREFIX).psd \ - $(LDR_LAYERS_SHELL) $(LDR_BLENDED_SHELL) - -ldr_fused_psd : $(LDR_STACKS) $(LDR_STACKED_BLENDED) - $(PTTIFF2PSD) -o $(LDR_REMAPPED_PREFIX)_fused.psd \ - $(LDR_STACKS_SHELL) $(LDR_STACKED_BLENDED_SHELL) - Deleted: hugin/trunk/doc/batch-processing/Makefile.qtvr.mk =================================================================== --- hugin/trunk/doc/batch-processing/Makefile.qtvr.mk 2008-11-06 17:02:05 UTC (rev 3530) +++ hugin/trunk/doc/batch-processing/Makefile.qtvr.mk 2008-11-06 23:41:54 UTC (rev 3531) @@ -1,78 +0,0 @@ -#!/usr/bin/make -f - -# hugin Makefile to create cubic QTVR panoramas. -# Requires Panotools::Script -# Simple usage: -# make -f Makefile.qtvr.mk qtvr PTO=myproject.pto - -# Advanced (make -e) settings: -# CUBE_PITCH=-90 # if nadir is in the centre of the input panorama -# JPEG_QUALITY=50 -# QTVR_NAME='My cool panorama' -# QTVR_PAN=45 -# QTVR_TILT=30 -# QTVR_FOV=70 - -# FIXME -# qtvr_full target for preview track. -# Picking between fused and normal has to be done by resetting FUSED_SUFFIX. -# Inconsistent use of _SHELL safe paths - -JPEG_QUALITY = 70 -CUBE_ROLL = 0.0 -CUBE_PITCH = 0.0 -CUBE_YAW = 0.0 -QTVR_NAME = 'Panorama created by hugin' -QTVR_PAN = 0.1 -QTVR_TILT = 0.1 -QTVR_FOV = 90.0 -FUSED_SUFFIX = _fused - -EQUIRECT_PREFIX = $(LDR_REMAPPED_PREFIX)$(FUSED_SUFFIX) -EQUIRECT_PREFIX_SHELL = $(LDR_REMAPPED_PREFIX_SHELL)$(FUSED_SUFFIX) - -include $(PTO).mk - -CUBE_PREFIX = $(EQUIRECT_PREFIX)_cube -CUBE_PROJECT = $(CUBE_PREFIX).pto -MOV = $(EQUIRECT_PREFIX).mov - -JPEG_FACE_0 = $(CUBE_PREFIX)0.jpg -JPEG_FACE_1 = $(CUBE_PREFIX)1.jpg -JPEG_FACE_2 = $(CUBE_PREFIX)2.jpg -JPEG_FACE_3 = $(CUBE_PREFIX)3.jpg -JPEG_FACE_4 = $(CUBE_PREFIX)4.jpg -JPEG_FACE_5 = $(CUBE_PREFIX)5.jpg - -JPEG_FACES = $(JPEG_FACE_0) $(JPEG_FACE_1) $(JPEG_FACE_2) $(JPEG_FACE_3) $(JPEG_FACE_4) $(JPEG_FACE_5) - -.PHONY : qtvr qtvr_clean -.SECONDARY : $(LDR_EXPOSURE_LAYERS_REMAPPED) $(LDR_STACKS) $(LDR_LAYERS) - -qtvr : $(MOV) - -$(CUBE_PROJECT) : $(EQUIRECT_PREFIX).tif - erect2cubic --erect=$(EQUIRECT_PREFIX_SHELL).tif --ptofile=$(CUBE_PROJECT) \ - --filespec="JPEG q$(JPEG_QUALITY)" \ - --roll=$(CUBE_ROLL) --pitch=$(CUBE_PITCH) --yaw=$(CUBE_YAW) - -$(JPEG_FACE_0) : $(EQUIRECT_PREFIX).tif $(CUBE_PROJECT) - $(NONA) -p UINT8 -i 0 -o $(JPEG_FACE_0) $(CUBE_PROJECT) -$(JPEG_FACE_1) : $(EQUIRECT_PREFIX).tif $(CUBE_PROJECT) - $(NONA) -p UINT8 -i 1 -o $(JPEG_FACE_1) $(CUBE_PROJECT) -$(JPEG_FACE_2) : $(EQUIRECT_PREFIX).tif $(CUBE_PROJECT) - $(NONA) -p UINT8 -i 2 -o $(JPEG_FACE_2) $(CUBE_PROJECT) -$(JPEG_FACE_3) : $(EQUIRECT_PREFIX).tif $(CUBE_PROJECT) - $(NONA) -p UINT8 -i 3 -o $(JPEG_FACE_3) $(CUBE_PROJECT) -$(JPEG_FACE_4) : $(EQUIRECT_PREFIX).tif $(CUBE_PROJECT) - $(NONA) -p UINT8 -i 4 -o $(JPEG_FACE_4) $(CUBE_PROJECT) -$(JPEG_FACE_5) : $(EQUIRECT_PREFIX).tif $(CUBE_PROJECT) - $(NONA) -p UINT8 -i 5 -o $(JPEG_FACE_5) $(CUBE_PROJECT) - -$(MOV) : $(JPEG_FACES) - jpeg2qtvr --outfile=$(MOV) --prefix=$(CUBE_PREFIX) --name=$(QTVR_NAME) \ - --pan=$(QTVR_PAN) --tilt=$(QTVR_TILT) --fov=$(QTVR_FOV) - -qtvr_clean : - $(RM) $(JPEG_FACES) $(CUBE_PROJECT) - Modified: hugin/trunk/src/hugin1/hugin/Makefile.equirect.mk =================================================================== --- hugin/trunk/src/hugin1/hugin/Makefile.equirect.mk 2008-11-06 17:02:05 UTC (rev 3530) +++ hugin/trunk/src/hugin1/hugin/Makefile.equirect.mk 2008-11-06 23:41:54 UTC (rev 3531) @@ -2,15 +2,17 @@ # Simple usage: # make -f Makefile.equirect.mk equirect_all PTO=myproject.pto +# requirements: +# +# libtiff (tiffcp) +# libpano13 (PTtiff2psd) +# Panotools::Script (erect2cubic jpeg2qtvr erect2planet transform-pano erect2mercator) +# ImageMagick (convert) +# hugin (nona) +# Image::ExifTool (exiftool) + JPEG_QUALITY = 70 GEOMETRY = 1280x1280 -CUBE_ROLL = 0.0 -CUBE_PITCH = 0.0 -CUBE_YAW = 0.0 -QTVR_NAME = 'Panorama created by hugin' -QTVR_PAN = 0.1 -QTVR_TILT = 0.1 -QTVR_FOV = 90.0 FUSED_SUFFIX = _fused equirect_all : qtvr panosalado sky planet mercator @@ -74,6 +76,9 @@ $(JPEG_FACE_2_SHELL) $(JPEG_FACE_3_SHELL) \ $(JPEG_FACE_4_SHELL) $(JPEG_FACE_5_SHELL) +CUBE_ROLL = 0.0 +CUBE_PITCH = 0.0 +CUBE_YAW = 0.0 $(CUBE_PROJECT) : $(EQUIRECT_PREFIX).tif erect2cubic --erect=$(EQUIRECT_PREFIX_SHELL).tif --ptofile=$(CUBE_PROJECT_SHELL) \ @@ -98,6 +103,11 @@ MOV = $(EQUIRECT_PREFIX).mov MOV_SHELL = $(EQUIRECT_PREFIX_SHELL).mov +QTVR_NAME = 'Panorama created by hugin' +QTVR_PAN = 0.1 +QTVR_TILT = 0.1 +QTVR_FOV = 90.0 + $(MOV) : faces jpeg2qtvr --outfile=$(MOV_SHELL) --prefix=$(CUBE_PREFIX_SHELL) --name=$(QTVR_NAME) \ --pan=$(QTVR_PAN) --tilt=$(QTVR_TILT) --fov=$(QTVR_FOV) @@ -122,13 +132,14 @@ PANOSALADO = $(EQUIRECT_PREFIX)-PanoSalado.xml PANOSALADO_SHELL = $(EQUIRECT_PREFIX_SHELL)-PanoSalado.xml +PANOSALADO_SWF = PanoSalado.swf $(PANOSALADO) : $(JPEG_FACES) $(EQUIRECT_PREVIEW) echo $(XML_PANOSALADO) > $(PANOSALADO_SHELL) XML_PANOSALADO = '<?xml version="1.0"?>\ <PanoSalado>\ - <layer id="PanoSalado" url="PanoSalado.swf?xml=$(PANOSALADO)" depth="0" onStart="loadSpace:myPreview">\ + <layer id="PanoSalado" url="$(PANOSALADO_SWF)?xml=$(PANOSALADO)" depth="0" onStart="loadSpace:myPreview">\ <spaces>\ <space id="myPreview" onTransitionEnd="loadSpace:myPano">\ <sphere id="myPreviewImage">\ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <har...@us...> - 2008-11-11 18:51:13
|
Revision: 3543 http://hugin.svn.sourceforge.net/hugin/?rev=3543&view=rev Author: harryvanderwolf Date: 2008-11-11 18:51:02 +0000 (Tue, 11 Nov 2008) Log Message: ----------- [OSX]implement celeste into mac hugin bundle. celeste in CPEditorPanel still crashes Hugin Modified Paths: -------------- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp hugin/trunk/src/hugin1/hugin/ImagesPanel.cpp hugin/trunk/src/hugin_config_mac.h Modified: hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj =================================================================== --- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2008-11-10 22:48:11 UTC (rev 3542) +++ hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2008-11-11 18:51:02 UTC (rev 3543) @@ -888,6 +888,8 @@ 734FBA6B0EB3A20500CD7122 /* VertexCoordRemapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734FBA570EB3A20500CD7122 /* VertexCoordRemapper.cpp */; }; 734FBA6C0EB3A20500CD7122 /* ViewState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734FBA590EB3A20500CD7122 /* ViewState.cpp */; }; 734FBA850EB3A40300CD7122 /* NonaOptionsDialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734FBA830EB3A40300CD7122 /* NonaOptionsDialog.cpp */; }; + 737E1C190EC9EC0300BA4D9B /* hugin_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 737E1C180EC9EC0300BA4D9B /* hugin_config.h */; }; + 7394A2020EC8A8F000DCEE85 /* celeste.model in Resources */ = {isa = PBXBuildFile; fileRef = 734FB8E80EB38B9400CD7122 /* celeste.model */; }; 739CADC80EC86F44002FD3AF /* Celeste.h in Headers */ = {isa = PBXBuildFile; fileRef = 734FB8DE0EB38B9400CD7122 /* Celeste.h */; }; 739CADC90EC86F44002FD3AF /* CelesteGlobals.h in Headers */ = {isa = PBXBuildFile; fileRef = 734FB8E00EB38B9400CD7122 /* CelesteGlobals.h */; }; 739CADCA0EC86F44002FD3AF /* Config.h in Headers */ = {isa = PBXBuildFile; fileRef = 734FB8E20EB38B9400CD7122 /* Config.h */; }; @@ -991,6 +993,20 @@ 73EAB5500E86CF130020D514 /* libtiff.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 73EAB5350E86CF120020D514 /* libtiff.a */; }; 73EAB5510E86CF130020D514 /* libtiffxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 73EAB5360E86CF120020D514 /* libtiffxx.a */; }; 73EAB5520E86CF130020D514 /* libxmi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 73EAB5370E86CF120020D514 /* libxmi.a */; }; + 73EBC0980EC9E2230068B821 /* Main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734FB8F60EB38B9500CD7122 /* Main.cpp */; }; + 73EBC0990EC9E2BD0068B821 /* libHalf.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577786180BF348E90041F8FF /* libHalf.dylib */; }; + 73EBC09A0EC9E2BD0068B821 /* libIex.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577786100BF347B80041F8FF /* libIex.dylib */; }; + 73EBC09B0EC9E2BD0068B821 /* libIlmImf.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577786090BF347780041F8FF /* libIlmImf.dylib */; }; + 73EBC09C0EC9E2BD0068B821 /* libIlmThread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577786110BF347B80041F8FF /* libIlmThread.dylib */; }; + 73EBC09D0EC9E2BD0068B821 /* libImath.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5777860A0BF3477A0041F8FF /* libImath.dylib */; }; + 73EBC09E0EC9E2BD0068B821 /* libjpeg.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57D14A4506B8A3D100D8A03D /* libjpeg.dylib */; }; + 73EBC09F0EC9E2BD0068B821 /* libpng.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FA06BD7388004058A1 /* libpng.dylib */; }; + 73EBC0A00EC9E2BD0068B821 /* libtiff.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FB06BD7388004058A1 /* libtiff.dylib */; }; + 73EBC0A20EC9E2ED0068B821 /* HuginVigraImpex.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5769FE380D24CFEC00A6AD01 /* HuginVigraImpex.framework */; }; + 73EBC0A30EC9E2ED0068B821 /* libceleste.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 734FB8D00EB38AB600CD7122 /* libceleste.dylib */; }; + 73EBC0A90EC9E3260068B821 /* libexiv2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 73EAB5290E86CF120020D514 /* libexiv2.a */; }; + 73EBC0AC0EC9E3540068B821 /* libboost_thread.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 57565A640D088DAD00344F55 /* libboost_thread.dylib */; }; + 73EBC0AD0EC9E3630068B821 /* libpano13.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 573B8F85067BAAB900B7B355 /* libpano13.dylib */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1484,6 +1500,13 @@ remoteGlobalIDString = 576900A90D24D29300A6AD01; remoteInfo = "hugin_base Framework"; }; + 737E1C1F0EC9EC5100BA4D9B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; + proxyType = 1; + remoteGlobalIDString = 57C486290C3121E8002D79F1 /* configure */; + remoteInfo = configure; + }; 739F84FD0EC7803F004771D6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 57FC3AC10675E43600C3E0AC /* Project object */; @@ -2233,7 +2256,8 @@ 734FBA830EB3A40300CD7122 /* NonaOptionsDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NonaOptionsDialog.cpp; sourceTree = "<group>"; }; 734FBA840EB3A40300CD7122 /* NonaOptionsDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NonaOptionsDialog.h; sourceTree = "<group>"; }; 736FD2C80DA158A2009A47C2 /* tca_correct.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = tca_correct.cpp; sourceTree = "<group>"; }; - 739CADAA0EC86B30002FD3AF /* celeste.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = celeste.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 737E1C180EC9EC0300BA4D9B /* hugin_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hugin_config.h; sourceTree = "<group>"; }; + 739CADAA0EC86B30002FD3AF /* celeste Framework.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "celeste Framework.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 739CADAE0EC86B30002FD3AF /* celeste Framework-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "celeste Framework-Info.plist"; sourceTree = "<group>"; }; 739CADC00EC86F12002FD3AF /* celeste2 Framework-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "celeste2 Framework-Info.plist"; sourceTree = "<group>"; }; 739F846B0EC75402004771D6 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; }; @@ -2262,6 +2286,7 @@ 73EAB53A0E86CF130020D514 /* IlmBase.pc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IlmBase.pc; sourceTree = "<group>"; }; 73EAB53B0E86CF130020D514 /* OpenEXR.pc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = OpenEXR.pc; sourceTree = "<group>"; }; 73EAB5400E86CF130020D514 /* setup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setup.h; sourceTree = "<group>"; }; + 73EBC0900EC9E0B20068B821 /* celeste_standalone */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = celeste_standalone; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -2751,6 +2776,26 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 73EBC08E0EC9E0B20068B821 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 73EBC0AD0EC9E3630068B821 /* libpano13.dylib in Frameworks */, + 73EBC0AC0EC9E3540068B821 /* libboost_thread.dylib in Frameworks */, + 73EBC0A90EC9E3260068B821 /* libexiv2.a in Frameworks */, + 73EBC0A20EC9E2ED0068B821 /* HuginVigraImpex.framework in Frameworks */, + 73EBC0A30EC9E2ED0068B821 /* libceleste.dylib in Frameworks */, + 73EBC0990EC9E2BD0068B821 /* libHalf.dylib in Frameworks */, + 73EBC09A0EC9E2BD0068B821 /* libIex.dylib in Frameworks */, + 73EBC09B0EC9E2BD0068B821 /* libIlmImf.dylib in Frameworks */, + 73EBC09C0EC9E2BD0068B821 /* libIlmThread.dylib in Frameworks */, + 73EBC09D0EC9E2BD0068B821 /* libImath.dylib in Frameworks */, + 73EBC09E0EC9E2BD0068B821 /* libjpeg.dylib in Frameworks */, + 73EBC09F0EC9E2BD0068B821 /* libpng.dylib in Frameworks */, + 73EBC0A00EC9E2BD0068B821 /* libtiff.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -3450,6 +3495,7 @@ 579D36060C0EFD4D00BFC58C /* src */ = { isa = PBXGroup; children = ( + 737E1C180EC9EC0300BA4D9B /* hugin_config.h */, 734BDF610EB8EC7B007EBA09 /* PTBatcher */, 734FB8DC0EB38B9400CD7122 /* celeste */, 57D5DCD6073FD86D0027E52F /* hugin_config_mac.h */, @@ -3812,9 +3858,10 @@ 573B8F3E067BA2EB00B7B355 /* Product */, 734FB8D00EB38AB600CD7122 /* libceleste.dylib */, 734BDF5B0EB8EC19007EBA09 /* PTBatcher */, - 739CADAA0EC86B30002FD3AF /* celeste.framework */, + 739CADAA0EC86B30002FD3AF /* celeste Framework.framework */, 739CADAE0EC86B30002FD3AF /* celeste Framework-Info.plist */, 739CADC00EC86F12002FD3AF /* celeste2 Framework-Info.plist */, + 73EBC0900EC9E0B20068B821 /* celeste_standalone */, ); sourceTree = "<group>"; }; @@ -4428,6 +4475,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 73EBC0CF0EC9E4A00068B821 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 737E1C190EC9EC0300BA4D9B /* hugin_config.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -4987,7 +5042,7 @@ ); name = "celeste Framework"; productName = "celeste Framework"; - productReference = 739CADAA0EC86B30002FD3AF /* celeste.framework */; + productReference = 739CADAA0EC86B30002FD3AF /* celeste Framework.framework */; productType = "com.apple.product-type.framework"; }; 73C958F40DA2C9DB00E19110 /* tca_correct static */ = { @@ -5025,6 +5080,24 @@ productReference = 73E79F300D674EAC00C07126 /* align_image_stack */; productType = "com.apple.product-type.tool"; }; + 73EBC08F0EC9E0B20068B821 /* celeste_standalone */ = { + isa = PBXNativeTarget; + buildConfigurationList = 73EBC0970EC9E0D70068B821 /* Build configuration list for PBXNativeTarget "celeste_standalone" */; + buildPhases = ( + 73EBC08D0EC9E0B20068B821 /* Sources */, + 73EBC08E0EC9E0B20068B821 /* Frameworks */, + 73EBC0CF0EC9E4A00068B821 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 737E1C200EC9EC5100BA4D9B /* PBXTargetDependency */, + ); + name = celeste_standalone; + productName = celeste_standalone; + productReference = 73EBC0900EC9E0B20068B821 /* celeste_standalone */; + productType = "com.apple.product-type.tool"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -5103,6 +5176,7 @@ 73E79F0C0D674EAC00C07126 /* align_image_stack dynamic */, 7332AE910D8D4986002BF5FF /* matchpoint dynamic */, 734BDF5A0EB8EC19007EBA09 /* PTBatcher */, + 73EBC08F0EC9E0B20068B821 /* celeste_standalone */, ); }; /* End PBXProject section */ @@ -5206,6 +5280,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 7394A2020EC8A8F000DCEE85 /* celeste.model in Resources */, 57E347780C4A9005006AA781 /* Hugin.icns in Resources */, 57E347790C4A9005006AA781 /* HuginFiles.icns in Resources */, 5769F8940D23AB7300A6AD01 /* HuginStitchProject.app in Resources */, @@ -5882,6 +5957,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 73EBC08D0EC9E0B20068B821 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 73EBC0980EC9E2230068B821 /* Main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -6170,6 +6253,11 @@ target = 576900A90D24D29300A6AD01 /* hugin_base Framework */; targetProxy = 7332AE950D8D4986002BF5FF /* PBXContainerItemProxy */; }; + 737E1C200EC9EC5100BA4D9B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 57C486290C3121E8002D79F1 /* configure */; + targetProxy = 737E1C1F0EC9EC5100BA4D9B /* PBXContainerItemProxy */; + }; 739F84FE0EC7803F004771D6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 5769FE370D24CFEC00A6AD01 /* vigra_impex Framework */; @@ -8163,7 +8251,7 @@ PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = celeste; PUBLIC_HEADERS_FOLDER_PATH = ""; - USER_HEADER_SEARCH_PATHS = "../src/foreign/vigra $(inherited)"; + USER_HEADER_SEARCH_PATHS = "$(inherited)"; ZERO_LINK = NO; }; name = Release; @@ -8364,6 +8452,84 @@ }; name = Release; }; + 73EBC0920EC9E0B30068B821 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/bin; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_2)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; + LIBRARY_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/../../ExternalPrograms/repository/lib-static\""; + PREBINDING = NO; + PRODUCT_NAME = celeste_standalone; + }; + name = Debug; + }; + 73EBC0930EC9E0B30068B821 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + INSTALL_PATH = /usr/local/bin; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_2)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; + LIBRARY_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/../../ExternalPrograms/repository/lib-static\""; + PREBINDING = NO; + PRODUCT_NAME = celeste_standalone; + }; + name = Development; + }; + 73EBC0940EC9E0B30068B821 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + GCC_MODEL_TUNING = ""; + HEADER_SEARCH_PATHS = ( + /usr/include, + "$(REPOSITORY_DIR)/include", + "$(REPOSITORY_DIR)/include/OpenEXR", + ../src/foreign/vigra, + ../src/celeste, + ); + INSTALL_PATH = ""; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + "$(LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2)", + ); + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/ExternalPrograms/repository/lib\""; + LIBRARY_SEARCH_PATHS_QUOTED_FOR_TARGET_2 = "\"$(SRCROOT)/../../ExternalPrograms/repository/lib-static\""; + OTHER_LDFLAGS = ( + "-flat_namespace", + "-undefined", + suppress, + ); + PREBINDING = NO; + PRODUCT_NAME = celeste_standalone; + ZERO_LINK = NO; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -8817,6 +8983,16 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 73EBC0970EC9E0D70068B821 /* Build configuration list for PBXNativeTarget "celeste_standalone" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 73EBC0920EC9E0B30068B821 /* Debug */, + 73EBC0930EC9E0B30068B821 /* Development */, + 73EBC0940EC9E0B30068B821 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 57FC3AC10675E43600C3E0AC /* Project object */; Modified: hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp 2008-11-10 22:48:11 UTC (rev 3542) +++ hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp 2008-11-11 18:51:02 UTC (rev 3543) @@ -28,6 +28,8 @@ #include "panoinc_WX.h" #include "panoinc.h" +#include "base_wx/platform.h" + #include "common/stl_utils.h" #include <map> @@ -413,13 +415,22 @@ setlocale(LC_NUMERIC,"C"); - char buf[100]; - strcpy( buf, INSTALL_XRC_DIR ); - // Will this slash work on Windows? - strcat( buf, "data/"); - strcat( buf, HUGIN_CELESTE_MODEL); - string modelfile = buf; - + // SVM model file + #if __WXMAC__ && defined MAC_SELF_CONTAINED_BUNDLE + wxString strFile; + char buf[100]; + strFile = MacGetPathToBundledResourceFile(CFSTR("celeste.model")); + strcpy( buf, (const char*) strFile.mb_str(wxConvUTF8)); + string modelfile = buf; + #else + char buf[100]; + strcpy( buf, INSTALL_XRC_DIR ); + // Will this slash work on Windows? + strcat( buf, "data/"); + strcat( buf, HUGIN_CELESTE_MODEL); + string modelfile = buf; + #endif + // SVM model file if ( wxFile::Exists(wxString::FromAscii(buf)) ) { Modified: hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp 2008-11-10 22:48:11 UTC (rev 3542) +++ hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp 2008-11-11 18:51:02 UTC (rev 3543) @@ -53,7 +53,7 @@ #include "vigra_ext/Correlation.h" // Celeste header -#include "CelesteDebug.h" +//#include "CelesteDebug.h" #include "CelesteGlobals.h" #include "Utilities.h" #include <stdio.h> @@ -2185,13 +2185,20 @@ vector<double> svm_responses; // SVM model file - char buf[100]; - strcpy( buf, INSTALL_XRC_DIR ); - // Will this slash work on Windows? - strcat( buf, "data/"); - strcat( buf, HUGIN_CELESTE_MODEL); - string modelfile = buf; - + #if __WXMAC__ && defined MAC_SELF_CONTAINED_BUNDLE + wxString strFile; + char buf[100]; + strFile = MacGetPathToBundledResourceFile(CFSTR("celeste.model")); + strcpy( buf, (const char*) strFile.mb_str(wxConvUTF8)); + string modelfile = buf; + #else + char buf[100]; + strcpy( buf, INSTALL_XRC_DIR ); + // Will this slash work on Windows? + strcat( buf, "data/"); + strcat( buf, HUGIN_CELESTE_MODEL); + string modelfile = buf; + #endif // Windows debug //cout << "Celeste: Checking model file exists" << endl; //wxMessageBox(wxString::Format(_("Celeste: Checking model file exists")), _("Celeste"), wxICON_EXCLAMATION, this); @@ -2218,8 +2225,8 @@ //wxMessageBox(wxString::Format(_("Celeste: Running get_gabor_response function")), _("Celeste"), wxICON_EXCLAMATION, this); - //get_gabor_response(imagefile,mask,modelfile,threshold,mask_format,svm_responses); - get_gabor_response_debug(imagefile,mask,modelfile,threshold,mask_format,svm_responses); + get_gabor_response(imagefile,mask,modelfile,threshold,mask_format,svm_responses); + //get_gabor_response_debug(imagefile,mask,modelfile,threshold,mask_format,svm_responses); // Windows debug Modified: hugin/trunk/src/hugin1/hugin/ImagesPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/ImagesPanel.cpp 2008-11-10 22:48:11 UTC (rev 3542) +++ hugin/trunk/src/hugin1/hugin/ImagesPanel.cpp 2008-11-11 18:51:02 UTC (rev 3543) @@ -29,6 +29,8 @@ #include "panoinc_WX.h" #include "panoinc.h" +#include "base_wx/platform.h" + #include <map> //#include <vigra_ext/PointMatching.h> @@ -733,13 +735,22 @@ char * old_locale = setlocale(LC_NUMERIC,NULL); setlocale(LC_NUMERIC,"C"); - char buf[100]; - strcpy( buf, INSTALL_XRC_DIR ); - // Will this slash work on Windows? - strcat( buf, "data/"); - strcat( buf, HUGIN_CELESTE_MODEL); - string modelfile = buf; - + // SVM model file + #if __WXMAC__ && defined MAC_SELF_CONTAINED_BUNDLE + wxString strFile; + char buf[100]; + strFile = MacGetPathToBundledResourceFile(CFSTR("celeste.model")); + strcpy( buf, (const char*) strFile.mb_str(wxConvUTF8)); + string modelfile = buf; + #else + char buf[100]; + strcpy( buf, INSTALL_XRC_DIR ); + // Will this slash work on Windows? + strcat( buf, "data/"); + strcat( buf, HUGIN_CELESTE_MODEL); + string modelfile = buf; + #endif + //progress.increaseProgress(1.0, std::string(wxString(_("Running Celeste")).mb_str(wxConvLocal))); for (UIntSet::const_iterator itr = selImg.begin(); itr != selImg.end(); ++itr) { Modified: hugin/trunk/src/hugin_config_mac.h =================================================================== --- hugin/trunk/src/hugin_config_mac.h 2008-11-10 22:48:11 UTC (rev 3542) +++ hugin/trunk/src/hugin_config_mac.h 2008-11-11 18:51:02 UTC (rev 3543) @@ -66,7 +66,9 @@ /* Define if you have Panotools library (pano12) */ //#define HasPANO 1 #define HasPANO13 1 +#define PANO13_FOUND 1 + /* Define if you have JPEG library */ #define HasJPEG 1 @@ -89,4 +91,4 @@ #define MAC_SELF_CONTAINED_BUNDLE 1 // Exiv2 -#define HUGIN_USE_EXIV2 +#define HUGIN_USE_EXIV2 1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-02-02 20:46:10
|
Revision: 3622 http://hugin.svn.sourceforge.net/hugin/?rev=3622&view=rev Author: brunopostle Date: 2009-02-02 20:46:05 +0000 (Mon, 02 Feb 2009) Log Message: ----------- add man pages (Cyril Brulebois) Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/doc/CMakeLists.txt hugin/trunk/doc/fulla.1 Added Paths: ----------- hugin/trunk/doc/Makefile.pod2man hugin/trunk/doc/align_image_stack.1 hugin/trunk/doc/autooptimiser.1 hugin/trunk/doc/hugin.1 hugin/trunk/doc/hugin_hdrmerge.1 hugin/trunk/doc/hugin_stitch_project.1 hugin/trunk/doc/nona.1 hugin/trunk/doc/nona_gui.1 hugin/trunk/doc/vig_optimize.1 Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2009-02-01 21:30:38 UTC (rev 3621) +++ hugin/trunk/CMakeLists.txt 2009-02-02 20:46:05 UTC (rev 3622) @@ -168,13 +168,10 @@ ## SET(Boost_LIB_SUFFIX_DEBUG gd) -FIND_PACKAGE(Boost REQUIRED thread graph) +FIND_PACKAGE(Boost REQUIRED thread) IF (NOT Boost_thread_FOUND) MESSAGE(FATAL_ERROR "boost thread library not found. If it is installed with a\nunrecognized suffix, specify it with -DBoost_LIB_SUFFIX=<suffix>") ENDIF (NOT Boost_thread_FOUND) -IF (NOT Boost_graph_FOUND) - MESSAGE(FATAL_ERROR "boost graph library not found. If it is installed with a\nunrecognized suffix, specify it with -DBoost_LIB_SUFFIX=<suffix>") -ENDIF (NOT Boost_graph_FOUND) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) Modified: hugin/trunk/doc/CMakeLists.txt =================================================================== --- hugin/trunk/doc/CMakeLists.txt 2009-02-01 21:30:38 UTC (rev 3621) +++ hugin/trunk/doc/CMakeLists.txt 2009-02-02 20:46:05 UTC (rev 3622) @@ -3,7 +3,7 @@ INSTALL(FILES fulla.html DESTINATION doc) INSTALL(FILES nona.txt DESTINATION doc) ELSE (WIN32) -INSTALL(FILES fulla.1 DESTINATION share/man/man1) +INSTALL(FILES align_image_stack.1 autooptimiser.1 fulla.1 hugin.1 hugin_hdrmerge.1 hugin_stitch_project.1 nona.1 nona_gui.1 vig_optimize.1 DESTINATION share/man/man1) INSTALL(FILES nona.txt DESTINATION share/hugin) ENDIF(WIN32) Added: hugin/trunk/doc/Makefile.pod2man =================================================================== --- hugin/trunk/doc/Makefile.pod2man (rev 0) +++ hugin/trunk/doc/Makefile.pod2man 2009-02-02 20:46:05 UTC (rev 3622) @@ -0,0 +1,10 @@ +# don't know how to integrate this with cmake, so manually rerun this Makefile +# after making any .pod alterations and commit the resulting man(1) files. + +man_MANS = align_image_stack.1 autooptimiser.1 fulla.1 hugin_hdrmerge.1 \ + hugin.1 hugin_stitch_project.1 nona_gui.1 nona.1 vig_optimize.1 + +all: $(man_MANS) + +%.1: %.pod + pod2man --center HUGIN $< $@ Added: hugin/trunk/doc/align_image_stack.1 =================================================================== --- hugin/trunk/doc/align_image_stack.1 (rev 0) +++ hugin/trunk/doc/align_image_stack.1 2009-02-02 20:46:05 UTC (rev 3622) @@ -0,0 +1,201 @@ +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "ALIGN_IMAGE_STACK 1" +.TH ALIGN_IMAGE_STACK 1 "2008-02-22" "perl v5.8.5" "HUGIN" +.SH "NAME" +align_image_stack \- Align overlapping images for HDR or focus stack creation +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBalign_image_stack\fR [options] \fIinput files\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +align_image_stack is used for the alignment of slightly misaligned images. When several +differently exposed images are taken in the process of creating a High Dynamic Range +image, the images are not perfectly aligned, and the quality of the \s-1HDR\s0 image created +will suffer from this. align_image_stack uses the tools available to hugin to optimize +the roll, pitch and yaw, as well as some parameters of the lens geometry, to align the +images +.SH "OPTIONS" +.IX Header "OPTIONS" +Modes of operation: +.IP "\fB\-p\fR \fIfile\fR" 4 +.IX Item "-p file" +Output .pto file (useful for debugging, or further refinement) +.IP "\fB\-a\fR \fIprefix\fR" 4 +.IX Item "-a prefix" +Output aligned images as prefix_xxxx.tif +.IP "\fB\-o\fR \fIoutput\fR" 4 +.IX Item "-o output" +Align images and merge them to \s-1HDR\s0, generate output.hdr +.PP +Modifiers: +.IP "\fB\-v\fR" 4 +.IX Item "-v" +Verbose, print progress messages. Repeat for higher verbosity +.IP "\fB\-e\fR" 4 +.IX Item "-e" +Assume input images are full frame fish eye (default: rectilinear) +.IP "\fB\-t\fR \fInum\fR" 4 +.IX Item "-t num" +Remove all control points with an error higher than num pixels +(default: 3) +.IP "\fB\-f\fR \fI\s-1HFOV\s0\fR" 4 +.IX Item "-f HFOV" +Approximate horizontal field of view of input images, use if \s-1EXIF\s0 info +not complete +.IP "\fB\-m\fR" 4 +.IX Item "-m" +Optimize field of view for all images, except for first. Useful for +aligning focus stacks with slightly different magnification. +.IP "\fB\-c\fR \fInum\fR" 4 +.IX Item "-c num" +Number of control points (per grid) to create between adjacent images +(default: 8) +.IP "\fB\-l\fR" 4 +.IX Item "-l" +Assume linear input files +.IP "\fB\-s\fR \fIscale\fR" 4 +.IX Item "-s scale" +Scale down image by 2^scale (default: 1 [2x downsampling]) +.IP "\fB\-g\fR \fIgsize\fR" 4 +.IX Item "-g gsize" +Break image into a rectangular grid (gsize x gsize) and attempt to +find num control points in each section (default: 5 [5x5 grid]) +.IP "\fB\-h\fR" 4 +.IX Item "-h" +Display help summary. +.SH "AUTHORS" +.IX Header "AUTHORS" +Written by Pablo d'Angelo. Also contains contributions from Douglas Wilkins, Ippei Ukai, Ed Halley, Bruno Postle, Gerry Patterson and Brent Townshend. +.PP +This manpage was written by Cyril Brulebois +<cyril.brulebois@enst\-bretagne.fr> and is licensed under the same +terms as the hugin package itself. Added: hugin/trunk/doc/autooptimiser.1 =================================================================== --- hugin/trunk/doc/autooptimiser.1 (rev 0) +++ hugin/trunk/doc/autooptimiser.1 2009-02-02 20:46:05 UTC (rev 3622) @@ -0,0 +1,188 @@ +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "AUTOOPTIMISER 1" +.TH AUTOOPTIMISER 1 "2008-07-29" "perl v5.8.5" "HUGIN" +.SH "NAME" +autooptimiser \- Optimize image positions +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBautooptimiser\fR [options] \fIproject.pto\fR +.PP +(\fB\-\fR can be specified to read the project from stdio.) +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\s-1TODO\s0. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-o\fR \fIfile.pto\fR" 4 +.IX Item "-o file.pto" +Output file. If obmitted, stdout is used. +.PP +Optimisation options (if not specified, no optimisation takes place): +.IP "\fB\-a\fR" 4 +.IX Item "-a" +Auto align mode, includes various optimisation stages, depending on +the amount and distribution of the control points +.IP "\fB\-p\fR" 4 +.IX Item "-p" +Pairwise optimisation of yaw, pitch and roll, starting from first +image +.IP "\fB\-n\fR" 4 +.IX Item "-n" +Optimize parameters specified in script file (like PToptimizer). +.PP +Postprocessing options: +.IP "\fB\-l\fR" 4 +.IX Item "-l" +Level horizon (works best for horizontal panos) +.IP "\fB\-s\fR" 4 +.IX Item "-s" +Automatically select a suitable output projection and size +.PP +Other options: +.IP "\fB\-q\fR" 4 +.IX Item "-q" +Quiet operation (no progress is reported) +.IP "\fB\-v\fR \fI\s-1HFOV\s0\fR" 4 +.IX Item "-v HFOV" +Specify horizontal field of view of input images. Used if the .pto +file contains invalid \s-1HFOV\s0 values (autopano\-SIFT writes .pto files +with invalid \s-1HFOV\s0) +.PP +When \fB\-a\fR, \fB\-l\fR, and \fB\-s\fR options are used together, an operation similar +to the one of the \*(L"Align\*(R" button in hugin is performed. +.SH "AUTHORS" +.IX Header "AUTHORS" +Written by Pablo d'Angelo. Also contains contributions from Douglas Wilkins, Ippei Ukai, Ed Halley, Bruno Postle, Gerry Patterson and Brent Townshend. +.PP +This manpage was written by Cyril Brulebois +<cyril.brulebois@enst\-bretagne.fr> and is licensed under the same +terms as the hugin package itself. Modified: hugin/trunk/doc/fulla.1 =================================================================== --- hugin/trunk/doc/fulla.1 2009-02-01 21:30:38 UTC (rev 3621) +++ hugin/trunk/doc/fulla.1 2009-02-02 20:46:05 UTC (rev 3622) @@ -1,104 +1,253 @@ -.\" Process this file with -.\" groff -man -Tascii foo.1 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 .\" -.TH FULLA 1 "MAY 2006" hugin "User Manual" -.SH NAME -fulla \- Perform vignetting, radial distortion and chromatic abberation correction -.SH SYNOPSIS -.B fulla -.I [options] -.I input files -.SH DESCRIPTION +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "FULLA 1" +.TH FULLA 1 "2008-02-07" "perl v5.8.5" "HUGIN" +.SH "NAME" +fulla \- Correct lens distortion, vignetting and chromatic aberration +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBfulla\fR [options] \fIinputfile(s)\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" Apply radial or flatfield vignetting correction as well as geometrical radial distortion and transversal chromatic abberation correction. - +.PP fulla can be used to batch correct a large number of files. Radial distortion coefficients can be read from a PTLens database (only database version 4.2 is supported). - +.PP Vignetting correction is done the same way as described in the nona script file documentation. Vignetting correction can be done based on a flatfield or a radial scaling. - +.PP Vignetting correction by flatfield division: I = I / c, c = flatfield / mean(flatfield) - +.PP Radial vignetting correction: I = I / c, c = a + b*r^2 + c*r^4 + d*r^6 - -Correct vignetting by addition, rather than by division: - I = I + c - - - -The radial correction is identical to the one implemented by panotools: - +.PP +The radial distortion correction is identical to the one implemented by panotools: +.PP r_new = a*r^4 + b*r^3 + c*r^2 + d*r [1] - -Since transversal chromatic aberations (TCA) leads to differently scaled objects in the +.PP +Since transversal chromatic aberations (\s-1TCA\s0) leads to differently scaled objects in the red, green and blue channel, it can be corrected by scaling the red and blue channel so that they match the green channel. Most applications, like Photoshop or Picture Window Pro -offer TCA correction by linear scaling. This is equal to varying the d parameter in equation [1]. - +offer \s-1TCA\s0 correction by linear scaling. This is equal to varying the d parameter in equation [1]. +.PP See http://hugin.sf.net/tutorials/tca for a method to determine these parameters. - -.SH OPTIONS -.TP -.BI \-o " output filename" -Specify the output filename. If more than one input image is given, this string will be used as suffix (default: _corr) -.TP -.BI \-g " a:b:c:d" -Radial distortion coefficient for all channels, (a, b, c, d). -By default no correction is done. -.TP -.BI \-b " a:b:c:d" -Radial distortion coefficents for blue channel, (a, b, c, d). -this is applied after the global distortion correction(supplied by -g). -.TP -.BI \-r " a:b:c:d" -Radial distortion coefficents for red channel, (a, b, c, d). -this is applied after the global distortion correction(supplied by -g). -.TP -.BI \-f " filename" -Filename of the flatfield image. Enables vignetting correction by flatfield -division -.TP -.BI \-c " a:b:c:d" -radial vignetting correction by division: -.TP -.B \-a -Correct vignetting by addition, rather than by division -I = I + c -.TP -.B \-p +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-g\fR \fIa:b:c:d\fR" 4 +.IX Item "-g a:b:c:d" +Radial distortion coefficient for all channels, (a, b, c, d) +.IP "\fB\-b\fR \fIa:b:c:d\fR" 4 +.IX Item "-b a:b:c:d" +Radial distortion coefficents for blue channel, (a, b, c, d). This is +applied on top of the \fB\-g\fR distortion coefficients, use for \s-1TCA\s0 corr +.IP "\fB\-r\fR \fIa:b:c:d\fR" 4 +.IX Item "-r a:b:c:d" +Radial distortion coefficents for red channel, (a, b, c, d). This is +applied on top of the \fB\-g\fR distortion coefficients, use for \s-1TCA\s0 corr +.IP "\fB\-p\fR" 4 +.IX Item "-p" Try to read radial distortion coefficients (usually supplied -using -g) from the PTLens database. The environment variable PTLENS_PROFILE +using \-g) from the PTLens database. The environment variable \s-1PTLENS_PROFILE\s0 should point to the profile.txt file. Since newer version of the PTLens database are incompatible with fulla, download the PTLens database from the hugin sourceforge website instead: http://www.sf.net/projects/hugin -.TP -.BI \-m " Manufacturer" -Camera manufacturer, for PTLens database query. EXIF data inside jpg files is read, if this +.IP "\fB\-m\fR \fICanon\fR" 4 +.IX Item "-m Canon" +Camera manufacturer, for PTLens database query. \s-1EXIF\s0 data inside jpg files is read, if this option is not given -.TP -.BI \-n " CameraName" -Camera name, for PTLens database query. EXIF data inside jpg files is read, if this +.IP "\fB\-n\fR \fICamera\fR" 4 +.IX Item "-n Camera" +Camera name, for PTLens database query. \s-1EXIF\s0 data inside jpg files is read, if this option is not given. -.TP -.BI \-l " LensName" -Lens name, for PTLens database query. If not specified, a list of +.IP "\fB\-l\fR \fILens\fR" 4 +.IX Item "-l Lens" +Lens name, for PTLens database query if not specified, a list of possible lenses is displayed -.TP -.BI \-t " n" +.IP "\fB\-d\fR \fI50\fR" 4 +.IX Item "-d 50" +Specify focal length in mm, for PTLens database query. \s-1EXIF\s0 data inside jpg files is read, if this +option is not given. +.IP "\fB\-s\fR" 4 +.IX Item "-s" +Do not rescale the image to avoid black borders. +.IP "\fB\-f\fR \fIfilename\fR" 4 +.IX Item "-f filename" +Vignetting correction by flatfield division +.Sp +.Vb 1 +\& I = I / c, c = flatfield / mean(flatfield) +.Ve +.IP "\fB\-c\fR \fIa:b:c:d\fR" 4 +.IX Item "-c a:b:c:d" +Radial vignetting correction by division: +.Sp +.Vb 1 +\& I = I / c, c = a + b*r^2 + c*r^4 + d*r^6 +.Ve +.IP "\fB\-i\fR \fIvalue\fR" 4 +.IX Item "-i value" +Gamma of input data. used for gamma correction before and after +flatfield correction +.IP "\fB\-t\fR \fIn\fR" 4 +.IX Item "-t n" Number of threads that should be used during processing -.TP -.B \-v -Verbose execution -.TP -.B \-h -Display help text - -.SH BUGS -No bugs known, if you find any, please send a bug report to me. I will try to -fix it. -.SH AUTHOR -Pablo d Angelo <pablo dot dangelo at web dot de> -.SH "SEE ALSO" -.BR nona (1), hugin(1), clens(1) +.IP "\fB\-h\fR" 4 +.IX Item "-h" +Display help summary. +.IP "\fB\-o\fR \fIname\fR" 4 +.IX Item "-o name" +Set output filename. If more than one image is given, the name will be +uses as suffix (default suffix: _corr) +.IP "\fB\-e\fR \fIvalue\fR" 4 +.IX Item "-e value" +Compression of the output files +.RS 4 +.IP "For jpeg output: 0\-100" 4 +.IX Item "For jpeg output: 0-100" +.PD 0 +.IP "For tiff output: \s-1DEFLATE\s0, \s-1LZW\s0" 4 +.IX Item "For tiff output: DEFLATE, LZW" +.RE +.RS 4 +.RE +.IP "\fB\-v\fR" 4 +.IX Item "-v" +.PD +Verbose +.SH "AUTHORS" +.IX Header "AUTHORS" +Written by Pablo d'Angelo. Also contains contributions from Douglas Wilkins, Ippei Ukai, Ed Halley, Bruno Postle, Gerry Patterson and Brent Townshend. +.PP +This manpage was written by Cyril Brulebois +<cyril.brulebois@enst\-bretagne.fr> and is licensed under the same +terms as the hugin package itself. Added: hugin/trunk/doc/hugin.1 =================================================================== --- hugin/trunk/doc/hugin.1 (rev 0) +++ hugin/trunk/doc/hugin.1 2009-02-02 20:46:05 UTC (rev 3622) @@ -0,0 +1,150 @@ +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "HUGIN 1" +.TH HUGIN 1 "2008-02-07" "perl v5.8.5" "HUGIN" +.SH "NAME" +hugin \- Hugin panorama creator +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBhugin\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\s-1TODO\s0. +.SH "OPTIONS" +.IX Header "OPTIONS" +\&\s-1TODO\s0. +.SH "AUTHORS" +.IX Header "AUTHORS" +Written by Pablo d'Angelo. Also contains contributions from Kai-Uwe Behrmann, Douglas Wilkins, Ippei Ukai, Ed Halley, Bruno Postle, Gerry Patterson and Brent Townshend. +.PP +This manpage was written by Cyril Brulebois +<cyril.brulebois@enst\-bretagne.fr> and is licensed under the same +terms as the hugin package itself. Added: hugin/trunk/doc/hugin_hdrmerge.1 =================================================================== --- hugin/trunk/doc/hugin_hdrmerge.1 (rev 0) +++ hugin/trunk/doc/hugin_hdrmerge.1 2009-02-02 20:46:05 UTC (rev 3622) @@ -0,0 +1,217 @@ +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "HUGIN_HDRMERGE 1" +.TH HUGIN_HDRMERGE 1 "2008-02-08" "perl v5.8.5" "HUGIN" +.SH "NAME" +hugin_hdrmerge \- Merge overlapping images +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBhugin_hdrmerge\fR [options] \fB\-o\fR \fIoutput.exr\fR \fIinput-files\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\s-1TODO\s0. +.SH "OPTIONS" +.IX Header "OPTIONS" +.IP "\fB\-o\fR \fIprefix\fR" 4 +.IX Item "-o prefix" +Output file +.IP "\fB\-m\fR \fImode\fR" 4 +.IX Item "-m mode" +Merge mode, can be one of: avg, avg_slow, khan (default), if avg, no +\&\fB\-i\fR, \fB\-s\fR, or \fB\-d\fR options apply +.IP "\fB\-i\fR \fIiter\fR" 4 +.IX Item "-i iter" +Number of iterations to execute (default is 1) +.IP "\fB\-c\fR" 4 +.IX Item "-c" +Only consider pixels that are defined in all images (avg mode only) +.IP "\fB\-s\fR \fIfile\fR" 4 +.IX Item "-s file" +Debug files to save each iteration, can be one of: +.RS 4 +.IP "a \- all debug files (can only be used alone)" 4 +.IX Item "a - all debug files (can only be used alone)" +.PD 0 +.IP "w \- calculated weights from each iteration" 4 +.IX Item "w - calculated weights from each iteration" +.IP "r \- result image from each iteration" 4 +.IX Item "r - result image from each iteration" +.IP "s \- source images before processing" 4 +.IX Item "s - source images before processing" +.RE +.RS 4 +.PD +.Sp +If verbose >= 3, all debug files are output unless specified +.RE +.IP "\fB\-a\fR \fIcalcs\fR" 4 +.IX Item "-a calcs" +Apply one or more advanced caculations, can be one or more of: +.RS 4 +.IP "b \- biasing weights logarithmically" 4 +.IX Item "b - biasing weights logarithmically" +.PD 0 +.IP "c \- choose pixels with heighest weight instead of averaging (overrides options \fB\-a\fR \fIb\fR and \fB\-a\fR \fId\fR)" 4 +.IX Item "c - choose pixels with heighest weight instead of averaging (overrides options -a b and -a d)" +.IP "d \- choose a pixel with the heighest weight instead of averaging when all pixel weights are within 10% of eachother" 4 +.IX Item "d - choose a pixel with the heighest weight instead of averaging when all pixel weights are within 10% of eachother" +.IP "h \- favor a high signal to noise ratio" 4 +.IX Item "h - favor a high signal to noise ratio" +.IP "i \- ignore alpha channel" 4 +.IX Item "i - ignore alpha channel" +.RE +.RS 4 +.RE +.IP "\fB\-e\fR" 4 +.IX Item "-e" +.PD +Export each initial weight to <input_file_paths>_iw.<ext> +.IP "\fB\-l\fR" 4 +.IX Item "-l" +Load a previously exported initial weight with respect to the input +file names +.Sp +\&\s-1NOTE:\s0 if both \fB\-e\fR and \fB\-l\fR options are on, the program will +calculate and save the initial weights, then wait until user indicates +that it can continue by loading the previously saved weights +.IP "\fB\-v\fR" 4 +.IX Item "-v" +Verbose, print progress messages, repeat for even more verbose output +.IP "\fB\-h\fR" 4 +.IX Item "-h" +Display help summary. +.SH "AUTHORS" +.IX Header "AUTHORS" +Written by Jing Jin. Also contains contributions from Pablo d'Angelo, Douglas Wilkins, Ippei Ukai, Ed Halley, Bruno Postle, Gerry Patterson and Brent Townshend. +.PP +This manpage was written by Cyril Brulebois +<cyril.brulebois@enst\-bretagne.fr> and is licensed under the same +terms as the hugin package itself. Added: hugin/trunk/doc/hugin_stitch_project.1 =================================================================== --- hugin/trunk/doc/hugin_stitch_project.1 (rev 0) +++ hugin/trunk/doc/hugin_stitch_project.1 2009-02-02 20:46:05 UTC (rev 3622) @@ -0,0 +1,150 @@ +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "HUGIN_STITCH_PROJECT 1" +.TH HUGIN_STITCH_PROJECT 1 "2008-02-07" "perl v5.8.5" "HUGIN" +.SH "NAME" +hugin_stitch_project \- Hugin batch stitcher +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBhugin_stitch_project\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\s-1TODO\s0. +.SH "OPTIONS" +.IX Header "OPTIONS" +\&\s-1TODO\s0. +.SH "AUTHORS" +.IX Header "AUTHORS" +Written by Pablo d'Angelo. Also contains contributions from Douglas Wilkins, Ippei Ukai, Ed Halley, Bruno Postle, Gerry Patterson and Brent Townshend. +.PP +This manpage was written by Cyril Brulebois +<cyril.brulebois@enst\-bretagne.fr> and is licensed under the same +terms as the hugin package itself. Added: hugin/trunk/doc/nona.1 =================================================================== --- hugin/trunk/doc/nona.1 (rev 0) +++ hugin/trunk/doc/nona.1 2009-02-02 20:46:05 UTC (rev 3622) @@ -0,0 +1,232 @@ +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "NONA 1" +.TH NONA 1 "2008-02-07" "perl v5.8.5" "HUGIN" +.SH "NAME" +nona \- Stitch a panorama image +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBnona\fR [options] \fB\-o\fR \fIoutput\fR \fIproject_file\fR (image files) +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\fBnona\fR uses the transform function from PanoTools, the stitching +itself is quite simple, no seam feathering is done. +.PP +Only the non-antialiasing interpolators of panotools are supported. +.PP +The following output formats (\fBn\fR option of panotools \fBp\fR script +line) are supported: +.IP "\s-1JPG\s0, \s-1TIFF\s0, \s-1PNG\s0 : Single image formats without feathered blending" 4 +.IX Item "JPG, TIFF, PNG : Single image formats without feathered blending" +.PD 0 +.IP "TIFF_m : multiple tiff files" 4 +.IX Item "TIFF_m : multiple tiff files" +.IP "TIFF_multilayer : Multilayer tiff files, readable by The Gimp 2.0" 4 +.IX Item "TIFF_multilayer : Multilayer tiff files, readable by The Gimp 2.0" +.PD +.SH "OPTIONS" +.IX Header "OPTIONS" +General options: +.IP "\fB\-c\fR" 4 +.IX Item "-c" +Create coordinate images (only TIFF_m output) +.IP "\fB\-v\fR" 4 +.IX Item "-v" +Quiet, do not output progress indicators +.IP "\fB\-t\fR \fInum\fR" 4 +.IX Item "-t num" +Number of threads to be used (default: nr of available cores) +.PP +The following options can be used to override settings in the project file: +.IP "\fB\-i\fR \fInum\fR" 4 +.IX Item "-i num" +Remap only image with number num (can be specified multiple times) +.IP "\fB\-m\fR \fIstr\fR" 4 +.IX Item "-m str" +Set output file format (\s-1TIFF\s0, TIFF_m, TIFF_multilayer, \s-1EXR\s0, EXR_m) +.IP "\fB\-r\fR \fIldr\fR/\fIhdr\fR" 4 +.IX Item "-r ldr/hdr" +Set output mode: +.RS 4 +.IP "ldr \- keep original bit depth and response" 4 +.IX Item "ldr - keep original bit depth and response" +.PD 0 +.IP "hdr \- merge to hdr" 4 +.IX Item "hdr - merge to hdr" +.RE +.RS 4 +.RE +.IP "\fB\-e\fR \fIexposure\fR" 4 +.IX Item "-e exposure" +.PD +Set exposure for ldr mode +.IP "\fB\-p\fR \fI\s-1TYPE\s0\fR" 4 +.IX Item "-p TYPE" +Pixel type of the output. Can be one of: +.RS 4 +.IP "\s-1UINT8\s0 8 bit unsigned integer" 4 +.IX Item "UINT8 8 bit unsigned integer" +.PD 0 +.IP "\s-1UINT16\s0 16 bit unsigned integer" 4 +.IX Item "UINT16 16 bit unsigned integer" +.IP "\s-1INT16\s0 16 bit signed integer" 4 +.IX Item "INT16 16 bit signed integer" +.IP "\s-1UINT32\s0 32 bit unsigned integer" 4 +.IX Item "UINT32 32 bit unsigned integer" +.IP "\s-1INT32\s0 32 bit signed integer" 4 +.IX Item "INT32 32 bit signed integer" +.IP "\s-1FLOAT\s0 32 bit floating point" 4 +.IX Item "FLOAT 32 bit floating point" +.RE +.RS 4 +.RE +.IP "\fB\-z\fR" 4 +.IX Item "-z" +.PD +Set compression type. Possible options for tiff output: +.RS 4 +.IP "\s-1NONE\s0 no compression" 4 +.IX Item "NONE no compression" +.PD 0 +.IP "\s-1LZW\s0 lzw compression" 4 +.IX Item "LZW lzw compression" +.IP "\s-1DEFLATE\s0 deflate compression" 4 +.IX Item "DEFLATE deflate compression" +.RE +.RS 4 +.PD +.SH "AUTHORS" +.IX Header "AUTHORS" +Written by Pablo d'Angelo. Also contains contributions from Douglas Wilkins, Ippei Ukai, Ed Halley, Bruno Postle, Gerry Patterson and Brent Townshend. +.Sp +This manpage was written by Cyril Brulebois +<cyril.brulebois@enst\-bretagne.fr> and is licensed under the same +terms as the hugin package itself. Added: hugin/trunk/doc/nona_gui.1 =================================================================== --- hugin/trunk/doc/nona_gui.1 (rev 0) +++ hugin/trunk/doc/nona_gui.1 2009-02-02 20:46:05 UTC (rev 3622) @@ -0,0 +1,150 @@ +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "NONA_GUI 1" +.TH NONA_GUI 1 "2008-02-07" "perl v5.8.5" "HUGIN" +.SH "NAME" +nona_gui \- Graphical interface for nona +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBnona_gui\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\s-1TODO\s0. +.SH "OPTIONS" +.IX Header "OPTIONS" +\&\s-1TODO\s0. +.SH "AUTHORS" +.IX Header "AUTHORS" +Written by Pablo d'Angelo. Also contains contributions from Douglas Wilkins, Ippei Ukai, Ed Halley, Bruno Postle, Gerry Patterson and Brent Townshend. +.PP +This manpage was written by Cyril Brulebois +<cyril.brulebois@enst\-bretagne.fr> and is licensed under the same +terms as the hugin package itself. Added: hugin/trunk/doc/vig_optimize.1 =================================================================== --- hugin/trunk/doc/vig_optimize.1 (rev 0) +++ hugin/trunk/doc/vig_optimize.1 2009-02-02 20:46:05 UTC (rev 3622) @@ -0,0 +1,176 @@ +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sh \" Subsection heading +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. | will give a +.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to +.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' +.\" expand to `' in nroff, nothing in troff, for use with C<>. +.tr \(*W-|\(bv\*(Tr +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +'br\} +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. nr % 0 +. rr F +.\} +.\" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.hy 0 +.if n .na +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "VIG_OPTIMIZE 1" +.TH VIG_OPTIMIZE 1 "2008-02-07" "perl v5.8.5" "HUGIN" +.SH "NAME" +vig_optimize \- Try to determine the radial vignetting +.SH "SYNOPSIS" +.IX Header "SYNOPSIS" +\&\fBvig_optimize\fR [options] \fB\-o\fR \fIoutput.pto\fR \fIinput.pto\fR +.SH "DESCRIPTION" +.IX Header "DESCRIPTION" +\&\s-1TODO\s0. +.SH "OPTIONS" +.IX Header "OPTIONS" +General options: +.IP "\fB\-o\fR \fIfile\fR" 4 +.IX Item "-o file" +Write results to output project +.IP "\fB\-v\fR" 4 +.IX Item "-v" +Verbose, print progress messages +.IP "\fB\-p\fR \fIn\fR" 4 +.IX Item "-p n" +Number of points to extract +.IP "\fB\-r\fR" 4 +.IX Item "-r" +Extract random point (faster, but less accurate) +.IP "\fB\-s\fR \fIlevel\fR" 4 +.IX Item "-s level" +Work on downscaled images, every step halfs width and height +.IP "\fB\-h\fR" 4 +.IX Item "-h" +Display help summary. +.PP +Expert and debugging options: +.IP "\fB\-i\fR \fIfile\fR" 4 +.IX Item "-i file" +Read corresponding points from file +.IP "\fB\-w\fR \fIfile\fR" 4 +.IX Item "-w file" +Dump... [truncated message content] |
From: <bru...@us...> - 2009-02-05 23:44:06
|
Revision: 3627 http://hugin.svn.sourceforge.net/hugin/?rev=3627&view=rev Author: brunopostle Date: 2009-02-05 23:44:01 +0000 (Thu, 05 Feb 2009) Log Message: ----------- housekeeping Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/ChangeLog Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2009-02-04 08:50:47 UTC (rev 3626) +++ hugin/trunk/CMakeLists.txt 2009-02-05 23:44:01 UTC (rev 3627) @@ -351,6 +351,7 @@ "\\\\.#" "/#" "/celeste/celeste_standalone$" +"/celeste/training/celeste_train$" "/tools/autooptimiser$" "/tools/fulla$" "/tools/nona$" Modified: hugin/trunk/ChangeLog =================================================================== --- hugin/trunk/ChangeLog 2009-02-04 08:50:47 UTC (rev 3626) +++ hugin/trunk/ChangeLog 2009-02-05 23:44:01 UTC (rev 3627) @@ -1,3 +1,969 @@ +2009-02-04 08:50 stativ + + * src/deghosting/hugin_hdrmerge.cpp, src/deghosting/khan.cpp, + src/deghosting/khan.h: Change changes from r3619. The -w option + is no longer used. Luminance images usage can now be disabled by + -a n. Also pass information about it not by string but by flags + in adv_opts. + +2009-02-03 20:49 brunopostle + + * src/hugin_base/appbase/ProgressDisplayOld.h: first gcc-4.4.0 fix, + probably there will be more... + +2009-02-02 23:31 brunopostle + + * src/hugin1/hugin/xrc/data/edit_add.png, + src/hugin1/hugin/xrc/data/edit_add.svg, + src/hugin1/hugin/xrc/data/filenew.png, + src/hugin1/hugin/xrc/data/filenew.svg, + src/hugin1/hugin/xrc/data/fileopen.png, + src/hugin1/hugin/xrc/data/fileopen.svg, + src/hugin1/hugin/xrc/data/filesave.png, + src/hugin1/hugin/xrc/data/filesave.svg, + src/hugin1/hugin/xrc/data/filesaveas.png, + src/hugin1/hugin/xrc/data/filesaveas.svg, + src/hugin1/hugin/xrc/data/gl_preview.png, + src/hugin1/hugin/xrc/data/gl_preview.svg, + src/hugin1/hugin/xrc/data/list.png, + src/hugin1/hugin/xrc/data/list.svg, + src/hugin1/hugin/xrc/data/preview.png, + src/hugin1/hugin/xrc/data/preview.svg, + src/hugin1/hugin/xrc/data/redo.png, + src/hugin1/hugin/xrc/data/redo.svg, + src/hugin1/hugin/xrc/data/undo.png, + src/hugin1/hugin/xrc/data/undo.svg: More tinkering with icons + +2009-02-02 21:54 dangelo + + * src/PTBatcherGUI/ProjectListBox.cpp, + src/hugin1/hugin/ChoosyRemapper.cpp, + src/hugin1/hugin/GLPreviewFrame.cpp, + src/hugin1/hugin/PreviewFrame.cpp, + src/hugin1/hugin/VertexCoordRemapper.cpp, + src/hugin_base/panodata/PanoramaOptions.cpp, + src/hugin_base/panodata/PanoramaOptions.h: Applied patch for + biplane and triplane projections (unknown author), + http://sourceforge.net/tracker/?func=detail&atid=550443&aid=2556303&group_id=77506 + +2009-02-02 20:46 brunopostle + + * CMakeLists.txt, doc/CMakeLists.txt, doc/Makefile.pod2man, + doc/align_image_stack.1, doc/autooptimiser.1, doc/fulla.1, + doc/hugin.1, doc/hugin_hdrmerge.1, doc/hugin_stitch_project.1, + doc/nona.1, doc/nona_gui.1, doc/vig_optimize.1: add man pages + (Cyril Brulebois) + +2009-02-01 21:30 brunopostle + + * src/celeste/training/README, src/hugin1/hugin/CPEditorPanel.cpp, + src/hugin1/hugin/xrc/pref_dialog.xrc, src/translations/bg.po, + src/translations/ca_ES.po, src/translations/cs_CZ.po, + src/translations/de.po, src/translations/en_GB.po, + src/translations/es.po, src/translations/fr.po, + src/translations/hu.po, src/translations/hugin.pot, + src/translations/it.po, src/translations/ja.po, + src/translations/ko.po, src/translations/nl.po, + src/translations/pl.po, src/translations/pt_BR.po, + src/translations/ru.po, src/translations/sk.po, + src/translations/sv.po, src/translations/uk.po, + src/translations/zh_CN.po: Fix typo s/paramaters/parameters/ + (Simon Oosthoek) + +2009-02-01 20:36 pooh22 + + * src/translations/nl.po: string-updates first attempt pre-0.8.0 + +2009-02-01 08:23 stativ + + * src/deghosting/hugin_hdrmerge.cpp, src/deghosting/khan.cpp, + src/deghosting/khan.h: Add -w option to hugin_hdrmerge which + allows to choose between luminance image and HDR image itself to + be base for generating initial weights. + Also fixes bug #2033756. + +2009-02-01 00:13 brunopostle + + * src/translations/bg.po, src/translations/ca_ES.po, + src/translations/cs_CZ.po, src/translations/de.po, + src/translations/en_GB.po, src/translations/es.po, + src/translations/fr.po, src/translations/hu.po, + src/translations/hugin.pot, src/translations/it.po, + src/translations/ja.po, src/translations/ko.po, + src/translations/nl.po, src/translations/pl.po, + src/translations/pt_BR.po, src/translations/ru.po, + src/translations/sk.po, src/translations/sv.po, + src/translations/uk.po, src/translations/zh_CN.po: Update + translation strings + +2009-02-01 00:10 brunopostle + + * src/hugin1/hugin/xrc/pref_dialog.xrc: Remove untranslatable + strings + +2009-01-31 23:37 brunopostle + + * src/hugin1/hugin/xrc/data/help_en_EN/Hugin.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Batch_Processor.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Main_window.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Preferences.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Stitcher_tab.html: + Update manual from wiki + +2009-01-31 22:51 brunopostle + + * src/hugin1/hugin/xrc/main_menu.xrc: Refer to Batch Processor + rather than PTBatcher in menu + +2009-01-31 22:45 brunopostle + + * src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Batch_Processor.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Batch_Stitcher.html, + src/hugin1/hugin/xrc/data/help_en_EN/pages.txt: fix on 'batch + processor' rather than 'batch stitcher' + +2009-01-31 17:55 harryvanderwolf + + * src/hugin1/base_wx/MyExternalCmdExecDialog.cpp: slightly reworked + bugfix for bug #2075064; contains check for Tiger and Leopard + +2009-01-31 03:37 yuv + + * CMakeLists.txt: reverting my mistake (SVN3610) + +2009-01-31 02:57 yuv + + * CMakeLists.txt: fix Windows build (In Windows, automatic linking + is performed, so you do not have to specify the Boost libraries) + +2009-01-31 00:35 brunopostle + + * src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Main_window.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Preview_window.html: + Update manual from wiki + +2009-01-31 00:26 brunopostle + + * src/hugin1/hugin/xrc/data/edit_add.png, + src/hugin1/hugin/xrc/data/edit_add.svg, + src/hugin1/hugin/xrc/data/info.png, + src/hugin1/hugin/xrc/data/info.svg, + src/hugin1/hugin/xrc/data/list.png, + src/hugin1/hugin/xrc/data/list.svg: More tinkering with icons... + +2009-01-30 17:12 stativ + + * src/hugin_base/hugin_utils/platform.h: Escape dolar sign ($) in a + right way. Fixes bug #2462061. + +2009-01-30 15:37 stativ + + * src/hugin_base/hugin_utils/platform.h: Escape = in paths in + makefile. + +2009-01-30 13:27 stativ + + * CMakeLists.txt: Added dependency check for Boost graph, fixes bug + #2094656 + +2009-01-30 00:28 brunopostle + + * src/hugin1/hugin/xrc/data/edit_add.png, + src/hugin1/hugin/xrc/data/edit_add.svg, + src/hugin1/hugin/xrc/data/gl_preview.png, + src/hugin1/hugin/xrc/data/gl_preview.svg, + src/hugin1/hugin/xrc/data/info.png, + src/hugin1/hugin/xrc/data/info.svg, + src/hugin1/hugin/xrc/data/optimize.png, + src/hugin1/hugin/xrc/data/optimize.svg, + src/hugin1/hugin/xrc/data/preview.png, + src/hugin1/hugin/xrc/data/preview.svg, + src/hugin1/hugin/xrc/data/straighten_pano.svg, + src/hugin1/hugin/xrc/main_tool.xrc: Icons for main toolbar, needs + more work + +2009-01-29 23:52 brunopostle + + * src/hugin1/hugin/MainFrame.cpp, + src/hugin1/hugin/xrc/main_tool.xrc: Put a fast preview icon on + the toolbar + +2009-01-29 21:55 brunopostle + + * src/hugin1/hugin/xrc/data/center_pano.png, + src/hugin1/hugin/xrc/data/center_pano.svg, + src/hugin1/hugin/xrc/data/fit_pano.png, + src/hugin1/hugin/xrc/data/fit_pano.svg, + src/hugin1/hugin/xrc/data/preview_auto_update.png, + src/hugin1/hugin/xrc/data/preview_auto_update.svg, + src/hugin1/hugin/xrc/data/preview_num_transform.png, + src/hugin1/hugin/xrc/data/preview_num_transform.svg, + src/hugin1/hugin/xrc/data/preview_show_all.png, + src/hugin1/hugin/xrc/data/preview_show_all.svg, + src/hugin1/hugin/xrc/data/preview_show_none.png, + src/hugin1/hugin/xrc/data/preview_show_none.svg, + src/hugin1/hugin/xrc/data/reload.png, + src/hugin1/hugin/xrc/data/reload.svg, + src/hugin1/hugin/xrc/data/straighten_pano.png, + src/hugin1/hugin/xrc/data/straighten_pano.svg, + src/hugin1/hugin/xrc/preview_frame.xrc: New icons for the preview + windows + +2009-01-28 20:39 brunopostle + + * src/hugin1/hugin/xrc/data/help_en_EN/150px-Ben_Equisolid.jpg, + src/hugin1/hugin/xrc/data/help_en_EN/150px-Ben_Orthographic.jpg, + src/hugin1/hugin/xrc/data/help_en_EN/180px-Fast_preview_guide_crop.png, + src/hugin1/hugin/xrc/data/help_en_EN/180px-Fast_preview_guide_drag.png, + src/hugin1/hugin/xrc/data/help_en_EN/180px-Fast_preview_guide_identify.png, + src/hugin1/hugin/xrc/data/help_en_EN/180px-Fast_preview_guide_rotate_drag.png, + src/hugin1/hugin/xrc/data/help_en_EN/180px-Fast_preview_guide_start.png, + src/hugin1/hugin/xrc/data/help_en_EN/200px-Ben_Architectural.jpg, + src/hugin1/hugin/xrc/data/help_en_EN/200px-Ben_Equirectangular_panini.jpg, + src/hugin1/hugin/xrc/data/help_en_EN/200px-Ben_Lambert_cylindrical_equal_area.jpg, + src/hugin1/hugin/xrc/data/help_en_EN/200px-Ben_Miller_cylindrical.jpg, + src/hugin1/hugin/xrc/data/help_en_EN/200px-Ben_Panini.jpg, + src/hugin1/hugin/xrc/data/help_en_EN/22px-Fast_preview_icon_crop.svg.png, + src/hugin1/hugin/xrc/data/help_en_EN/22px-Fast_preview_icon_drag.svg.png, + src/hugin1/hugin/xrc/data/help_en_EN/22px-Fast_preview_icon_identify.svg.png, + src/hugin1/hugin/xrc/data/help_en_EN/22px-Fast_preview_icon_photometric.svg.png, + src/hugin1/hugin/xrc/data/help_en_EN/Aliasing.html, + src/hugin1/hugin/xrc/data/help_en_EN/Align_a_stack_of_photos.html, + src/hugin1/hugin/xrc/data/help_en_EN/Align_image_stack.html, + src/hugin1/hugin/xrc/data/help_en_EN/Autopano.html, + src/hugin1/hugin/xrc/data/help_en_EN/Depth_of_Field.html, + src/hugin1/hugin/xrc/data/help_en_EN/EXIF.html, + src/hugin1/hugin/xrc/data/help_en_EN/Enfuse.html, + src/hugin1/hugin/xrc/data/help_en_EN/HDR_workflow_with_hugin.html, + src/hugin1/hugin/xrc/data/help_en_EN/Horizontal_control_points.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Batch_Stitcher.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Control_Points_table.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_FAQ.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Fast_Preview_window.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Images_tab.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Main_window.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Preview_window.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Stitcher_tab.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_add_project.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_cancel_batch.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_clear_batch.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_folder_search.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_open_batch.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_pause_batch.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_remove_project.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_save_batch.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_skip_batch.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_start_batch.png, + src/hugin1/hugin/xrc/data/help_en_EN/Nona.html, + src/hugin1/hugin/xrc/data/help_en_EN/Optimization.html, + src/hugin1/hugin/xrc/data/help_en_EN/PTStitcher.html, + src/hugin1/hugin/xrc/data/help_en_EN/Perspective_correction.html, + src/hugin1/hugin/xrc/data/help_en_EN/Projections.html, + src/hugin1/hugin/xrc/data/help_en_EN/Vertical_control_points.html, + src/hugin1/hugin/xrc/data/help_en_EN/Vignetting.html, + src/hugin1/hugin/xrc/data/help_en_EN/pages.txt: Update manual + from panotools wiki + +2009-01-28 17:40 brunopostle + + * src/hugin1/hugin/xrc/data/help_en_EN/pages.txt: New manual pages + for batch processor and fast preview + +2009-01-28 17:34 stativ + + * src/PTBatcher/CMakeLists.txt, src/PTBatcher/PTBatcher.desktop, + src/PTBatcherGUI/PTBatcherGUI.desktop, + src/hugin1/hugin/hugin.desktop, + src/hugin1/stitch_project/hugin_stitch_project.desktop: Some + changes to desktop files as Bruno suggested in #2538740. I've + also removed some deprecated stuff from them. + +2009-01-27 23:23 brunopostle + + * src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.h, + src/tools/pto2mk.cpp: Fix #2047073 pto2mk doesn't write EXIFTOOL + variables (nobody) + +2009-01-27 15:20 stativ + + * src/hugin1/base_wx/platform.h, src/hugin1/hugin/MainFrame.cpp, + src/hugin1/hugin/wxPanoCommand.cpp: Add more image filters to Add + image dialog. Fixes bug #2031549 + +2009-01-27 09:22 stativ + + * src/hugin_base/hugin_utils/platform.h: Escape # and : in + makefile. Fixes bugs 2106362, 2005561. + +2009-01-27 07:56 stativ + + * src/hugin1/base_wx/huginConfig.cpp, + src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp: + Use default values for external programs in makefile. Fixes bug + 2292979 (enblend set as 'false' in the Makefile). + +2009-01-25 22:35 brunopostle + + * src/translations/fr.po: Updated French translation (Jean-Luc + Coulon) + +2009-01-25 19:59 harryvanderwolf + + * src/hugin1/base_wx/ImageCache.cpp: outcommented a lot of cout + messages as they overflow the system log + +2009-01-25 15:16 yuv + + * src/foreign/levmar/CMakeLists.txt: Windows: warning clean up + +2009-01-25 14:33 harryvanderwolf + + * mac/Hugin.xcodeproj/project.pbxproj, mac/celeste-Config.h: Minor + XCode improvements; also adding first PtBatcherGui build + +2009-01-24 22:45 brunopostle + + * src/translations/ca_ES.po: Unify all .po encoding to UTF-8 + +2009-01-24 22:39 brunopostle + + * src/translations/cs_CZ.po: Unify line-endings + +2009-01-24 22:35 brunopostle + + * src/translations/bg.po, src/translations/ca_ES.po, + src/translations/cs_CZ.po, src/translations/de.po, + src/translations/en_GB.po, src/translations/es.po, + src/translations/fr.po, src/translations/hu.po, + src/translations/it.po, src/translations/ja.po, + src/translations/ko.po, src/translations/nl.po, + src/translations/pl.po, src/translations/pt_BR.po, + src/translations/ru.po, src/translations/sk.po, + src/translations/sv.po, src/translations/uk.po, + src/translations/zh_CN.po: Update po files with new strings for + translation + +2009-01-24 22:19 brunopostle + + * src/translations/extract-messages.sh, src/translations/hugin.pot: + Update strings for translation + +2009-01-17 21:13 yuv + + * src/hugin_base/panodata/PanoramaOptions.cpp: VFOV sliders for + Pannini, Architectural, Equi_Pannini (Thomas Modes) + +2009-01-17 21:09 yuv + + * CMakeModules/FindPANO13.cmake: fix the "right" pano13 l (Thomas + Modes) + +2009-01-09 02:49 yuv + + * CMakeModules/FindPANO13.cmake: improved detection of recent + libpano builds + +2009-01-08 23:51 yuv + + * platforms/windows/smartblend-wrapper/smartblend-hugin.bat: fix + path with space (thanks cenda at cendaweb d. cz) + +2009-01-03 15:47 yuv + + * src/PTBatcherGUI/ProjectListBox.cpp, + src/hugin1/hugin/ChoosyRemapper.cpp, + src/hugin1/tests/test_projections.cpp, + src/hugin_base/panodata/PanoramaOptions.cpp, + src/hugin_base/panodata/PanoramaOptions.h, + src/hugin_base/panotools/PanoToolsInterface.cpp: fixed pannini / + equi_pannini to mirror Daniel's changes in libpano13 + +2008-12-31 17:13 yuv + + * src/PTBatcherGUI/ProjectListBox.cpp, + src/hugin1/hugin/ChoosyRemapper.cpp, + src/hugin1/hugin/OutputProjectionInfo.cpp, + src/hugin1/hugin/VertexCoordRemapper.cpp, + src/hugin1/tests/test_projections.cpp, + src/hugin_base/panodata/PanoramaOptions.cpp, + src/hugin_base/panodata/PanoramaOptions.h, + src/hugin_base/panotools/PanoToolsInterface.cpp: support for new + libpano projections architectural, ortographic, equisolid + +2008-12-29 21:00 yuv + + * src/PTBatcherGUI/ProjectListBox.cpp, + src/hugin1/hugin/VertexCoordRemapper.cpp, + src/hugin1/tests/test_projections.cpp, + src/hugin_base/panodata/PanoramaOptions.cpp, + src/hugin_base/panodata/PanoramaOptions.h, + src/hugin_base/panotools/PanoToolsInterface.cpp: support for + libpano13's panini + +2008-12-22 01:15 yuv + + * src/hugin1/hugin/xrc/data/CMakeLists.txt: don't install + CMakeLists.txt + +2008-12-22 01:12 yuv + + * src/hugin1/hugin/xrc/data/about.htm.in: updated credits + +2008-12-19 16:45 harryvanderwolf + + * src/hugin1/hugin/xrc/cp_editor_panel.xrc: Renamed and replaced + celeste button in cp_editor_panel. It is not part of normal + "vertical" oriented workflow. The new alignment gives more room + for the images too. + +2008-12-19 08:43 harryvanderwolf + + * src/hugin1/hugin/xrc/assistant_panel.xrc: [OSX]Increased spacer + size in assistantpanel between "align" and "Create panorama" + button as the resulting align text was written through the + "Create panorama" button on the Mac + +2008-12-17 15:35 harryvanderwolf + + * src/hugin1/base_wx/MyExternalCmdExecDialog.cpp: [OSX]Undo + svn3398. This was a patch for the badly reproducible bug 2075064 + that caused CP generation problems on SOME PPCs. The bugfix + however had the result that the CP generation process ended in + error on ALL PPCs + +2008-12-17 14:03 blimbo + + * src/celeste/Celeste.cpp: Celeste support for 16bit images + +2008-11-26 01:59 btownshend + + * src/hugin_base/vigra_ext/lut.h: Missing conversion to double in + expression resulting in integer arithmetic + +2008-11-18 18:09 blimbo + + * src/celeste/Main.cpp: minor changes to celeste_standalone + +2008-11-18 17:38 blimbo + + * src/celeste/Celeste.cpp, src/hugin1/hugin/AssistantPanel.cpp, + src/hugin1/hugin/CPEditorPanel.cpp, + src/hugin1/hugin/ImagesPanel.cpp: removed celeste debug stuff + +2008-11-18 14:04 yuv + + * CMakeModules/FindExiv2.cmake: typo + +2008-11-18 13:17 blimbo + + * src/hugin1/hugin/ImagesPanel.cpp: Fixed imagespanel typo + +2008-11-18 06:12 yuv + + * CMakeModules/FindExiv2.cmake: find exiv2 either in the old + Windows SDK (0.16) or in the generic folder exiv2 if built from + source + +2008-11-17 22:34 blimbo + + * src/celeste/Celeste.cpp, src/hugin1/hugin/AssistantPanel.cpp, + src/hugin1/hugin/CPEditorPanel.cpp, + src/hugin1/hugin/ImagesPanel.cpp: cpeditor mac debug code + +2008-11-17 17:49 yuv + + * src/foreign/levmar/CMakeLists.txt: fixed build on AMD64 + architectures + http://www.gentoo.org/proj/en/base/amd64/howtos/index.xml?part=1&chap=3 + +2008-11-16 15:28 brunopostle + + * CMakeLists.txt: Don't put celeste_standalone binary in tarball + +2008-11-15 18:14 blimbo + + * src/celeste/Celeste.cpp: Debug stuff for OSX + +2008-11-14 16:14 blimbo + + * src/celeste/data/celeste.model, src/celeste/svm.cpp, + src/hugin1/hugin/ImagesPanel.cpp: Changed to svm.cpp to read + model file + license properly + +2008-11-14 04:12 yuv + + * src/hugin1/hugin/CPEditorPanel.cpp: Celeste - user warning + instead of DEBUG_WARN with + +2008-11-13 22:27 blimbo + + * src/celeste/data/celeste.model, src/celeste/svm.cpp: added a + license to celeste svm model file + +2008-11-13 21:27 blimbo + + * src/hugin1/hugin/AssistantPanel.cpp, + src/hugin1/hugin/ImagesPanel.cpp: celeste progress dialogue in + AssistantPanel improvement + +2008-11-13 21:05 blimbo + + * src/hugin1/hugin/CPEditorPanel.cpp, + src/hugin1/hugin/ImagesPanel.cpp: Added celeste progress dialogue + and small bug fix in ImagesPanel + +2008-11-13 19:04 brunopostle + + * src/hugin1/hugin/Makefile.equirect.mk: Rules for generating vrml2 + and x3d output from equirectangular, completely untested + +2008-11-12 17:45 blimbo + + * src/hugin1/hugin/ImagesPanel.cpp: Added some missing includes to + ImagesPanel.cpp + +2008-11-12 13:50 blimbo + + * src/hugin1/hugin/xrc/pref_dialog.xrc: Changed some text in the + celeste preferences dialogue + +2008-11-12 12:54 blimbo + + * src/celeste/CMakeLists.txt, src/celeste/CelesteDebug.cpp, + src/celeste/CelesteDebug.h, src/celeste/data/celeste.model, + src/hugin1/hugin/CPEditorPanel.cpp, + src/hugin1/hugin/ImagesPanel.cpp: Removed debug code, saved + celeste model file as DOS format + +2008-11-11 19:02 harryvanderwolf + + * src/hugin1/hugin/CPEditorPanel.cpp: undo local change to + CPEditorPanel.cpp + +2008-11-11 18:51 harryvanderwolf + + * mac/Hugin.xcodeproj/project.pbxproj, + src/hugin1/hugin/AssistantPanel.cpp, + src/hugin1/hugin/CPEditorPanel.cpp, + src/hugin1/hugin/ImagesPanel.cpp, src/hugin_config_mac.h: + [OSX]implement celeste into mac hugin bundle. celeste in + CPEditorPanel still crashes Hugin + +2008-11-10 17:25 harryvanderwolf + + * mac/Hugin.xcodeproj/project.pbxproj, mac/complete-bundle.sh: Ugly + hack to get correct celeste.dylib into bundle + +2008-11-10 14:28 blimbo + + * src/celeste/CelesteDebug.cpp: added wxstring include + +2008-11-09 20:16 harryvanderwolf + + * mac/scripted_universal_build/01-Compile_hugin_0.8.sh: improved + but not yet 100% correct + +2008-11-09 19:40 harryvanderwolf + + * src/hugin1/hugin/TextureManager.cpp: Removed dutch "debug" + comment + +2008-11-09 19:37 harryvanderwolf + + * src/hugin1/hugin/TextureManager.cpp: Another minor change build + 0.8 on Mac with XCode + +2008-11-09 19:04 harryvanderwolf + + * mac/Hugin.xcodeproj/project.pbxproj, mac/complete-bundle.sh: + Hugin XCode project modified to support at least the OpenGL fast + preview. Need to work on celeste model and PTBatcher(Gui) + +2008-11-08 15:29 blimbo + + * src/celeste/CMakeLists.txt, src/celeste/CelesteDebug.cpp, + src/celeste/CelesteDebug.h, src/hugin1/hugin/CPEditorPanel.cpp: + Even more wxmessage boxes for windows debugging + +2008-11-08 04:53 yuv + + * src/hugin_base/panodata/SrcPanoImage.cpp: alternative crop factor + calculation for Olympus C-765 UZ and potentially other Olympus + cameras. + +2008-11-07 22:15 dangelo + + * src/tools/autooptimiser.cpp: autooptimiser bugfix: allow reading + the script from stdin + +2008-11-06 23:41 brunopostle + + * doc/batch-processing/Makefile.flickr.mk, + doc/batch-processing/Makefile.psd.mk, + doc/batch-processing/Makefile.qtvr.mk, + src/hugin1/hugin/Makefile.equirect.mk: cleanup + +2008-11-06 17:02 blimbo + + * src/hugin1/hugin/CPEditorPanel.cpp: Windows debugging messages + via wx alert boxes + +2008-11-05 19:46 brunopostle + + * src/hugin1/hugin/Makefile.equirect.mk: rule to make multilayer + PSD using PTtiff2psd + +2008-11-04 23:54 brunopostle + + * src/hugin1/hugin/Makefile.equirect.mk: Rule to make a cube strip + for use with SPi-V + +2008-11-04 11:44 blimbo + + * src/celeste/Celeste.cpp, src/hugin1/hugin/CPEditorPanel.cpp: More + celeste debug stuff for windows + +2008-11-03 23:33 brunopostle + + * src/hugin1/hugin/Makefile.equirect.mk: Rule to create simple + panosalado output, untested + +2008-11-01 00:29 brunopostle + + * src/PTBatcherGUI/PTBatcherGUI.desktop: Russian text for PTBatcher + menu entry (Alexandre Prokoudine) + +2008-10-25 12:44 harryvanderwolf + + * mac/Version.xcconfig: update mac Versioning config file + +2008-10-25 06:12 dangelo + + * src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp: + merged rev 3519 from release-0.7.0 into trunk + +2008-10-23 21:07 dangelo + + * src/hugin_base/vigra_ext/ImageTransforms.h: fix: [ 1850469 ] nona + outputs negative samples. + Negative values are now set to 0 + +2008-10-23 12:31 blimbo + + * src/PTBatcher/Batch.cpp, src/celeste/Celeste.cpp, + src/hugin1/hugin/CPEditorPanel.cpp: More debugging code for + Celeste/Windows + +2008-10-22 20:13 harryvanderwolf + + * CMakeLists.txt: Removal of unwanted and weird "if(NOT NO_SVN)" + setting + +2008-10-22 20:06 harryvanderwolf + + * CMakeLists.txt: First step to get cmake cross compilation back on + MacOSX to be able to build on Leopard for both Tiger and Leopard + +2008-10-22 15:57 yuv + + * CMakeModules/win_bundle.cmake: enblend is now enblend-enfuse. + +2008-10-22 14:56 blimbo + + * src/hugin1/hugin/ImagesPanel.cpp: Channed iterator to + const_iterator in ImagesPanel.cpp - caused probs on Windows + +2008-10-20 19:15 dangelo + + * src/translations/zh_CN.po: Updated Chinese simplified translation + (Lu Fang) + +2008-10-17 23:16 brunopostle + + * src/hugin1/hugin/Makefile.equirect.mk: A rule to make a + multilayer TIFF file, this should really be + in the standard .pto.mk file + +2008-10-15 11:47 harryvanderwolf + + * src/celeste/CMakeLists.txt: Celeste overwrites main project CMAKE + settings. This breaks APPLE cross compilation. Changed to append + statement + +2008-10-14 21:08 brunopostle + + * src/PTBatcherGUI/PTBatcherGUI.desktop: .desktop files don't work + with CRLF line-endings + +2008-10-14 20:23 blimbo + + * src/celeste/Celeste.cpp, src/hugin1/hugin/AssistantPanel.cpp, + src/hugin1/hugin/CPEditorPanel.cpp, + src/hugin1/hugin/ImagesPanel.cpp: Added some debug code for + Celeste/Windows + +2008-10-14 08:28 yuv + + * ., CMakeLists.txt, CMakeModules/FindGLEW.cmake: - CMake top level + now stores the revision number in rev.txt for tarball perusal + - moved the Windows GLEW settings from top level to + CMakeModules/FindGLEW.cmake + +2008-10-13 23:33 blimbo + + * src/celeste/ContrastFilter.h, src/celeste/GaborFilter.cpp, + src/celeste/GaborJet.h, src/celeste/LogPolar.h, + src/celeste/PGMImage.cpp, src/hugin1/hugin/ImagesPanel.cpp, + src/hugin1/hugin/ImagesPanel.h, + src/hugin1/hugin/xrc/images_panel.xrc: Added Celeste button to + images panel, patched fix for bug 2161163 + +2008-10-13 21:38 brunopostle + + * CMakeLists.txt: bump version to 0.8.0 + +2008-10-13 20:09 brunopostle + + * src/celeste/training/CelesteTrain.cpp: Fix error: first argument + of ‘int main(unsigned int, char**)’ should be ‘int’ + bug #2161163 (Lukas Jirkovsky) + +2008-10-13 20:07 brunopostle + + * src/celeste/Main.cpp: Fix error: first argument of ‘int + main(unsigned int, const char**)’ should be ‘int’ + bug #2161163 (Lukas Jirkovsky) + +2008-10-13 20:04 brunopostle + + * src/celeste/GaborGlobal.h, src/celeste/PGMImage.h: gcc-4.3.0 + fixes (bug #2161163) + +2008-10-13 05:46 yuv + + * src/celeste/Config.h: - reverting my mistake at rev.3494 + (Config.h) + +2008-10-13 00:07 yuv + + * README: updated README file + http://groups.google.com/group/hugin-ptx/t/7746341c4883d053 + +2008-10-12 22:57 yuv + + * CMakeLists.txt: - updates SVN revision automatically in Windows + build (bringing it to the same level of functionality as the *nix + platforms + +2008-10-12 21:58 yuv + + * src/celeste/CMakeLists.txt, src/celeste/Config.h, + src/celeste/LICENCE_GABOR, src/celeste/LICENCE_LIBSVM, + src/celeste/training/CMakeLists.txt, + src/celeste/training/CelesteTrain.cpp, + src/celeste/training/CelesteTrain.h, src/celeste/training/README, + src/celeste/training/get_flickr_clouds.pl, + src/celeste/training/svm_learn_class_10_fold.pl: - complete the + merge from gsoc2008_sky_identification branch + - fix build of celeste in Windows + - reduce cmake verbosity in Windows + +2008-10-10 11:22 blimbo + + * src/celeste/CMakeLists.txt, src/celeste/Celeste.cpp: Added some + CFLAGS for Windows + +2008-10-10 09:53 blimbo + + * CMakeLists.txt, src/CMakeLists.txt, src/celeste, + src/celeste/CMakeLists.txt, src/celeste/Celeste.cpp, + src/celeste/Celeste.h, src/celeste/CelesteGlobals.cpp, + src/celeste/CelesteGlobals.h, src/celeste/Config.h, + src/celeste/Config.h.linux, src/celeste/Config.h.win32, + src/celeste/ContrastFilter.cpp, src/celeste/ContrastFilter.h, + src/celeste/Gabor.cpp, src/celeste/Gabor.h, + src/celeste/GaborFilter.cpp, src/celeste/GaborFilter.h, + src/celeste/GaborGlobal.h, src/celeste/GaborJet.cpp, + src/celeste/GaborJet.h, src/celeste/ImageFile.cpp, + src/celeste/ImageFile.h, src/celeste/LogPolar.cpp, + src/celeste/LogPolar.h, src/celeste/Main.cpp, + src/celeste/PGMImage.cpp, src/celeste/PGMImage.h, + src/celeste/Utilities.cpp, src/celeste/Utilities.h, + src/celeste/data, src/celeste/data/celeste.model, + src/celeste/svm.cpp, src/celeste/svm.h, src/celeste/training, + src/celeste/training/README, + src/celeste/training/create_svm_data_10_fold.pl, + src/celeste/training/parse_results.pl, + src/hugin1/hugin/AssistantPanel.cpp, + src/hugin1/hugin/CMakeLists.txt, + src/hugin1/hugin/CPEditorPanel.cpp, + src/hugin1/hugin/CPEditorPanel.h, + src/hugin1/hugin/PreferencesDialog.cpp, + src/hugin1/hugin/config_defaults.h, + src/hugin1/hugin/xrc/cp_editor_panel.xrc, + src/hugin1/hugin/xrc/pref_dialog.xrc: Integration of sky + identification code + +2008-10-09 21:33 yuv + + * platforms/windows/smartblend-wrapper/smartblend-hugin-windows-readme.txt: + updated instructions for smartblend wrapper + +2008-10-09 14:17 yuv + + * platforms/windows/smartblend-wrapper, + platforms/windows/smartblend-wrapper/smartblend-hugin-windows-readme.txt, + platforms/windows/smartblend-wrapper/smartblend-hugin.bat: added + smartblend wrapper by Bart van Andel + +2008-10-08 23:40 brunopostle + + * src/hugin1/hugin/CMakeLists.txt, + src/hugin1/hugin/Makefile.equirect.mk: Updated Makefile for + generating qtvr etc... + +2008-10-08 22:44 yuv + + * CMakeLists.txt, src/hugin1/hugin/GLViewer.cpp, + src/hugin1/hugin/PreviewDifferenceTool.cpp, + src/hugin1/hugin/TextureManager.cpp, src/hugin_config_msvc.h: - + updated fast preview to include GLEW library statically + - notched CMakeLists.txt to build against wxWidgets 2.8.9 + +2008-10-08 09:35 dangelo + + * ., CMakeLists.txt, CMakeModules/FindGLEW.cmake, + src/CMakeLists.txt, src/PTBatcher, src/PTBatcher/Batch.cpp, + src/PTBatcher/Batch.h, src/PTBatcher/CMakeLists.txt, + src/PTBatcher/PTBatcher.cpp, src/PTBatcher/PTBatcher.desktop, + src/PTBatcher/PTBatcher.h, src/PTBatcher/PTBatcher_rc.aps, + src/PTBatcher/PTBatcher_rc.rc, src/PTBatcher/ProjectArray.cpp, + src/PTBatcher/ProjectArray.h, src/PTBatcher/RunStitchFrame.cpp, + src/PTBatcher/RunStitchFrame.h, src/PTBatcherGUI, + src/PTBatcherGUI/BatchFrame.cpp, src/PTBatcherGUI/BatchFrame.h, + src/PTBatcherGUI/CMakeLists.txt, src/PTBatcherGUI/DirTraverser.h, + src/PTBatcherGUI/PTBatcherGUI.cpp, + src/PTBatcherGUI/PTBatcherGUI.desktop, + src/PTBatcherGUI/PTBatcherGUI.h, + src/PTBatcherGUI/PTBatcherGUI_rc.aps, + src/PTBatcherGUI/PTBatcherGUI_rc.rc, + src/PTBatcherGUI/ProjectListBox.cpp, + src/PTBatcherGUI/ProjectListBox.h, src/hugin1/CMakeLists.txt, + src/hugin1/base_wx/MyExternalCmdExecDialog.cpp, + src/hugin1/base_wx/MyExternalCmdExecDialog.h, + src/hugin1/base_wx/RunStitchPanel.cpp, + src/hugin1/base_wx/RunStitchPanel.h, + src/hugin1/hugin/CMakeLists.txt, + src/hugin1/hugin/ChoosyRemapper.cpp, + src/hugin1/hugin/ChoosyRemapper.h, + src/hugin1/hugin/GLPreviewFrame.cpp, + src/hugin1/hugin/GLPreviewFrame.h, + src/hugin1/hugin/GLRenderer.cpp, src/hugin1/hugin/GLRenderer.h, + src/hugin1/hugin/GLViewer.cpp, src/hugin1/hugin/GLViewer.h, + src/hugin1/hugin/MainFrame.cpp, src/hugin1/hugin/MainFrame.h, + src/hugin1/hugin/MeshManager.cpp, src/hugin1/hugin/MeshManager.h, + src/hugin1/hugin/MeshRemapper.cpp, + src/hugin1/hugin/MeshRemapper.h, + src/hugin1/hugin/OutputProjectionInfo.cpp, + src/hugin1/hugin/OutputProjectionInfo.h, + src/hugin1/hugin/PanoPanel.cpp, src/hugin1/hugin/PanoPanel.h, + src/hugin1/hugin/PreviewCropTool.cpp, + src/hugin1/hugin/PreviewCropTool.h, + src/hugin1/hugin/PreviewDifferenceTool.cpp, + src/hugin1/hugin/PreviewDifferenceTool.h, + src/hugin1/hugin/PreviewDragTool.cpp, + src/hugin1/hugin/PreviewDragTool.h, + src/hugin1/hugin/PreviewIdentifyTool.cpp, + src/hugin1/hugin/PreviewIdentifyTool.h, + src/hugin1/hugin/PreviewPanoMaskTool.cpp, + src/hugin1/hugin/PreviewPanoMaskTool.h, + src/hugin1/hugin/PreviewTool.cpp, src/hugin1/hugin/PreviewTool.h, + src/hugin1/hugin/PreviewToolHelper.cpp, + src/hugin1/hugin/PreviewToolHelper.h, + src/hugin1/hugin/TexCoordRemapper.cpp, + src/hugin1/hugin/TexCoordRemapper.h, + src/hugin1/hugin/TextureManager.cpp, + src/hugin1/hugin/TextureManager.h, + src/hugin1/hugin/VertexCoordRemapper.cpp, + src/hugin1/hugin/VertexCoordRemapper.h, + src/hugin1/hugin/ViewState.cpp, src/hugin1/hugin/ViewState.h, + src/hugin1/hugin/huginApp.cpp, + src/hugin1/hugin/xrc/data/crop_tool.png, + src/hugin1/hugin/xrc/data/crop_tool.svg, + src/hugin1/hugin/xrc/data/document-new.png, + src/hugin1/hugin/xrc/data/document-open.png, + src/hugin1/hugin/xrc/data/drag_tool.png, + src/hugin1/hugin/xrc/data/drag_tool.svg, + src/hugin1/hugin/xrc/data/emblem-symbolic-link.png, + src/hugin1/hugin/xrc/data/emblem-unreadable.png, + src/hugin1/hugin/xrc/data/folder-saved-search.png, + src/hugin1/hugin/xrc/data/go-jump.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Batch_Stitcher.html, + src/hugin1/hugin/xrc/data/identify_tool.png, + src/hugin1/hugin/xrc/data/identify_tool.svg, + src/hugin1/hugin/xrc/data/image-missing.png, + src/hugin1/hugin/xrc/data/list-add.png, + src/hugin1/hugin/xrc/data/list-remove.png, + src/hugin1/hugin/xrc/data/media-floppy.png, + src/hugin1/hugin/xrc/data/media-playback-pause.png, + src/hugin1/hugin/xrc/data/media-playback-start.png, + src/hugin1/hugin/xrc/data/media-playback-stop.png, + src/hugin1/hugin/xrc/data/media-skip-forward.png, + src/hugin1/hugin/xrc/data/photometric.png, + src/hugin1/hugin/xrc/data/photometric.svg, + src/hugin1/hugin/xrc/data/process-stop.png, + src/hugin1/hugin/xrc/data/process-stop16.png, + src/hugin1/hugin/xrc/data/process-stop22.png, + src/hugin1/hugin/xrc/main_menu.xrc, + src/hugin1/hugin/xrc/pano_panel.xrc, + src/hugin1/hugin/xrc/preview_frame.xrc, + src/hugin_base/hugin_math/hugin_math.h: merged + gsoc2008_integration branch into the trunk. + +2008-09-30 22:47 ippei + + * mac/ExternalPrograms/scripts/enblend.sh, + mac/ExternalPrograms/scripts/enblend3.sh, + mac/ExternalPrograms/scripts/enblend31.sh: Mac: enblend 3.2 + released + +2008-09-30 09:01 ippei + + * mac/ExternalPrograms/scripts/libpng.sh, + mac/ExternalPrograms/scripts/static/libpng.sh: Mac: libpng + update. + +2008-09-27 15:21 yuv + + * platforms/windows/installer/installer_howto.txt: installer howto + +2008-09-23 10:50 yuv + + * platforms/linux/smartblend, platforms/linux/smartblend.README: + Bob Bright: script to convert blender arguments for smartblend + +2008-09-23 10:36 yuv + + * README: updated README file + - info from James Legg about Compiz incompatibility + - reformatted headers + +2008-09-15 11:44 harryvanderwolf + + * platforms/mac/droplets/scripts, + platforms/mac/droplets/scripts/Align_Enfuse_droplet.applescript, + platforms/mac/droplets/scripts/Auto_Align_Enfuse_droplet.applescript, + platforms/mac/droplets/scripts/Auto_Enfuse_droplet.applescript, + platforms/mac/droplets/scripts/Enfuse_droplet.applescript: [OSX] + text version of enfuse/align_image_stack Applescripts were + missing + +2008-09-14 20:49 brunopostle + + * ChangeLog: really update changelog for rc6 + 2008-09-13 21:56 brunopostle * src/hugin1/hugin/xrc/data/help_en_EN/100px-Big_ben_transverse_mercator.jpg, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gko...@us...> - 2009-02-09 22:51:13
|
Revision: 3634 http://hugin.svn.sourceforge.net/hugin/?rev=3634&view=rev Author: gkohlmeyer Date: 2009-02-09 21:43:53 +0000 (Mon, 09 Feb 2009) Log Message: ----------- Updated cmake files for new hugin SDK; may rise problems due to naming of wxWidgets directory Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/CMakeModules/FindBoost.cmake hugin/trunk/CMakeModules/FindExiv2.cmake Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2009-02-08 22:36:05 UTC (rev 3633) +++ hugin/trunk/CMakeLists.txt 2009-02-09 21:43:53 UTC (rev 3634) @@ -2,6 +2,10 @@ # require at least cmake 2.4 cmake_minimum_required(VERSION 2.4) +if(COMMAND cmake_policy) + cmake_policy(SET CMP0003 NEW) +endif(COMMAND cmake_policy) + set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules ) include(HuginMacros) @@ -89,7 +93,7 @@ # search boost there SET(BOOST_DIR_SEARCH_USER ${SOURCE_BASE_DIR}) # wxWidgets - SET(wxWidgets_ROOT_DIR ${SOURCE_BASE_DIR}/wxMSW-2.8.9) + SET(wxWidgets_ROOT_DIR ${SOURCE_BASE_DIR}/wxWidgets-2.8.9) # GLEW moved to FildGLEW.cmake module # SET(GLEW_INCLUDE_DIR ${SOURCE_BASE_DIR}/glew/include) # for dynamic build, it's glew32.lib and the dll must be copied into hugin's bin folder Modified: hugin/trunk/CMakeModules/FindBoost.cmake =================================================================== --- hugin/trunk/CMakeModules/FindBoost.cmake 2009-02-08 22:36:05 UTC (rev 3633) +++ hugin/trunk/CMakeModules/FindBoost.cmake 2009-02-09 21:43:53 UTC (rev 3634) @@ -104,6 +104,7 @@ boost-1_34 boost-1_33_1 boost-1_33_0 + boost_1_37_0 ) Modified: hugin/trunk/CMakeModules/FindExiv2.cmake =================================================================== --- hugin/trunk/CMakeModules/FindExiv2.cmake 2009-02-08 22:36:05 UTC (rev 3633) +++ hugin/trunk/CMakeModules/FindExiv2.cmake 2009-02-09 21:43:53 UTC (rev 3634) @@ -72,6 +72,7 @@ /usr/include ${SOURCE_BASE_DIR}/exiv2/msvc/include ${SOURCE_BASE_DIR}/exiv2-0.16/msvc/include + ${SOURCE_BASE_DIR}/exiv2-0.18/msvc/include ) include(FindLibraryWithDebug) @@ -79,13 +80,13 @@ find_library_with_debug(EXIV2_LIBRARIES WIN32_DEBUG_POSTFIX d NAMES exiv2 libexiv2 - PATHS /usr/lib /usr/local/lib ${SOURCE_BASE_DIR}/exiv2/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.16/msvc/lib + PATHS /usr/lib /usr/local/lib ${SOURCE_BASE_DIR}/exiv2/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.16/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.18/msvc/lib ) find_library_with_debug(EXIV2EXPAT_LIBRARIES WIN32_DEBUG_POSTFIX d NAMES libexpat - PATHS /usr/lib /usr/local/lib ${SOURCE_BASE_DIR}/exiv2/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.16/msvc/lib + PATHS /usr/lib /usr/local/lib ${SOURCE_BASE_DIR}/exiv2/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.16/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.18/msvc/lib ) SET(EXIV2_LIBRARIES ${EXIV2_LIBRARIES} ${EXIV2EXPAT_LIBRARIES}) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-02-10 23:22:14
|
Revision: 3637 http://hugin.svn.sourceforge.net/hugin/?rev=3637&view=rev Author: brunopostle Date: 2009-02-10 21:47:20 +0000 (Tue, 10 Feb 2009) Log Message: ----------- housekeeping Modified Paths: -------------- hugin/trunk/ChangeLog hugin/trunk/README Modified: hugin/trunk/ChangeLog =================================================================== --- hugin/trunk/ChangeLog 2009-02-10 21:30:45 UTC (rev 3636) +++ hugin/trunk/ChangeLog 2009-02-10 21:47:20 UTC (rev 3637) @@ -1,3 +1,93 @@ +2009-02-10 21:30 brunopostle + + * src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp: + Fix stack detection when spanning 180 degree boundary, bug + #2084923 + +2009-02-10 11:15 stativ + + * src/hugin1/PT/utils.h, src/hugin1/base_wx/RunStitchPanel.cpp, + src/hugin1/hugin/MainFrame.cpp, + src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp, + src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.h, + src/tools/pto2mk.cpp: Export temp directory settings to makefile, + so programs invoked by make can use it. Should fix bug #2036114. + +2009-02-09 21:43 gkohlmeyer + + * CMakeLists.txt, CMakeModules/FindBoost.cmake, + CMakeModules/FindExiv2.cmake: Updated cmake files for new hugin + SDK; may rise problems due to naming of wxWidgets directory + +2009-02-08 22:36 brunopostle + + * src/hugin1/hugin/xrc/data/help_en_EN/Gl_preview.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_Main_window.html, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_center_pano.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_edit_add.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_filenew.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_fileopen.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_filesave.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_filesaveas.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_fit_pano.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_info.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_list.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_optimize.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_preview.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_preview_auto_update.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_preview_num_transform.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_preview_show_all.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_preview_show_none.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_redo.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_reload.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_straighten_pano.png, + src/hugin1/hugin/xrc/data/help_en_EN/Hugin_undo.png: Update + manual + +2009-02-08 18:11 brunopostle + + * src/hugin1/hugin/PanoPanel.cpp, src/translations/bg.po, + src/translations/ca_ES.po, src/translations/cs_CZ.po, + src/translations/de.po, src/translations/en_GB.po, + src/translations/es.po, src/translations/fr.po, + src/translations/hu.po, src/translations/hugin.pot, + src/translations/it.po, src/translations/ja.po, + src/translations/ko.po, src/translations/nl.po, + src/translations/pl.po, src/translations/pt_BR.po, + src/translations/ru.po, src/translations/sk.po, + src/translations/sv.po, src/translations/uk.po, + src/translations/zh_CN.po: Attempt to provide translatable + strings for projection names + +2009-02-08 16:29 brunopostle + + * src/translations/de.po: Fix mismatching `msgid' and `msgstr' + entries (Harry van der Wolf) + +2009-02-07 13:44 stativ + + * platforms/linux/smartblend, platforms/linux/smartblend.README: + Some polishing to the smartblend wrapper. Now it also removes + --compresion with numerical value (for JPEG files). Use wine's + return value as a return value of script. Added possibility to + override settings by setting SMARTBLEND variable. + +2009-02-06 23:08 brunopostle + + * src/translations/de.po: German translation update (Joachim + Schneider) + +2009-02-06 23:08 brunopostle + + * src/hugin1/hugin/xrc/data/info.png, + src/hugin1/hugin/xrc/data/info.svg, + src/hugin1/hugin/xrc/data/list.png, + src/hugin1/hugin/xrc/data/list.svg: More icon tweaks + +2009-02-05 23:44 brunopostle + + * CMakeLists.txt, ChangeLog: housekeeping + 2009-02-04 08:50 stativ * src/deghosting/hugin_hdrmerge.cpp, src/deghosting/khan.cpp, Modified: hugin/trunk/README =================================================================== --- hugin/trunk/README 2009-02-10 21:30:45 UTC (rev 3636) +++ hugin/trunk/README 2009-02-10 21:47:20 UTC (rev 3637) @@ -34,7 +34,7 @@ The following external programs are required: -1. enblend 3.1 or later +1. enblend 3.2 or later, this includes the enfuse tool 2. exiftool from the Image::ExifTool perl module The following external programs are highly recommended: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <st...@us...> - 2009-02-20 08:11:55
|
Revision: 3657 http://hugin.svn.sourceforge.net/hugin/?rev=3657&view=rev Author: stativ Date: 2009-02-20 08:11:48 +0000 (Fri, 20 Feb 2009) Log Message: ----------- Unify line endings to \n Modified Paths: -------------- hugin/trunk/CMakeModules/FindJPEG.cmake hugin/trunk/CMakeModules/FindPNG.cmake hugin/trunk/CMakeModules/FindTIFF.cmake hugin/trunk/CMakeModules/FindZLIB.cmake hugin/trunk/src/PTBatcher/Batch.cpp hugin/trunk/src/PTBatcher/Batch.h hugin/trunk/src/PTBatcher/PTBatcher.cpp hugin/trunk/src/PTBatcher/PTBatcher.h hugin/trunk/src/PTBatcher/ProjectArray.cpp hugin/trunk/src/PTBatcherGUI/BatchFrame.cpp hugin/trunk/src/PTBatcherGUI/BatchFrame.h hugin/trunk/src/PTBatcherGUI/DirTraverser.h hugin/trunk/src/PTBatcherGUI/PTBatcherGUI.cpp hugin/trunk/src/PTBatcherGUI/ProjectListBox.cpp hugin/trunk/src/PTBatcherGUI/ProjectListBox.h hugin/trunk/src/hugin1/hugin/xrc/cp_editor_panel.xrc hugin/trunk/src/hugin1/hugin/xrc/pano_panel.xrc hugin/trunk/src/hugin1/hugin/xrc/pref_dialog.xrc Modified: hugin/trunk/CMakeModules/FindJPEG.cmake =================================================================== --- hugin/trunk/CMakeModules/FindJPEG.cmake 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/CMakeModules/FindJPEG.cmake 2009-02-20 08:11:48 UTC (rev 3657) @@ -1,37 +1,37 @@ -# - Find JPEG for Hugin 0.7 01Nov2007 TKSharpless -# Added to support Windows build but should work anywhere. -# After looking in UNIX standard places, tries wxWidgets build -# tree, which should have this package. -# -# Call FIND_PACKAGE(wxWidgets REQUIRED) before calling this! -# -# reads cache variables -# wxWidgets_ROOT_DIR -# wxWidgets_LIB_DIR -# defines cache variables -# JPEG_INCLUDE_DIR, where to find headers -# JPEG_LIBRARIES, list of release link libraries -# JPEG_DEBUG_LIBRARIES, list of debug link libraries -# JPEG_FOUND, If != "YES", do not try to use JPEG - -FIND_PATH(JPEG_INCLUDE_DIR jpeglib.h - /usr/local/include - /usr/include - ${wxWidgets_ROOT_DIR}/src/jpeg -) - -include(FindLibraryWithDebug) - -find_library_with_debug(JPEG_LIBRARIES - WIN32_DEBUG_POSTFIX d - NAMES jpeg libjpeg wxjpeg - PATHS /usr/lib /usr/local/lib ${wxWidgets_LIB_DIR} -) - - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(JPEG DEFAULT_MSG - JPEG_INCLUDE_DIR JPEG_LIBRARIES) - -MARK_AS_ADVANCED(JPEG_INCLUDE_DIR JPEG_LIBRARIES ) - +# - Find JPEG for Hugin 0.7 01Nov2007 TKSharpless +# Added to support Windows build but should work anywhere. +# After looking in UNIX standard places, tries wxWidgets build +# tree, which should have this package. +# +# Call FIND_PACKAGE(wxWidgets REQUIRED) before calling this! +# +# reads cache variables +# wxWidgets_ROOT_DIR +# wxWidgets_LIB_DIR +# defines cache variables +# JPEG_INCLUDE_DIR, where to find headers +# JPEG_LIBRARIES, list of release link libraries +# JPEG_DEBUG_LIBRARIES, list of debug link libraries +# JPEG_FOUND, If != "YES", do not try to use JPEG + +FIND_PATH(JPEG_INCLUDE_DIR jpeglib.h + /usr/local/include + /usr/include + ${wxWidgets_ROOT_DIR}/src/jpeg +) + +include(FindLibraryWithDebug) + +find_library_with_debug(JPEG_LIBRARIES + WIN32_DEBUG_POSTFIX d + NAMES jpeg libjpeg wxjpeg + PATHS /usr/lib /usr/local/lib ${wxWidgets_LIB_DIR} +) + + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(JPEG DEFAULT_MSG + JPEG_INCLUDE_DIR JPEG_LIBRARIES) + +MARK_AS_ADVANCED(JPEG_INCLUDE_DIR JPEG_LIBRARIES ) + Modified: hugin/trunk/CMakeModules/FindPNG.cmake =================================================================== --- hugin/trunk/CMakeModules/FindPNG.cmake 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/CMakeModules/FindPNG.cmake 2009-02-20 08:11:48 UTC (rev 3657) @@ -1,43 +1,43 @@ -# - Find PNG for Hugin 0.7 01Nov2007 TKSharpless -# Added to support Windows build but should work anywhere. -# After looking in UNIX standard places, tries wxWidgets build -# tree, which should have this package. -# -# Call FIND_PACKAGE(wxWidgets REQUIRED) before calling this! -# -# reads cache variables -# wxWidgets_ROOT_DIR -# wxWidgets_LIB_DIR -# defines cache variables -# PNG_INCLUDE_DIR, where to find headers -# PNG_LIBRARIES, list of release link libraries. -# PNG_FOUND, If != "YES", do not try to use PNG. -# None of the above will be defined unless ZLIB can be found - -INCLUDE(FindZLIB) - -include(FindLibraryWithDebug) - -SET(PNG_FOUND "NO") - -IF (ZLIB_FOUND) - FIND_PATH(PNG_INCLUDE_DIR png.h - /usr/local/include - /usr/include - ${wxWidgets_ROOT_DIR}/src/png - ) - - find_library_with_debug(PNG_LIBRARIES - WIN32_DEBUG_POSTFIX d - NAMES png libpng wxpng - PATHS /usr/lib /usr/local/lib ${wxWidgets_LIB_DIR} - ) - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(PNG DEFAULT_MSG - PNG_INCLUDE_DIR PNG_LIBRARIES) - - SET(PNG_LIBRARIES ${PNG_LIBRARIES} ${ZLIB_LIBRARIES}) - MARK_AS_ADVANCED(PNG_INCLUDE_DIR PNG_LIBRARIES ) -ENDIF(ZLIB_FOUND) - +# - Find PNG for Hugin 0.7 01Nov2007 TKSharpless +# Added to support Windows build but should work anywhere. +# After looking in UNIX standard places, tries wxWidgets build +# tree, which should have this package. +# +# Call FIND_PACKAGE(wxWidgets REQUIRED) before calling this! +# +# reads cache variables +# wxWidgets_ROOT_DIR +# wxWidgets_LIB_DIR +# defines cache variables +# PNG_INCLUDE_DIR, where to find headers +# PNG_LIBRARIES, list of release link libraries. +# PNG_FOUND, If != "YES", do not try to use PNG. +# None of the above will be defined unless ZLIB can be found + +INCLUDE(FindZLIB) + +include(FindLibraryWithDebug) + +SET(PNG_FOUND "NO") + +IF (ZLIB_FOUND) + FIND_PATH(PNG_INCLUDE_DIR png.h + /usr/local/include + /usr/include + ${wxWidgets_ROOT_DIR}/src/png + ) + + find_library_with_debug(PNG_LIBRARIES + WIN32_DEBUG_POSTFIX d + NAMES png libpng wxpng + PATHS /usr/lib /usr/local/lib ${wxWidgets_LIB_DIR} + ) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(PNG DEFAULT_MSG + PNG_INCLUDE_DIR PNG_LIBRARIES) + + SET(PNG_LIBRARIES ${PNG_LIBRARIES} ${ZLIB_LIBRARIES}) + MARK_AS_ADVANCED(PNG_INCLUDE_DIR PNG_LIBRARIES ) +ENDIF(ZLIB_FOUND) + Modified: hugin/trunk/CMakeModules/FindTIFF.cmake =================================================================== --- hugin/trunk/CMakeModules/FindTIFF.cmake 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/CMakeModules/FindTIFF.cmake 2009-02-20 08:11:48 UTC (rev 3657) @@ -1,42 +1,42 @@ -# - Find TIFF for Hugin 0.7 01Nov2007 TKSharpless -# Added to support Windows build but should work anywhere. -# After looking in UNIX standard places, tries wxWidgets build -# tree, which should have this package. -# -# Call FIND_PACKAGE(wxWidgets REQUIRED) before calling this! -# -# reads cache variables -# wxWidgets_ROOT_DIR -# wxWidgets_LIB_DIR -# defines cache variables -# TIFF_INCLUDE_DIR, where to find headers -# TIFF_LIBRARIES, list of link libraries for release -# TIFF_DEBUG_LIBRARIES ditto for debug -# TIFF_FOUND, If != "YES", do not try to use TIFF. - -FIND_PATH(TIFF_INCLUDE_DIR tiff.h - /usr/local/include - /usr/include - ${SOURCE_BASE_DIR}/tiff-3.8.2/libtiff - ${SOURCE_BASE_DIR}/tiff-4.0.0alpha/libtiff - ${wxWidgets_ROOT_DIR}/src/tiff -) - -include(FindLibraryWithDebug) - -find_library_with_debug(TIFF_LIBRARIES - WIN32_DEBUG_POSTFIX d - NAMES tiff libtiff wxtiff - PATHS /usr/lib /usr/local/lib - ${SOURCE_BASE_DIR}/tiff-3.8.2/libtiff - ${SOURCE_BASE_DIR}/tiff-4.0.0alpha/libtiff - ${wxWidgets_LIB_DIR} -) - - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(TIFF DEFAULT_MSG - TIFF_INCLUDE_DIR TIFF_LIBRARIES) - -MARK_AS_ADVANCED(TIFF_INCLUDE_DIR TIFF_LIBRARIES) - +# - Find TIFF for Hugin 0.7 01Nov2007 TKSharpless +# Added to support Windows build but should work anywhere. +# After looking in UNIX standard places, tries wxWidgets build +# tree, which should have this package. +# +# Call FIND_PACKAGE(wxWidgets REQUIRED) before calling this! +# +# reads cache variables +# wxWidgets_ROOT_DIR +# wxWidgets_LIB_DIR +# defines cache variables +# TIFF_INCLUDE_DIR, where to find headers +# TIFF_LIBRARIES, list of link libraries for release +# TIFF_DEBUG_LIBRARIES ditto for debug +# TIFF_FOUND, If != "YES", do not try to use TIFF. + +FIND_PATH(TIFF_INCLUDE_DIR tiff.h + /usr/local/include + /usr/include + ${SOURCE_BASE_DIR}/tiff-3.8.2/libtiff + ${SOURCE_BASE_DIR}/tiff-4.0.0alpha/libtiff + ${wxWidgets_ROOT_DIR}/src/tiff +) + +include(FindLibraryWithDebug) + +find_library_with_debug(TIFF_LIBRARIES + WIN32_DEBUG_POSTFIX d + NAMES tiff libtiff wxtiff + PATHS /usr/lib /usr/local/lib + ${SOURCE_BASE_DIR}/tiff-3.8.2/libtiff + ${SOURCE_BASE_DIR}/tiff-4.0.0alpha/libtiff + ${wxWidgets_LIB_DIR} +) + + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(TIFF DEFAULT_MSG + TIFF_INCLUDE_DIR TIFF_LIBRARIES) + +MARK_AS_ADVANCED(TIFF_INCLUDE_DIR TIFF_LIBRARIES) + Modified: hugin/trunk/CMakeModules/FindZLIB.cmake =================================================================== --- hugin/trunk/CMakeModules/FindZLIB.cmake 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/CMakeModules/FindZLIB.cmake 2009-02-20 08:11:48 UTC (rev 3657) @@ -1,45 +1,45 @@ -# - Find zlib -# Find the native ZLIB includes and library -# -# ZLIB_INCLUDE_DIR - where to find zlib.h, etc. -# ZLIB_LIBRARIES - List of libraries when using zlib. -# ZLIB_FOUND - True if zlib found. - -# - Find TIFF for Hugin 0.7 01Nov2007 TKSharpless -# Added to support Windows build but should work anywhere. -# After looking in UNIX standard places, tries wxWidgets build -# tree, which should have this package. -# -# reads cache variables -# wxWidgets_ROOT_DIR -# wxWidgets_LIB_DIR -# - -IF (ZLIB_INCLUDE_DIR) - # Already in cache, be silent - SET(ZLIB_FIND_QUIETLY TRUE) -ENDIF (ZLIB_INCLUDE_DIR) - -FIND_PATH(ZLIB_INCLUDE_DIR zlib.h - /usr/local/include - /usr/include - ${wxWidgets_ROOT_DIR}/src/zlib -) - -include(FindLibraryWithDebug) - -find_library_with_debug(ZLIB_LIBRARIES - WIN32_DEBUG_POSTFIX d - NAMES z zlib wxzlib - PATHS /usr/lib /usr/local/lib ${wxWidgets_LIB_DIR} -) - - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(ZLIB DEFAULT_MSG - ZLIB_INCLUDE_DIR ZLIB_LIBRARIES) - -MARK_AS_ADVANCED( - ZLIB_LIBRARIES - ZLIB_INCLUDE_DIR - ) +# - Find zlib +# Find the native ZLIB includes and library +# +# ZLIB_INCLUDE_DIR - where to find zlib.h, etc. +# ZLIB_LIBRARIES - List of libraries when using zlib. +# ZLIB_FOUND - True if zlib found. + +# - Find TIFF for Hugin 0.7 01Nov2007 TKSharpless +# Added to support Windows build but should work anywhere. +# After looking in UNIX standard places, tries wxWidgets build +# tree, which should have this package. +# +# reads cache variables +# wxWidgets_ROOT_DIR +# wxWidgets_LIB_DIR +# + +IF (ZLIB_INCLUDE_DIR) + # Already in cache, be silent + SET(ZLIB_FIND_QUIETLY TRUE) +ENDIF (ZLIB_INCLUDE_DIR) + +FIND_PATH(ZLIB_INCLUDE_DIR zlib.h + /usr/local/include + /usr/include + ${wxWidgets_ROOT_DIR}/src/zlib +) + +include(FindLibraryWithDebug) + +find_library_with_debug(ZLIB_LIBRARIES + WIN32_DEBUG_POSTFIX d + NAMES z zlib wxzlib + PATHS /usr/lib /usr/local/lib ${wxWidgets_LIB_DIR} +) + + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(ZLIB DEFAULT_MSG + ZLIB_INCLUDE_DIR ZLIB_LIBRARIES) + +MARK_AS_ADVANCED( + ZLIB_LIBRARIES + ZLIB_INCLUDE_DIR + ) Modified: hugin/trunk/src/PTBatcher/Batch.cpp =================================================================== --- hugin/trunk/src/PTBatcher/Batch.cpp 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/src/PTBatcher/Batch.cpp 2009-02-20 08:11:48 UTC (rev 3657) @@ -22,23 +22,23 @@ * License along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - */ - + */ + #include "Batch.h" -#include <wx/stdpaths.h> - +#include <wx/stdpaths.h> + BEGIN_EVENT_TABLE(Batch, wxFrame) EVT_END_PROCESS(-1, Batch::OnProcessTerminate) -END_EVENT_TABLE() - -Batch::Batch(wxFrame* parent, wxString path, bool bgui) : wxFrame(parent,wxID_ANY,_("Batch")){ - //default flag settings - parallel = false; - deleteFiles = false; - shutdown = false; - overwrite = true; - verbose = false; - gui = bgui; +END_EVENT_TABLE() + +Batch::Batch(wxFrame* parent, wxString path, bool bgui) : wxFrame(parent,wxID_ANY,_("Batch")){ + //default flag settings + parallel = false; + deleteFiles = false; + shutdown = false; + overwrite = true; + verbose = false; + gui = bgui; m_cancelled = false; m_paused = false; m_running = false; @@ -79,22 +79,22 @@ if(!gui) m_locale.AddCatalogLookupPathPrefix(wxT(INSTALL_LOCALE_DIR)); PTPrograms progs = getPTProgramsConfig(wxT(""), wxConfigBase::Get()); -#endif - +#endif + // update incompatible configuration entries. updateHuginConfig(wxConfigBase::Get()); // set the name of locale recource to look for - m_locale.AddCatalog(wxT("hugin")); -} - -void Batch::AddAppToBatch(wxString app) -{ + m_locale.AddCatalog(wxT("hugin")); +} + +void Batch::AddAppToBatch(wxString app) +{ Project *newApp = new Project(app); - m_projList.Add(newApp); -} - -void Batch::AddProjectToBatch(wxString projectFile, wxString outputFile) + m_projList.Add(newApp); +} + +void Batch::AddProjectToBatch(wxString projectFile, wxString outputFile) { wxFileName name(projectFile); @@ -102,22 +102,22 @@ { Project *proj = new Project(projectFile,outputFile); m_projList.Add(proj); - /*if(gui) - ((wxFrame*)GetParent())->SetStatusText(_T("Added project ")+projectFile+_T(" with output ")+outputFile); - else if(verbose) + /*if(gui) + ((wxFrame*)GetParent())->SetStatusText(_T("Added project ")+projectFile+_T(" with output ")+outputFile); + else if(verbose) cout << "Added project " << projectFile.char_str() << " with output " << outputFile.char_str() << endl;*/ } else { //on output set as "", it defaults to same path and name as project file Project *proj = new Project(projectFile,name.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR) + name.GetName()); m_projList.Add(proj); - /*if(gui) - ((wxFrame*)GetParent())->SetStatusText(_T("Added project ")+projectFile); - else if(verbose) - cout << "Added project " << projectFile.char_str() << endl;*/ - } -} - + /*if(gui) + ((wxFrame*)GetParent())->SetStatusText(_T("Added project ")+projectFile); + else if(verbose) + cout << "Added project " << projectFile.char_str() << endl;*/ + } +} + bool Batch::AllDone() { for(unsigned int i=0; i<m_projList.GetCount(); i++) @@ -162,7 +162,7 @@ //we set the id generator we got from file Project::idGenerator = idGenTemp; } -} +} void Batch::CancelBatch() { @@ -170,7 +170,7 @@ for(int i=0; i<GetRunningCount(); i++) CancelProject(i); m_running = false; -} +} void Batch::CancelProject(int index) { wxCommandEvent event; @@ -221,7 +221,7 @@ pid = m_stitchFrames.Item(i)->GetProcessId(); if(waitpid(pid,&status,0)==-1) SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); //we set to failed if waitpid terminated with an error - if(!WIFEXITED(status) || WEXITSTATUS(status)!=0) + if(!WIFEXITED(status) || WEXITSTATUS(status)!=0) SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); //we set to failed if child terminated abnormally or with a bad exit code } #endif @@ -343,39 +343,39 @@ return m_stitchFrames.GetCount(); } -Project::Status Batch::GetStatus(int index) -{ - if((unsigned int)index<m_projList.GetCount()) - return m_projList.Item(index).status; - else if(gui) - wxMessageBox( _("Error: Could not get status, project with index ")+wxString::Format(_("%d"),index)+_(" is not in list."),_("Error!"),wxOK | wxICON_INFORMATION ); - else if(verbose) - cout << "Error: Could not get status, project with index " << index << " is not in list." << endl; - return Project::MISSING; -} +Project::Status Batch::GetStatus(int index) +{ + if((unsigned int)index<m_projList.GetCount()) + return m_projList.Item(index).status; + else if(gui) + wxMessageBox( _("Error: Could not get status, project with index ")+wxString::Format(_("%d"),index)+_(" is not in list."),_("Error!"),wxOK | wxICON_INFORMATION ); + else if(verbose) + cout << "Error: Could not get status, project with index " << index << " is not in list." << endl; + return Project::MISSING; +} bool Batch::IsPaused() { return m_paused; } -void Batch::ListBatch() -{ - if(m_projList.GetCount() == 0) - cout << "Batch is empty." << endl; - else - { - cout << "List of projects in batch:" << endl << - "[ID] [project path] [output filename] [status]" << endl << - "-------------------------------------" << endl; - for(unsigned int i=0; i<m_projList.GetCount(); i++) - { +void Batch::ListBatch() +{ + if(m_projList.GetCount() == 0) + cout << "Batch is empty." << endl; + else + { + cout << "List of projects in batch:" << endl << + "[ID] [project path] [output filename] [status]" << endl << + "-------------------------------------" << endl; + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { cout << m_projList.Item(i).id << " " << (const char*)m_projList.Item(i).path.char_str() << " " << (const char*)m_projList.Item(i).prefix.char_str() - << " " << (const char*)m_projList.Item(i).GetStatusText().char_str() << endl; - } - } -} - - + << " " << (const char*)m_projList.Item(i).GetStatusText().char_str() << endl; + } + } +} + + int Batch::LoadBatchFile(wxString file) { int clearCode = ClearBatch(); @@ -399,38 +399,38 @@ int Batch::LoadTemp() { - wxDir* workingDir = new wxDir(wxStandardPaths::Get().GetUserConfigDir()); - wxString pending; - wxString fileTemp = _T(".ptbt*"); - wxString temp = _T(""); - //we check for existing temporary files - if(workingDir->GetFirst(&temp,fileTemp,wxDIR_FILES)) - { - //we find the last existing tempfile (there should be at most two, but we check for multiple just in case) - while(workingDir->GetNext(&pending)) - { + wxDir* workingDir = new wxDir(wxStandardPaths::Get().GetUserConfigDir()); + wxString pending; + wxString fileTemp = _T(".ptbt*"); + wxString temp = _T(""); + //we check for existing temporary files + if(workingDir->GetFirst(&temp,fileTemp,wxDIR_FILES)) + { + //we find the last existing tempfile (there should be at most two, but we check for multiple just in case) + while(workingDir->GetNext(&pending)) + { wxFileName tempFile(temp); wxFileName pendingFile(pending); wxDateTime* create1 = new wxDateTime(); wxDateTime* create2 = new wxDateTime(); if(tempFile.FileExists() && pendingFile.FileExists()) { - tempFile.GetTimes(NULL,NULL,create1); - pendingFile.GetTimes(NULL,NULL,create2); - if(create2->IsLaterThan(*create1)) - { - wxRemoveFile(temp); - temp=wxString(pending); - } - } - else - { - //wxMessageBox( _T("Error reading temporary file"),_T("Error!"),wxOK | wxICON_INFORMATION ); - return 1; - } - } - } - //we load the data from the temp file + tempFile.GetTimes(NULL,NULL,create1); + pendingFile.GetTimes(NULL,NULL,create2); + if(create2->IsLaterThan(*create1)) + { + wxRemoveFile(temp); + temp=wxString(pending); + } + } + else + { + //wxMessageBox( _T("Error reading temporary file"),_T("Error!"),wxOK | wxICON_INFORMATION ); + return 1; + } + } + } + //we load the data from the temp file AppendBatchFile(workingDir->GetName()+wxFileName::GetPathSeparator()+temp); if(verbose && !gui) cout << "Loaded temp file." << endl; @@ -521,10 +521,10 @@ } i++; #if defined __WXMSW__ - Sleep(200); - #else - sleep(200); - #endif + Sleep(200); + #else + sleep(200); + #endif } progress.Close(); } @@ -692,51 +692,51 @@ } -void Batch::RemoveProject(int id) -{ - int index; - if((index=GetIndex(id)) != -1) - { - RemoveProjectAtIndex(GetIndex(id)); - } - else if(gui) - wxMessageBox( _("Error removing, project with id ")+wxString::Format(_T("%d"),id)+_(" is not in list."),_("Error!"),wxOK | wxICON_INFORMATION ); - else if(verbose) - cout << "Error: Project with id " << id << " is not in list." << endl; -} -void Batch::RemoveProjectAtIndex(int selIndex) -{ +void Batch::RemoveProject(int id) +{ + int index; + if((index=GetIndex(id)) != -1) + { + RemoveProjectAtIndex(GetIndex(id)); + } + else if(gui) + wxMessageBox( _("Error removing, project with id ")+wxString::Format(_T("%d"),id)+_(" is not in list."),_("Error!"),wxOK | wxICON_INFORMATION ); + else if(verbose) + cout << "Error: Project with id " << id << " is not in list." << endl; +} +void Batch::RemoveProjectAtIndex(int selIndex) +{ //we delete only successful project files and no applications - if(deleteFiles - && m_projList.Item(selIndex).id>=0 - && m_projList.Item(selIndex).status==Project::FINISHED) - { - wxFileName file(m_projList.Item(selIndex).path); - if(file.FileExists()) - { - if(!wxRemoveFile(file.GetFullPath())) - { - if(gui) - wxMessageBox( _("Error: Could not delete project file ")+file.GetFullPath(),_("Error!"),wxOK | wxICON_INFORMATION ); - else if(verbose) - cout << "Error: Could not delete project file " << (const char*)file.GetFullPath().char_str() << endl; - } + if(deleteFiles + && m_projList.Item(selIndex).id>=0 + && m_projList.Item(selIndex).status==Project::FINISHED) + { + wxFileName file(m_projList.Item(selIndex).path); + if(file.FileExists()) + { + if(!wxRemoveFile(file.GetFullPath())) + { + if(gui) + wxMessageBox( _("Error: Could not delete project file ")+file.GetFullPath(),_("Error!"),wxOK | wxICON_INFORMATION ); + else if(verbose) + cout << "Error: Could not delete project file " << (const char*)file.GetFullPath().char_str() << endl; + } } } - m_projList.RemoveAt(selIndex); - if(m_projList.GetCount()==0) //reset the id generator on empty list - Project::idGenerator=1; + m_projList.RemoveAt(selIndex); + if(m_projList.GetCount()==0) //reset the id generator on empty list + Project::idGenerator=1; } - + void Batch::RunBatch() -{ - if(!gui && m_projList.GetCount() == 0) - cout << "Batch is empty." << endl; - else if(!m_running) - { - if(gui) - ((wxFrame*)GetParent())->SetStatusText(_("Running batch...")); - else +{ + if(!gui && m_projList.GetCount() == 0) + cout << "Batch is empty." << endl; + else if(!m_running) + { + if(gui) + ((wxFrame*)GetParent())->SetStatusText(_("Running batch...")); + else cout << "Running batch..." << endl; bool cancelRun = false; //check for missing project files @@ -880,7 +880,7 @@ void Batch::SaveTemp() { //wxMessageBox( _T("saving temp file"),_T(""),wxOK | wxICON_INFORMATION ); - wxDir* workingDir = new wxDir(wxStandardPaths::Get().GetUserConfigDir()); + wxDir* workingDir = new wxDir(wxStandardPaths::Get().GetUserConfigDir()); wxString fileTemp = _T(".ptbt*"); //we get the old temp file fileTemp = workingDir->FindFirst(workingDir->GetName(),fileTemp,wxDIR_FILES); @@ -899,14 +899,14 @@ wxRemoveFile(fileTemp); } - + void Batch::SetStatus(int index,Project::Status status) { - if((unsigned int)index<m_projList.GetCount()) - m_projList.Item(index).status = status; - else if(gui) - wxMessageBox( _("Error: Could not set status, project with index ")+wxString::Format(_("%d"),index)+_(" is not in list."),_("Error!"),wxOK | wxICON_INFORMATION ); - else if(verbose) + if((unsigned int)index<m_projList.GetCount()) + m_projList.Item(index).status = status; + else if(gui) + wxMessageBox( _("Error: Could not set status, project with index ")+wxString::Format(_("%d"),index)+_(" is not in list."),_("Error!"),wxOK | wxICON_INFORMATION ); + else if(verbose) cout << "Error: Could not set status, project with index " << index << " is not in list." << endl; } void Batch::SwapProject(int index) Modified: hugin/trunk/src/PTBatcher/Batch.h =================================================================== --- hugin/trunk/src/PTBatcher/Batch.h 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/src/PTBatcher/Batch.h 2009-02-20 08:11:48 UTC (rev 3657) @@ -22,63 +22,63 @@ * License along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - */ - -#ifndef BATCH_H -#define BATCH_H - -#include <string> -#include "ProjectArray.h" -#include <wx/dir.h> -#ifndef __WXMSW__ + */ + +#ifndef BATCH_H +#define BATCH_H + +#include <string> +#include "ProjectArray.h" +#include <wx/dir.h> +#ifndef __WXMSW__ #include <sys/wait.h> #endif -//#include <wx/wfstream.h> -//#include <wx/event.h> -#include "RunStitchFrame.h" -//#include <hugin_config.h> - -#ifndef FRAMEARRAY -#define FRAMEARRAY - WX_DEFINE_ARRAY_PTR(RunStitchFrame*,FrameArray); -#endif - -using namespace std; - -class Batch : public wxFrame -{ -public: - bool parallel; - bool deleteFiles; - bool shutdown; - bool overwrite; - bool verbose; - bool gui; - - //Main constructor - Batch(wxFrame* parent, wxString path, bool bgui); - - //Adds an application entry in the batch list - void AddAppToBatch(wxString app); - //Adds a project entry in the batch list - void AddProjectToBatch(wxString projectFile, wxString outputFile = _T("")); - //Returns true if there are no more projects pending execution - bool AllDone(); - //Appends projects from file to batch list - void AppendBatchFile(wxString file); - //Stops batch run, failing projects in progress - void CancelBatch(); - //Cancels project at index in batch, failing it - void CancelProject(int index); - //Changes output prefix for project at index - void ChangePrefix(int index, wxString newPrefix); - //Called internally in console mode. Waits for running projects to complete and then runs next in batch - bool CheckProjectExistence(); - //Clears batch list and returns 0 if succesful - int ClearBatch(); - //Compares two project at indexes in both lists and returns true if they have identical project ids - bool CompareProjectsInLists(int stitchListIndex, int batchListIndex); - //Returns index of first waiting project in batch +//#include <wx/wfstream.h> +//#include <wx/event.h> +#include "RunStitchFrame.h" +//#include <hugin_config.h> + +#ifndef FRAMEARRAY +#define FRAMEARRAY + WX_DEFINE_ARRAY_PTR(RunStitchFrame*,FrameArray); +#endif + +using namespace std; + +class Batch : public wxFrame +{ +public: + bool parallel; + bool deleteFiles; + bool shutdown; + bool overwrite; + bool verbose; + bool gui; + + //Main constructor + Batch(wxFrame* parent, wxString path, bool bgui); + + //Adds an application entry in the batch list + void AddAppToBatch(wxString app); + //Adds a project entry in the batch list + void AddProjectToBatch(wxString projectFile, wxString outputFile = _T("")); + //Returns true if there are no more projects pending execution + bool AllDone(); + //Appends projects from file to batch list + void AppendBatchFile(wxString file); + //Stops batch run, failing projects in progress + void CancelBatch(); + //Cancels project at index in batch, failing it + void CancelProject(int index); + //Changes output prefix for project at index + void ChangePrefix(int index, wxString newPrefix); + //Called internally in console mode. Waits for running projects to complete and then runs next in batch + bool CheckProjectExistence(); + //Clears batch list and returns 0 if succesful + int ClearBatch(); + //Compares two project at indexes in both lists and returns true if they have identical project ids + bool CompareProjectsInLists(int stitchListIndex, int batchListIndex); + //Returns index of first waiting project in batch int GetFirstAvailable(); //Returns index of project with selected id int GetIndex(int id); @@ -89,61 +89,61 @@ //Returns number of projects in batch list with the input file path int GetProjectCountByPath(wxString path); //Returns number of projects currently in progress - int GetRunningCount(); - //Returns current status of project at index - Project::Status GetStatus(int index); - //Returns true if batch execution is currently paused - bool IsPaused(); - //Used in console mode. Prints out all projects and their statuses to the console - void ListBatch(); - //Clears current batch list and loads projects from batch file - int LoadBatchFile(wxString file); - //Loads temporary batch file - int LoadTemp(); - //Returns true if there are no failed projects in batch - bool NoErrors(); - //Called internally when all running processes have completed and need to be removed from running list - void OnProcessTerminate(wxProcessEvent & event); - //Called to start stitch of project with input scriptFile - bool OnStitch(wxString scriptFile, wxString outname, int id); - //Pauses and continues batch execution - void PauseBatch(); - //Removes project with id from batch list - void RemoveProject(int id); - //Removes project at index from batch list - void RemoveProjectAtIndex(int selIndex); - //Starts batch execution - void RunBatch(); - //Starts execution of next waiting project in batch - void RunNextInBatch(); - //Saves batch list to file - void SaveBatchFile(wxString file); - //Saves batch list to temporary file - void SaveTemp(); - //Used internally to set status of selected project - void SetStatus(int index,Project::Status status); - //Swaps position in batch of project at index with project at index+1 - void SwapProject(int index); - -private: - //environment config objects - wxConfigBase* m_config; - wxLocale m_locale; - //internal list of projects in batch - ProjectArray m_projList; - //list of projects in progress - FrameArray m_stitchFrames; + int GetRunningCount(); + //Returns current status of project at index + Project::Status GetStatus(int index); + //Returns true if batch execution is currently paused + bool IsPaused(); + //Used in console mode. Prints out all projects and their statuses to the console + void ListBatch(); + //Clears current batch list and loads projects from batch file + int LoadBatchFile(wxString file); + //Loads temporary batch file + int LoadTemp(); + //Returns true if there are no failed projects in batch + bool NoErrors(); + //Called internally when all running processes have completed and need to be removed from running list + void OnProcessTerminate(wxProcessEvent & event); + //Called to start stitch of project with input scriptFile + bool OnStitch(wxString scriptFile, wxString outname, int id); + //Pauses and continues batch execution + void PauseBatch(); + //Removes project with id from batch list + void RemoveProject(int id); + //Removes project at index from batch list + void RemoveProjectAtIndex(int selIndex); + //Starts batch execution + void RunBatch(); + //Starts execution of next waiting project in batch + void RunNextInBatch(); + //Saves batch list to file + void SaveBatchFile(wxString file); + //Saves batch list to temporary file + void SaveTemp(); + //Used internally to set status of selected project + void SetStatus(int index,Project::Status status); + //Swaps position in batch of project at index with project at index+1 + void SwapProject(int index); + +private: + //environment config objects + wxConfigBase* m_config; + wxLocale m_locale; + //internal list of projects in batch + ProjectArray m_projList; + //list of projects in progress + FrameArray m_stitchFrames; //batch state flags bool m_cancelled; - bool m_paused; - bool m_running; - bool m_clearedInProgress; - - //external program config - PTPrograms progs; - - DECLARE_EVENT_TABLE() -}; - -#endif //BATCH_H + bool m_paused; + bool m_running; + bool m_clearedInProgress; + + //external program config + PTPrograms progs; + + DECLARE_EVENT_TABLE() +}; + +#endif //BATCH_H Modified: hugin/trunk/src/PTBatcher/PTBatcher.cpp =================================================================== --- hugin/trunk/src/PTBatcher/PTBatcher.cpp 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/src/PTBatcher/PTBatcher.cpp 2009-02-20 08:11:48 UTC (rev 3657) @@ -1,251 +1,251 @@ -// -*- c-basic-offset: 4 -*- - -/** @file PTBatcher.cpp - * - * @brief Batch processor for Hugin - * - * @author Marko Kuder <mar...@gm...> - * - * $Id: PTBatcher.cpp 3322 2008-08-18 1:10:07Z mkuder $ - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this software; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include <string> - -#if (!defined __APPLE__) - #include "getopt.h" -#endif - -#ifdef WIN32 - #include <getopt.h> -#else - #include <unistd.h> -#endif - -#include "PTBatcher.h" - -using namespace std; - -//Prints out help text -void usage() -{ - cout << "PTBatcher: panotools batch stitcher" << endl - << endl - << "Usage: PTBatcher [options] input.pto output" << endl - << "Options:" << endl - << " -a file add project to queue. Unless -o option is present, the default prefix is appointed." << endl - << " -o output prefix (together with -a option)" << endl - << " -l list all projects in batch queue" << endl - << " -c clear all projects from batch queue" << endl - << " -x id remove project with specified id" << endl - << " -r reset all projects to waiting status" << endl - << " -b start batch process" << endl - << " -p use parallel processing (together with -b option)" << endl - << " -d delete .pto files when complete (together with -b option)" << endl - << " -s shutdown computer when complete (together with -b option)" << endl - << " -v verbose mode" << endl - << " -h print this help" << endl - << "Arguments:" << endl - << " input.pto Path to project file." << endl - << endl; -} - -#ifdef __WXMSW__ //windows version needs int main to enable console (and an OnInit function definition) -bool HostApp::OnInit(){return true;}; - -int main(int argc, char *argv[]) -#else //linux version needs main as OnInit for wxWidgets to work -bool HostApp::OnInit() -#endif -{ - //a character that defines the type of options - //encountered, so only logical combinations are used - char type = 'n'; - - bool optionError = false; - bool prefix = false; - - //create application and batch objects - #ifdef __WXMSW__ //windows version needs to create a wxApp object - HostApp app; - app.InitBatch(wxString::FromAscii(argv[0])); - Batch* batch = app.batch; - char** newArgv = argv; - #else //linux version needs to convert argv - InitBatch(argv[0]); - - char** newArgv = (char**)malloc(sizeof(char*)*argc); - for(int i=0; i<argc; i++) { - newArgv[i]= (char*)malloc(sizeof(char)*wxString(argv[i]).Length()); - strcpy(newArgv[i],wxString(argv[i]).char_str()); - } - #endif - //parse arguments - const char * optstring = "haolxrbpdsvc"; - char c; - while ((c = getopt (argc, newArgv, optstring)) != -1) - { - switch(c) { - case 'a': - if(type != 'n' && type != 'a') - optionError = true; - type = 'a'; break; - case 'l': - if(type != 'n' && type != 'l') - optionError = true; - type = 'l'; break; - case 'c': - if(type != 'n' && type != 'c') - optionError = true; - type = 'c'; break; - case 'x': - if(type != 'n' && type != 'x') - optionError = true; - type = 'x'; break; - case 'r': - if(type != 'n' && type != 'r') - optionError = true; - type = 'r'; break; - case 'b': - if(type != 'n' && type != 'b') - optionError = true; - type = 'b'; break; - case 'o': - prefix = true; break; - case 'p': - batch->parallel = true; break; - case 'd': - batch->deleteFiles = true; break; - case 's': - batch->shutdown = true; break; - case 'v': - batch->verbose = true; break; - case 'h': - usage(); return 0; - default: - usage(); return 0; - } - } - - //check for other errors in option definition - if(optionError || type == 'n' || - (type == 'a' && (batch->parallel || batch->deleteFiles || batch->shutdown)) || - (type == 'l' && (prefix || batch->parallel || batch->deleteFiles || batch->shutdown)) || - (type == 'c' && (prefix || batch->parallel || batch->deleteFiles || batch->shutdown)) || - (type == 'x' && (prefix || batch->parallel || batch->deleteFiles || batch->shutdown)) || - (type == 'r' && (prefix || batch->parallel || batch->deleteFiles || batch->shutdown)) || - (type == 'b' && prefix)) - { - usage(); - //this->OnExit(); - return 1; - } - string input = ""; - string output = ""; - if(type == 'a') - { - if(prefix && (optind+2 == argc)) - { - input = newArgv[optind]; - output = newArgv[optind+1]; - } - else if(!prefix && (optind+1 == argc)) - { - input = newArgv[optind]; - } - else - { - usage(); - return 1; - } - batch->LoadTemp(); - batch->AddProjectToBatch(wxString::FromAscii(input.c_str()),wxString::FromAscii(output.c_str())); - if(output == "") - cout << "Added project " << input << " with output " << output << endl; - else - cout << "Added project " << input << endl; - batch->SaveTemp(); - } - else if(type == 'l') - { - if(optind!=argc) - { - usage(); - return 1; - } - batch->LoadTemp(); - batch->ListBatch(); - //this->OnExit(); - return 0; - } - else if(type == 'c') - { - if(optind!=argc) - { - usage(); - return 1; - } - batch->LoadTemp(); - batch->ClearBatch(); - batch->SaveTemp(); - return 0; - } - else if(type == 'x') - { - if(optind+1==argc && atoi(newArgv[optind])!=0) - { - batch->LoadTemp(); - batch->RemoveProject(atoi(newArgv[optind])); - batch->SaveTemp(); - return 0; - } - else - { - usage(); - return 1; - } - } - else if(type == 'r') - { - if(optind!=argc) - { - usage(); - return 1; - } - batch->LoadTemp(); - for(int i=0; i<batch->GetProjectCount(); i++) - batch->SetStatus(i,Project::WAITING); - batch->SaveTemp(); - return 0; - } - else if(type == 'b') - { - batch->LoadTemp(); - batch->RunBatch(); - while(!batch->AllDone()) //wait for all projects to complete to save temp - { - #if defined __WXMSW__ - wxSleep(1); - #else - sleep(1000); - #endif - } - batch->SaveTemp(); - } - //this->OnExit(); - return EXIT_SUCCESS; -} +// -*- c-basic-offset: 4 -*- + +/** @file PTBatcher.cpp + * + * @brief Batch processor for Hugin + * + * @author Marko Kuder <mar...@gm...> + * + * $Id: PTBatcher.cpp 3322 2008-08-18 1:10:07Z mkuder $ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include <string> + +#if (!defined __APPLE__) + #include "getopt.h" +#endif + +#ifdef WIN32 + #include <getopt.h> +#else + #include <unistd.h> +#endif + +#include "PTBatcher.h" + +using namespace std; + +//Prints out help text +void usage() +{ + cout << "PTBatcher: panotools batch stitcher" << endl + << endl + << "Usage: PTBatcher [options] input.pto output" << endl + << "Options:" << endl + << " -a file add project to queue. Unless -o option is present, the default prefix is appointed." << endl + << " -o output prefix (together with -a option)" << endl + << " -l list all projects in batch queue" << endl + << " -c clear all projects from batch queue" << endl + << " -x id remove project with specified id" << endl + << " -r reset all projects to waiting status" << endl + << " -b start batch process" << endl + << " -p use parallel processing (together with -b option)" << endl + << " -d delete .pto files when complete (together with -b option)" << endl + << " -s shutdown computer when complete (together with -b option)" << endl + << " -v verbose mode" << endl + << " -h print this help" << endl + << "Arguments:" << endl + << " input.pto Path to project file." << endl + << endl; +} + +#ifdef __WXMSW__ //windows version needs int main to enable console (and an OnInit function definition) +bool HostApp::OnInit(){return true;}; + +int main(int argc, char *argv[]) +#else //linux version needs main as OnInit for wxWidgets to work +bool HostApp::OnInit() +#endif +{ + //a character that defines the type of options + //encountered, so only logical combinations are used + char type = 'n'; + + bool optionError = false; + bool prefix = false; + + //create application and batch objects + #ifdef __WXMSW__ //windows version needs to create a wxApp object + HostApp app; + app.InitBatch(wxString::FromAscii(argv[0])); + Batch* batch = app.batch; + char** newArgv = argv; + #else //linux version needs to convert argv + InitBatch(argv[0]); + + char** newArgv = (char**)malloc(sizeof(char*)*argc); + for(int i=0; i<argc; i++) { + newArgv[i]= (char*)malloc(sizeof(char)*wxString(argv[i]).Length()); + strcpy(newArgv[i],wxString(argv[i]).char_str()); + } + #endif + //parse arguments + const char * optstring = "haolxrbpdsvc"; + char c; + while ((c = getopt (argc, newArgv, optstring)) != -1) + { + switch(c) { + case 'a': + if(type != 'n' && type != 'a') + optionError = true; + type = 'a'; break; + case 'l': + if(type != 'n' && type != 'l') + optionError = true; + type = 'l'; break; + case 'c': + if(type != 'n' && type != 'c') + optionError = true; + type = 'c'; break; + case 'x': + if(type != 'n' && type != 'x') + optionError = true; + type = 'x'; break; + case 'r': + if(type != 'n' && type != 'r') + optionError = true; + type = 'r'; break; + case 'b': + if(type != 'n' && type != 'b') + optionError = true; + type = 'b'; break; + case 'o': + prefix = true; break; + case 'p': + batch->parallel = true; break; + case 'd': + batch->deleteFiles = true; break; + case 's': + batch->shutdown = true; break; + case 'v': + batch->verbose = true; break; + case 'h': + usage(); return 0; + default: + usage(); return 0; + } + } + + //check for other errors in option definition + if(optionError || type == 'n' || + (type == 'a' && (batch->parallel || batch->deleteFiles || batch->shutdown)) || + (type == 'l' && (prefix || batch->parallel || batch->deleteFiles || batch->shutdown)) || + (type == 'c' && (prefix || batch->parallel || batch->deleteFiles || batch->shutdown)) || + (type == 'x' && (prefix || batch->parallel || batch->deleteFiles || batch->shutdown)) || + (type == 'r' && (prefix || batch->parallel || batch->deleteFiles || batch->shutdown)) || + (type == 'b' && prefix)) + { + usage(); + //this->OnExit(); + return 1; + } + string input = ""; + string output = ""; + if(type == 'a') + { + if(prefix && (optind+2 == argc)) + { + input = newArgv[optind]; + output = newArgv[optind+1]; + } + else if(!prefix && (optind+1 == argc)) + { + input = newArgv[optind]; + } + else + { + usage(); + return 1; + } + batch->LoadTemp(); + batch->AddProjectToBatch(wxString::FromAscii(input.c_str()),wxString::FromAscii(output.c_str())); + if(output == "") + cout << "Added project " << input << " with output " << output << endl; + else + cout << "Added project " << input << endl; + batch->SaveTemp(); + } + else if(type == 'l') + { + if(optind!=argc) + { + usage(); + return 1; + } + batch->LoadTemp(); + batch->ListBatch(); + //this->OnExit(); + return 0; + } + else if(type == 'c') + { + if(optind!=argc) + { + usage(); + return 1; + } + batch->LoadTemp(); + batch->ClearBatch(); + batch->SaveTemp(); + return 0; + } + else if(type == 'x') + { + if(optind+1==argc && atoi(newArgv[optind])!=0) + { + batch->LoadTemp(); + batch->RemoveProject(atoi(newArgv[optind])); + batch->SaveTemp(); + return 0; + } + else + { + usage(); + return 1; + } + } + else if(type == 'r') + { + if(optind!=argc) + { + usage(); + return 1; + } + batch->LoadTemp(); + for(int i=0; i<batch->GetProjectCount(); i++) + batch->SetStatus(i,Project::WAITING); + batch->SaveTemp(); + return 0; + } + else if(type == 'b') + { + batch->LoadTemp(); + batch->RunBatch(); + while(!batch->AllDone()) //wait for all projects to complete to save temp + { + #if defined __WXMSW__ + wxSleep(1); + #else + sleep(1000); + #endif + } + batch->SaveTemp(); + } + //this->OnExit(); + return EXIT_SUCCESS; +} Modified: hugin/trunk/src/PTBatcher/PTBatcher.h =================================================================== --- hugin/trunk/src/PTBatcher/PTBatcher.h 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/src/PTBatcher/PTBatcher.h 2009-02-20 08:11:48 UTC (rev 3657) @@ -22,22 +22,22 @@ * License along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - */ - -#include "Batch.h" - -//Host application needed to use wxWidgets frame objects in console -class HostApp : public wxApp -{ -public: - //Pseudo constructor - virtual bool OnInit(); - - //Initializes batch object - void InitBatch(wxString path){ - batch = new Batch(NULL,path,false); - }; - Batch* batch; -}; - -IMPLEMENT_APP(HostApp) + */ + +#include "Batch.h" + +//Host application needed to use wxWidgets frame objects in console +class HostApp : public wxApp +{ +public: + //Pseudo constructor + virtual bool OnInit(); + + //Initializes batch object + void InitBatch(wxString path){ + batch = new Batch(NULL,path,false); + }; + Batch* batch; +}; + +IMPLEMENT_APP(HostApp) Modified: hugin/trunk/src/PTBatcher/ProjectArray.cpp =================================================================== --- hugin/trunk/src/PTBatcher/ProjectArray.cpp 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/src/PTBatcher/ProjectArray.cpp 2009-02-20 08:11:48 UTC (rev 3657) @@ -95,7 +95,7 @@ pano.setMemento(newPano); if (ptoVersion < 2) { HuginBase::PanoramaOptions opts = pano.getOptions(); - //needed to access config data + //needed to access config data wxConfig* config = new wxConfig(wxT("hugin")); wxConfigBase::Set(config); // no options stored in file, use default arguments in config Modified: hugin/trunk/src/PTBatcherGUI/BatchFrame.cpp =================================================================== --- hugin/trunk/src/PTBatcherGUI/BatchFrame.cpp 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/src/PTBatcherGUI/BatchFrame.cpp 2009-02-20 08:11:48 UTC (rev 3657) @@ -243,84 +243,84 @@ projListBox->Fill(m_batch); } -void *BatchFrame::Entry() -{ - - //we define the working dir to search in and the file name syntax of the spool files - //wxMessageBox( _T("new file received1"),_T("new file received1"),wxOK | wxICON_INFORMATION ); - wxDir* workingDir = new wxDir(wxStandardPaths::Get().GetUserConfigDir()); - wxString fileSent = _T(".ptbs*"); - wxString pending; - /*wxString fileTemp = _T(".ptbt*"); - wxString temp = _T(""); - //we check for existing temporary files - if(workingDir->GetFirst(&temp,fileTemp,wxDIR_FILES)) - { - //we find the last existing tempfile (there should be at most two, but we check for multiple just in case) - while(workingDir->GetNext(&pending)) - { +void *BatchFrame::Entry() +{ + + //we define the working dir to search in and the file name syntax of the spool files + //wxMessageBox( _T("new file received1"),_T("new file received1"),wxOK | wxICON_INFORMATION ); + wxDir* workingDir = new wxDir(wxStandardPaths::Get().GetUserConfigDir()); + wxString fileSent = _T(".ptbs*"); + wxString pending; + /*wxString fileTemp = _T(".ptbt*"); + wxString temp = _T(""); + //we check for existing temporary files + if(workingDir->GetFirst(&temp,fileTemp,wxDIR_FILES)) + { + //we find the last existing tempfile (there should be at most two, but we check for multiple just in case) + while(workingDir->GetNext(&pending)) + { wxFileName tempFile(temp); wxFileName pendingFile(pending); wxDateTime* create1 = new wxDateTime(); wxDateTime* create2 = new wxDateTime(); if(tempFile.FileExists() && pendingFile.FileExists()) { - tempFile.GetTimes(NULL,NULL,create1); - pendingFile.GetTimes(NULL,NULL,create2); - if(create2->IsLaterThan(*create1)) - { - wxRemoveFile(temp); - temp=wxString(pending); - } - } - else - { - wxMessageBox( _T("Error reading temporary file"),_T("Error!"),wxOK | wxICON_INFORMATION ); - } - } - } - - //we load the data from the temp file - wxGetApp().AppendBatchFile(workingDir->GetName()+wxFileName::GetPathSeparator()+temp);*/ - - bool change = false; - int projectCount = m_batch->GetProjectCount(); - //we constantly poll the working dir for new files and wait a bit on each loop - while(!m_closeThread) - { - //wxMessageBox( _T("test"),_T("Error!"),wxOK | wxICON_INFORMATION ); - pending = workingDir->FindFirst(workingDir->GetName(),fileSent,wxDIR_FILES); - //wxMessageBox( _T("test1"),_T("Error!"),wxOK | wxICON_INFORMATION ); - if(!pending.IsEmpty()) - { - wxString projectPending = _T(""); - //wxMessageBox( _T("new file received"),spoolFile,wxOK | wxICON_INFORMATION ); - wxFileInputStream* spoolFile = new wxFileInputStream(pending); - wxChar input = spoolFile->GetC(); - while(spoolFile->LastRead()!=0) - { - projectPending = projectPending + input; - input = spoolFile->GetC(); - } - m_batch->AddProjectToBatch(projectPending); - projListBox->AppendProject(m_batch->GetProject(m_batch->GetProjectCount()-1)); - change = true; - spoolFile->~wxFileInputStream(); - if(!wxRemoveFile(pending)) - wxMessageBox( _("Error: Could not remove temporary file"),_("Error!"),wxOK | wxICON_INFORMATION ); - - } - //wxMessageBox( _T("test2"),_T("Error!"),wxOK | wxICON_INFORMATION ); - wxFileName* tempFile; - //wxMessageBox( _T("test3"),_T("Error!"),wxOK | wxICON_INFORMATION ); - //check all projects in list for changes - //wxString message = wxString(); - //message = message << wxGetApp().m_projList.GetCount(); - //wxMessageBox( message,_T("Error!"),wxOK | wxICON_INFORMATION ); - for(int i = 0; i< m_batch->GetProjectCount(); i++) - { - if(m_batch->GetProject(i)->id >= 0) - { + tempFile.GetTimes(NULL,NULL,create1); + pendingFile.GetTimes(NULL,NULL,create2); + if(create2->IsLaterThan(*create1)) + { + wxRemoveFile(temp); + temp=wxString(pending); + } + } + else + { + wxMessageBox( _T("Error reading temporary file"),_T("Error!"),wxOK | wxICON_INFORMATION ); + } + } + } + + //we load the data from the temp file + wxGetApp().AppendBatchFile(workingDir->GetName()+wxFileName::GetPathSeparator()+temp);*/ + + bool change = false; + int projectCount = m_batch->GetProjectCount(); + //we constantly poll the working dir for new files and wait a bit on each loop + while(!m_closeThread) + { + //wxMessageBox( _T("test"),_T("Error!"),wxOK | wxICON_INFORMATION ); + pending = workingDir->FindFirst(workingDir->GetName(),fileSent,wxDIR_FILES); + //wxMessageBox( _T("test1"),_T("Error!"),wxOK | wxICON_INFORMATION ); + if(!pending.IsEmpty()) + { + wxString projectPending = _T(""); + //wxMessageBox( _T("new file received"),spoolFile,wxOK | wxICON_INFORMATION ); + wxFileInputStream* spoolFile = new wxFileInputStream(pending); + wxChar input = spoolFile->GetC(); + while(spoolFile->LastRead()!=0) + { + projectPending = projectPending + input; + input = spoolFile->GetC(); + } + m_batch->AddProjectToBatch(projectPending); + projListBox->AppendProject(m_batch->GetProject(m_batch->GetProjectCount()-1)); + change = true; + spoolFile->~wxFileInputStream(); + if(!wxRemoveFile(pending)) + wxMessageBox( _("Error: Could not remove temporary file"),_("Error!"),wxOK | wxICON_INFORMATION ); + + } + //wxMessageBox( _T("test2"),_T("Error!"),wxOK | wxICON_INFORMATION ); + wxFileName* tempFile; + //wxMessageBox( _T("test3"),_T("Error!"),wxOK | wxICON_INFORMATION ); + //check all projects in list for changes + //wxString message = wxString(); + //message = message << wxGetApp().m_projList.GetCount(); + //wxMessageBox( message,_T("Error!"),wxOK | wxICON_INFORMATION ); + for(int i = 0; i< m_batch->GetProjectCount(); i++) + { + if(m_batch->GetProject(i)->id >= 0) + { tempFile = new wxFileName(m_batch->GetProject(i)->path); if(tempFile->FileExists()) { @@ -354,31 +354,31 @@ m_batch->SetStatus(i,Project::MISSING); projListBox->SetMissing(projListBox->GetIndex(m_batch->GetProject(i)->id)); } - } - } - if(projListBox->UpdateStatus(i,m_batch->GetProject(i))) - change = true; - } - if(m_batch->GetProjectCount()!=projectCount) - { - projectCount = m_batch->GetProjectCount(); - change = true; - } - //if(tempFile!=NULL) - // free(tempFile); - if(change) - { - change = false; - m_batch->SaveTemp(); - } - - GetThread()->Sleep(1000); - //wxFile file; - //file.Create(workingDir->GetName()+wxFileName::GetPathSeparator()+_T("krneki.txt")); - //file.Close(); - } - //wxMessageBox(_T("Ending thread...")); - return 0; + } + } + if(projListBox->UpdateStatus(i,m_batch->GetProject(i))) + change = true; + } + if(m_batch->GetProjectCount()!=projectCount) + { + projectCount = m_batch->GetProjectCount(); + change = true; + } + //if(tempFile!=NULL) + // free(tempFile); + if(change) + { + change = false; + m_batch->SaveTemp(); + } + + GetThread()->Sleep(1000); + //wxFile file; + //file.Create(workingDir->GetName()+wxFileName::GetPathSeparator()+_T("krneki.txt")); + //file.Close(); + } + //wxMessageBox(_T("Ending thread...")); + return 0; } void BatchFrame::OnButtonAddCommand(wxCommandEvent &event) @@ -410,8 +410,8 @@ { wxConfig::Get()->Write(wxT("/BatchFrame/actualPath"), dlg.GetPath()); // remember for later //we traverse all subdirectories of chosen path - DirTraverser traverser; - wxDir dir(dlg.GetPath()); + DirTraverser traverser; + wxDir dir(dlg.GetPath()); dir.Traverse(traverser); wxArrayString projects = traverser.GetProjectFiles(); for(unsigned int i=0; i<projects.GetCount(); i++) @@ -441,7 +441,7 @@ for(unsigned int i=0; i<paths.GetCount(); i++) { wxFileName name(paths.Item(i)); - m_batch->AddProjectToBatch(paths.Item(i),name.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR) + name.GetName()); + m_batch->AddProjectToBatch(paths.Item(i),name.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR) + name.GetName()); SetStatusText(_("Added project ")+paths.Item(i)); projListBox->AppendProject(m_batch->GetProject(m_batch->GetProjectCount()-1)); } @@ -628,21 +628,21 @@ bool removeErrors=false; if(!m_batch->NoErrors()) { - wxMessageDialog message(this,_("There are failed projects in the list.\nRemove them also?"), _("Question"), + wxMessageDialog message(this,_("There are failed projects in the list.\nRemove them also?"), _("Question"), wxYES | wxNO | wxICON_INFORMATION ); if(message.ShowModal()==wxID_YES) removeErrors=true; } - for(int i=projListBox->GetItemCount()-1; i>=0; i--) - { - if(m_batch->GetStatus(i)==Project::FINISHED || - (removeErrors && m_batch->GetStatus(i)==Project::FAILED)) - { - projListBox->DeleteItem(i); - m_batch->RemoveProjectAtIndex(i); - } - - + for(int i=projListBox->GetItemCount()-1; i>=0; i--) + { + if(m_batch->GetStatus(i)==Project::FINISHED || + (removeErrors && m_batch->GetStatus(i)==Project::FAILED)) + { + projListBox->DeleteItem(i); + m_batch->RemoveProjectAtIndex(i); + } + + } @@ -708,7 +708,7 @@ } else { - for(int i=projListBox->GetItemCount()-1; i>=0; i--) + for(int i=projListBox->GetItemCount()-1; i>=0; i--) m_batch->SetStatus(i,Project::WAITING); } } @@ -972,7 +972,7 @@ wxShutdown(wxSHUTDOWN_POWEROFF); } i++; - GetThread()->Sleep(200); + GetThread()->Sleep(200); } progress.Close(); } Modified: hugin/trunk/src/PTBatcherGUI/BatchFrame.h =================================================================== --- hugin/trunk/src/PTBatcherGUI/BatchFrame.h 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/src/PTBatcherGUI/BatchFrame.h 2009-02-20 08:11:48 UTC (rev 3657) @@ -22,12 +22,12 @@ * License along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - */ - -#ifndef BATCHFRAME_H -#define BATCHFRAME_H - -#include "../PTBatcher/RunStitchFrame.h" + */ + +#ifndef BATCHFRAME_H +#define BATCHFRAME_H + +#include "../PTBatcher/RunStitchFrame.h" #include "../PTBatcher/Batch.h" #include "ProjectListBox.h" #include "DirTraverser.h" Modified: hugin/trunk/src/PTBatcherGUI/DirTraverser.h =================================================================== --- hugin/trunk/src/PTBatcherGUI/DirTraverser.h 2009-02-20 07:15:29 UTC (rev 3656) +++ hugin/trunk/src/PTBatcherGUI/DirTraverser.h 2009-02-20 08:11:48 UTC (rev 3657) @@ -22,42 +22,42 @@ * License along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * - */ - -#include <wx/dir.h> -#include <wx/filename.h> -//#include <wx/msgdlg.h> - -class DirTraverser : public wxDirTraverser -{ -public: - DirTraverser():wxDirTraverser(){ } - - //Called when directory traverser evaluates a file - virtual wxDirTraverseResult OnFile(const wxString& file) - { - wxFileName fileName(file); - wxString ext = fileName.GetExt(); - //we add all project files to array + */ + +#include <wx/dir.h> +#include <wx/filename.h> +//#include <wx/msgdlg.h> + +class DirTraverser : public wxDirTraverser +{ +public: + DirTraverser():wxDirTraverser(){ } + + //Called when directory traverser evaluates a file + virtual wxDirTraverseResult OnFile(const wxString& file) + { + wxFileName fileName(file); + wxString ext = fileName.GetExt(); + //we add all project files to array if (ext.CmpNoCase(wxT("pto")) == 0 || ext.CmpNoCase(wxT("ptp")) == 0|| - ext.CmpNoCase(wxT("pts")) == 0|| ext.CmpNoCase(wxT("oto")) == 0) - projectFiles.Add(file); - - //TO-DO: include image file heuristics to detect potential projects - return wxDIR_CONTINUE; - } - - //Called when directory traverser evaluates a directory - virtual wxDirTraverseResult OnDir(const wxString& WXUNUSED(dir)) - { - return wxDIR_CONTINUE; - } - - //Returns an array with all project files found - wxArrayString GetProjectFiles() - { - return projectFiles; - } -private: - wxArrayString projectFiles; -}; + ext.CmpNoCase(wxT("pts")) == 0|| ext.CmpNoCase(wxT("oto")) == 0) + projectFiles.Add(file); + + //TO-DO: include image file heuristics to detect potential projects + return wxDIR_CONTINUE; + } + + //Called when directory traverser evaluates a directory + virtual wxDirTraverseResult OnDir(const wxString& WXUNUSED(dir)) + { + return wxDIR_CO... [truncated message content] |
From: <gko...@us...> - 2009-02-22 13:32:15
|
Revision: 3663 http://hugin.svn.sourceforge.net/hugin/?rev=3663&view=rev Author: gkohlmeyer Date: 2009-02-22 13:32:03 +0000 (Sun, 22 Feb 2009) Log Message: ----------- Updated CMake files to find easily static windows boost libraries in SDK Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/CMakeModules/FindBoost.cmake Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2009-02-20 22:41:00 UTC (rev 3662) +++ hugin/trunk/CMakeLists.txt 2009-02-22 13:32:03 UTC (rev 3663) @@ -56,7 +56,6 @@ # version for internal libraries. set(HUGIN_LIB_VERSION 0.0) - # set include path for internal libraries before using finding and initializing # external dependencies. This makes sure that "our" include paths are specified # before any system includes @@ -125,7 +124,6 @@ INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR}) - FIND_PACKAGE(OpenEXR REQUIRED) include_directories(${OPENEXR_INCLUDE_DIR}) @@ -146,9 +144,6 @@ INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR}) ENDIF(GLEW_FOUND) - - - ## ## Panotools ## @@ -200,7 +195,6 @@ #INCLUDE_DIRECTORIES( ${VIPSCC_INCLUDE_DIRS} ) #LINK_DIRECTORIES( ${VIPSCC_LIBRARY_DIRS} ) - # # Check build type and set options accordingly # @@ -222,7 +216,6 @@ ENDIF(UNIX) ENDIF(${CMAKE_BUILD_TYPE} STREQUAL "Debug") - # # define destination dirs (relative to prefix) # @@ -278,6 +271,10 @@ ADD_DEFINITIONS(/D_SCL_SECURE_NO_WARNINGS) # Stop MSVC9 from bitching about POSIX names without underscores ADD_DEFINITIONS(/D_CRT_NONSTDC_NO_DEPRECATE) + # Show information about auto-linking library files during build, .e.g. + # "Linking to lib file: libboost_thread-vc90-mt-s-1_37.lib" + # This can be used to determine on which boost libraries Hugin depend on + #ADD_DEFINITIONS(/DBOOST_LIB_DIAGNOSTIC) # compile everything for the static C runtime FOREACH(TYPE C CXX) # makefiles use blank configuration Modified: hugin/trunk/CMakeModules/FindBoost.cmake =================================================================== --- hugin/trunk/CMakeModules/FindBoost.cmake 2009-02-20 22:41:00 UTC (rev 3662) +++ hugin/trunk/CMakeModules/FindBoost.cmake 2009-02-22 13:32:03 UTC (rev 3663) @@ -57,6 +57,10 @@ # IF(WIN32) + # static windows libraries start with prefix "lib", e.g. + # libboost_thread-vc90-mt-s.lib + SET(Boost_LIB_PREFIX lib) + # In windows, automatic linking is performed, so you do not have to specify the libraries. # If you are linking to a dynamic runtime, then you can choose to link to either a static or a # dynamic Boost library, the default is to do a static link. You can alter this for a specific @@ -175,6 +179,7 @@ mt il vc90-mt + vc90-mt-s vc80-mt vc71-mt ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2009-03-02 19:30:36
|
Revision: 3696 http://hugin.svn.sourceforge.net/hugin/?rev=3696&view=rev Author: brunopostle Date: 2009-03-02 19:30:21 +0000 (Mon, 02 Mar 2009) Log Message: ----------- make package_source: create tar.bz2 tarball instead of tar.Z Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/ChangeLog Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2009-03-02 00:03:49 UTC (rev 3695) +++ hugin/trunk/CMakeLists.txt 2009-03-02 19:30:21 UTC (rev 3696) @@ -338,7 +338,8 @@ SET(CPACK_PACKAGE_VERSION_PATCH "${V_PATCH}") SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${V_MAJOR}.${V_MINOR}") SET(CPACK_SOURCE_PACKAGE_FILE_NAME "hugin-${V_MAJOR}.${V_MINOR}.${V_PATCH}") -SET(CPACK_SOURCE_GENERATOR "TGZ") +SET(CPACK_GENERATOR "TGZ;TBZ2") +SET(CPACK_SOURCE_GENERATOR "TGZ;TBZ2") SET(CPACK_PACKAGE_CONTACT "hug...@go...") SET(CPACK_SET_DESTDIR "ON") SET(CPACK_SOURCE_IGNORE_FILES @@ -346,6 +347,7 @@ "/CMakeCache.txt$" "\\\\.dir/" "\\\\.tar\\\\.gz$" +"\\\\.tar\\\\.bz2$" "\\\\.tar\\\\.Z$" "\\\\.svn/" "\\\\.cvsignore$" Modified: hugin/trunk/ChangeLog =================================================================== --- hugin/trunk/ChangeLog 2009-03-02 00:03:49 UTC (rev 3695) +++ hugin/trunk/ChangeLog 2009-03-02 19:30:21 UTC (rev 3696) @@ -1,3 +1,50 @@ +2009-03-02 00:03 brunopostle + + * src/hugin_base/hugin_utils/utils.cpp, + src/hugin_base/panodata/PTScriptParsing.cpp: Fixes for gcc-4.4.0 + (Caolán McNamara) + +2009-03-01 22:47 brunopostle + + * src/hugin1/hugin/CMakeLists.txt, src/hugin1/hugin/LensPanel.cpp, + src/hugin1/hugin/LensPanel.h, src/hugin1/hugin/ResetDialog.cpp, + src/hugin1/hugin/ResetDialog.h, src/hugin1/hugin/huginApp.cpp, + src/hugin1/hugin/xrc/CMakeLists.txt, + src/hugin1/hugin/xrc/lens_panel.xrc, + src/hugin1/hugin/xrc/reset_dialog.xrc, + src/hugin_base/panodata/SrcPanoImage.cpp, + src/hugin_base/panodata/SrcPanoImage.h, src/translations/bg.po, + src/translations/ca_ES.po, src/translations/cs_CZ.po, + src/translations/de.po, src/translations/en_GB.po, + src/translations/es.po, src/translations/fr.po, + src/translations/hu.po, src/translations/hugin.pot, + src/translations/it.po, src/translations/ja.po, + src/translations/ko.po, src/translations/nl.po, + src/translations/pl.po, src/translations/pt_BR.po, + src/translations/ru.po, src/translations/sk.po, + src/translations/sv.po, src/translations/uk.po, + src/translations/zh_CN.po: Add 'Reset...' button to Camera and + Lens tab + 8 new translation strings (Thomas Modes) + +2009-03-01 09:28 stativ + + * src/PTBatcher/PTBatcher.cpp, src/hugin1/hugin/PanoPanel.cpp: + Changed wxConvUTF8 in PTBatcher to wxConvLocal. It should fix + problems with non ASCII characters under Windows. + +2009-03-01 08:05 stativ + + * src/hugin1/hugin/PanoPanel.cpp: Some fix for UTF-8 with Send to + batch. It should fix bug #2618889. + +2009-03-01 05:20 ippei + + * src/PTBatcherGUI/BatchFrame.cpp: Mac: edit in Hugin fixed. + +2009-02-28 22:47 brunopostle + + * ChangeLog: update ChangeLog from svn + 2009-02-28 22:11 brunopostle * src/hugin1/hugin/xrc/data/help_en_EN/Align_image_stack.html, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ip...@us...> - 2009-03-15 09:07:47
|
Revision: 3735 http://hugin.svn.sourceforge.net/hugin/?rev=3735&view=rev Author: ippei Date: 2009-03-15 09:07:35 +0000 (Sun, 15 Mar 2009) Log Message: ----------- moved PTBatcher/ and PTBbatcherGUI/ with wxWidgets dependency to hugin1/ptbatcher/ Modified Paths: -------------- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj hugin/trunk/src/CMakeLists.txt hugin/trunk/src/hugin1/CMakeLists.txt Added Paths: ----------- hugin/trunk/src/hugin1/ptbatcher/ hugin/trunk/src/hugin1/ptbatcher/Batch.cpp hugin/trunk/src/hugin1/ptbatcher/Batch.h hugin/trunk/src/hugin1/ptbatcher/BatchFrame.cpp hugin/trunk/src/hugin1/ptbatcher/BatchFrame.h hugin/trunk/src/hugin1/ptbatcher/CMakeLists.txt hugin/trunk/src/hugin1/ptbatcher/DirTraverser.h hugin/trunk/src/hugin1/ptbatcher/PTBatcher.cpp hugin/trunk/src/hugin1/ptbatcher/PTBatcher.desktop hugin/trunk/src/hugin1/ptbatcher/PTBatcher.h hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.cpp hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.desktop hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.h hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI_rc.aps hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI_rc.rc hugin/trunk/src/hugin1/ptbatcher/PTBatcher_rc.aps hugin/trunk/src/hugin1/ptbatcher/PTBatcher_rc.rc hugin/trunk/src/hugin1/ptbatcher/ProjectArray.cpp hugin/trunk/src/hugin1/ptbatcher/ProjectArray.h hugin/trunk/src/hugin1/ptbatcher/ProjectListBox.cpp hugin/trunk/src/hugin1/ptbatcher/ProjectListBox.h hugin/trunk/src/hugin1/ptbatcher/RunStitchFrame.cpp hugin/trunk/src/hugin1/ptbatcher/RunStitchFrame.h Removed Paths: ------------- hugin/trunk/src/PTBatcher/ hugin/trunk/src/PTBatcherGUI/ Modified: hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj =================================================================== --- hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2009-03-14 21:40:56 UTC (rev 3734) +++ hugin/trunk/mac/Hugin.xcodeproj/project.pbxproj 2009-03-15 09:07:35 UTC (rev 3735) @@ -709,6 +709,16 @@ 57CBEE3206BC715C00C43FF5 /* tiff.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 57114F1606BC2301004F4FA7 /* tiff.cxx */; }; 57CBEE3306BC716200C43FF5 /* viff.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 57114F1806BC2301004F4FA7 /* viff.cxx */; }; 57CBEE3406BC716600C43FF5 /* void_vector.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 57114F1A06BC2301004F4FA7 /* void_vector.cxx */; }; + 57CF87B70F6CF5EC00EED935 /* Batch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF87A10F6CF56100EED935 /* Batch.cpp */; }; + 57CF87B80F6CF5EC00EED935 /* ProjectArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF87A70F6CF56100EED935 /* ProjectArray.cpp */; }; + 57CF87B90F6CF5EC00EED935 /* PTBatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF87AB0F6CF56100EED935 /* PTBatcher.cpp */; }; + 57CF87BA0F6CF5EC00EED935 /* RunStitchFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF87B50F6CF56200EED935 /* RunStitchFrame.cpp */; }; + 57CF87C70F6CF62A00EED935 /* Batch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF87A10F6CF56100EED935 /* Batch.cpp */; }; + 57CF87C80F6CF62A00EED935 /* BatchFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF87A30F6CF56100EED935 /* BatchFrame.cpp */; }; + 57CF87C90F6CF62A00EED935 /* ProjectArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF87A70F6CF56100EED935 /* ProjectArray.cpp */; }; + 57CF87CA0F6CF62A00EED935 /* ProjectListBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF87A90F6CF56100EED935 /* ProjectListBox.cpp */; }; + 57CF87CB0F6CF62A00EED935 /* PTBatcherGUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF87B00F6CF56100EED935 /* PTBatcherGUI.cpp */; }; + 57CF87CC0F6CF62A00EED935 /* RunStitchFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57CF87B50F6CF56200EED935 /* RunStitchFrame.cpp */; }; 57D382D60E2369FC00445A37 /* nona.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5796FA970C4395F4006B7C6E /* nona.cpp */; }; 57D382D80E2369FC00445A37 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 579895AB068E3002009F90BF /* libz.dylib */; }; 57D382D90E2369FC00445A37 /* libpng.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 577092FA06BD7388004058A1 /* libpng.dylib */; }; @@ -790,12 +800,6 @@ 57D50A580F595A6300CCDCB5 /* HuginVigraImpex.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 5769FE380D24CFEC00A6AD01 /* HuginVigraImpex.framework */; }; 57D50A590F595A6300CCDCB5 /* HuginBase.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 576900AA0D24D29300A6AD01 /* HuginBase.framework */; }; 57D50A5A0F595A6300CCDCB5 /* HuginBaseWx.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 576900E10D24D32C00A6AD01 /* HuginBaseWx.framework */; }; - 57D50A660F595AD500CCDCB5 /* Batch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734BDF620EB8EC7B007EBA09 /* Batch.cpp */; }; - 57D50A670F595AD500CCDCB5 /* ProjectArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734BDF650EB8EC7B007EBA09 /* ProjectArray.cpp */; }; - 57D50A680F595AD500CCDCB5 /* RunStitchFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734BDF6C0EB8EC7B007EBA09 /* RunStitchFrame.cpp */; }; - 57D50A690F595AD500CCDCB5 /* BatchFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734FBA2C0EB39F5100CD7122 /* BatchFrame.cpp */; }; - 57D50A6A0F595AD500CCDCB5 /* ProjectListBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734FBA300EB39F5100CD7122 /* ProjectListBox.cpp */; }; - 57D50A6B0F595AD500CCDCB5 /* PTBatcherGUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734FBA320EB39F5100CD7122 /* PTBatcherGUI.cpp */; }; 57D50AC20F596D4900CCDCB5 /* HuginCleste.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73C3C98E0ECCC9DE00A3089A /* HuginCleste.framework */; }; 57D50AC70F596D6900CCDCB5 /* libexiv2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5731C4910D5532D400605D22 /* libexiv2.a */; }; 57D50ADC0F596E3D00CCDCB5 /* Celeste.h in Headers */ = {isa = PBXBuildFile; fileRef = 734FB8DE0EB38B9400CD7122 /* Celeste.h */; }; @@ -935,10 +939,6 @@ 7332AEC00D8D4C45002BF5FF /* APImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7332AE560D8D491B002BF5FF /* APImage.cpp */; }; 7332AEC30D8D4C45002BF5FF /* Descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7332AE790D8D491B002BF5FF /* Descriptor.cpp */; }; 7332AEC40D8D4C45002BF5FF /* HessianDetector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7332AE840D8D491C002BF5FF /* HessianDetector.cpp */; }; - 734BDF6E0EB8EC7B007EBA09 /* Batch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734BDF620EB8EC7B007EBA09 /* Batch.cpp */; }; - 734BDF6F0EB8EC7B007EBA09 /* ProjectArray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734BDF650EB8EC7B007EBA09 /* ProjectArray.cpp */; }; - 734BDF700EB8EC7B007EBA09 /* PTBatcher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734BDF670EB8EC7B007EBA09 /* PTBatcher.cpp */; }; - 734BDF710EB8EC7B007EBA09 /* RunStitchFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734BDF6C0EB8EC7B007EBA09 /* RunStitchFrame.cpp */; }; 734FB9B40EB3929500CD7122 /* libGLEW.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 734FB9B20EB3929500CD7122 /* libGLEW.a */; }; 734FBA5B0EB3A20500CD7122 /* ChoosyRemapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734FBA370EB3A20500CD7122 /* ChoosyRemapper.cpp */; }; 734FBA5C0EB3A20500CD7122 /* GLPreviewFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 734FBA390EB3A20500CD7122 /* GLPreviewFrame.cpp */; }; @@ -2153,6 +2153,21 @@ 57CCCC3C086C957E000EBC4A /* LICENCE */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = LICENCE; sourceTree = "<group>"; }; 57CCCC4E086C957E000EBC4A /* README */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = README; sourceTree = "<group>"; }; 57CCCC5C086C9651000EBC4A /* utils */ = {isa = PBXFileReference; lastKnownFileType = folder; path = utils; sourceTree = "<group>"; }; + 57CF87A10F6CF56100EED935 /* Batch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Batch.cpp; sourceTree = "<group>"; }; + 57CF87A20F6CF56100EED935 /* Batch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Batch.h; sourceTree = "<group>"; }; + 57CF87A30F6CF56100EED935 /* BatchFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BatchFrame.cpp; sourceTree = "<group>"; }; + 57CF87A40F6CF56100EED935 /* BatchFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BatchFrame.h; sourceTree = "<group>"; }; + 57CF87A60F6CF56100EED935 /* DirTraverser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirTraverser.h; sourceTree = "<group>"; }; + 57CF87A70F6CF56100EED935 /* ProjectArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProjectArray.cpp; sourceTree = "<group>"; }; + 57CF87A80F6CF56100EED935 /* ProjectArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProjectArray.h; sourceTree = "<group>"; }; + 57CF87A90F6CF56100EED935 /* ProjectListBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProjectListBox.cpp; sourceTree = "<group>"; }; + 57CF87AA0F6CF56100EED935 /* ProjectListBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProjectListBox.h; sourceTree = "<group>"; }; + 57CF87AB0F6CF56100EED935 /* PTBatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PTBatcher.cpp; sourceTree = "<group>"; }; + 57CF87AD0F6CF56100EED935 /* PTBatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTBatcher.h; sourceTree = "<group>"; }; + 57CF87B00F6CF56100EED935 /* PTBatcherGUI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PTBatcherGUI.cpp; sourceTree = "<group>"; }; + 57CF87B20F6CF56200EED935 /* PTBatcherGUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTBatcherGUI.h; sourceTree = "<group>"; }; + 57CF87B50F6CF56200EED935 /* RunStitchFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RunStitchFrame.cpp; sourceTree = "<group>"; }; + 57CF87B60F6CF56200EED935 /* RunStitchFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RunStitchFrame.h; sourceTree = "<group>"; }; 57CF926B06BD7AD100780AC5 /* nona_gui-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "nona_gui-Info.plist"; sourceTree = "<group>"; }; 57D14A4506B8A3D100D8A03D /* libjpeg.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libjpeg.dylib; path = lib/libjpeg.dylib; sourceTree = "<group>"; }; 57D18D8E0E13BD340054A523 /* Version.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = "<group>"; }; @@ -2335,14 +2350,6 @@ 7332AE8F0D8D491C002BF5FF /* README */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = README; sourceTree = "<group>"; }; 7332AEAE0D8D4986002BF5FF /* matchpoint */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = matchpoint; sourceTree = BUILT_PRODUCTS_DIR; }; 734BDF5B0EB8EC19007EBA09 /* PTBatcher */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = PTBatcher; sourceTree = BUILT_PRODUCTS_DIR; }; - 734BDF620EB8EC7B007EBA09 /* Batch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Batch.cpp; sourceTree = "<group>"; }; - 734BDF630EB8EC7B007EBA09 /* Batch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Batch.h; sourceTree = "<group>"; }; - 734BDF650EB8EC7B007EBA09 /* ProjectArray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProjectArray.cpp; sourceTree = "<group>"; }; - 734BDF660EB8EC7B007EBA09 /* ProjectArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProjectArray.h; sourceTree = "<group>"; }; - 734BDF670EB8EC7B007EBA09 /* PTBatcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PTBatcher.cpp; sourceTree = "<group>"; }; - 734BDF690EB8EC7B007EBA09 /* PTBatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTBatcher.h; sourceTree = "<group>"; }; - 734BDF6C0EB8EC7B007EBA09 /* RunStitchFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RunStitchFrame.cpp; sourceTree = "<group>"; }; - 734BDF6D0EB8EC7B007EBA09 /* RunStitchFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RunStitchFrame.h; sourceTree = "<group>"; }; 734FB8DD0EB38B9400CD7122 /* Celeste.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Celeste.cpp; sourceTree = "<group>"; }; 734FB8DE0EB38B9400CD7122 /* Celeste.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Celeste.h; sourceTree = "<group>"; }; 734FB8DF0EB38B9400CD7122 /* CelesteGlobals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CelesteGlobals.cpp; sourceTree = "<group>"; }; @@ -2383,13 +2390,6 @@ 734FB9040EB38B9500CD7122 /* Utilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Utilities.cpp; sourceTree = "<group>"; }; 734FB9050EB38B9500CD7122 /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utilities.h; sourceTree = "<group>"; }; 734FB9B20EB3929500CD7122 /* libGLEW.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libGLEW.a; path = lib/libGLEW.a; sourceTree = "<group>"; }; - 734FBA2C0EB39F5100CD7122 /* BatchFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BatchFrame.cpp; sourceTree = "<group>"; }; - 734FBA2D0EB39F5100CD7122 /* BatchFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BatchFrame.h; sourceTree = "<group>"; }; - 734FBA2F0EB39F5100CD7122 /* DirTraverser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirTraverser.h; sourceTree = "<group>"; }; - 734FBA300EB39F5100CD7122 /* ProjectListBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProjectListBox.cpp; sourceTree = "<group>"; }; - 734FBA310EB39F5100CD7122 /* ProjectListBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProjectListBox.h; sourceTree = "<group>"; }; - 734FBA320EB39F5100CD7122 /* PTBatcherGUI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PTBatcherGUI.cpp; sourceTree = "<group>"; }; - 734FBA340EB39F5100CD7122 /* PTBatcherGUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PTBatcherGUI.h; sourceTree = "<group>"; }; 734FBA370EB3A20500CD7122 /* ChoosyRemapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ChoosyRemapper.cpp; sourceTree = "<group>"; }; 734FBA380EB3A20500CD7122 /* ChoosyRemapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChoosyRemapper.h; sourceTree = "<group>"; }; 734FBA390EB3A20500CD7122 /* GLPreviewFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GLPreviewFrame.cpp; sourceTree = "<group>"; }; @@ -3736,8 +3736,6 @@ 734FB8DC0EB38B9400CD7122 /* celeste */, 5769F83C0D23A9F400A6AD01 /* deghosting */, 7332AE550D8D491B002BF5FF /* matchpoint */, - 734BDF610EB8EC7B007EBA09 /* PTBatcher */, - 734FBA2B0EB39F5100CD7122 /* PTBatcherGUI */, 57D475B60D3CE0AB003CF158 /* translations */, ); path = src; @@ -3762,6 +3760,28 @@ name = "Mac OS X"; sourceTree = "<group>"; }; + 57CF87A00F6CF56100EED935 /* ptbatcher */ = { + isa = PBXGroup; + children = ( + 57CF87A10F6CF56100EED935 /* Batch.cpp */, + 57CF87A20F6CF56100EED935 /* Batch.h */, + 57CF87A30F6CF56100EED935 /* BatchFrame.cpp */, + 57CF87A40F6CF56100EED935 /* BatchFrame.h */, + 57CF87A60F6CF56100EED935 /* DirTraverser.h */, + 57CF87A70F6CF56100EED935 /* ProjectArray.cpp */, + 57CF87A80F6CF56100EED935 /* ProjectArray.h */, + 57CF87A90F6CF56100EED935 /* ProjectListBox.cpp */, + 57CF87AA0F6CF56100EED935 /* ProjectListBox.h */, + 57CF87AB0F6CF56100EED935 /* PTBatcher.cpp */, + 57CF87AD0F6CF56100EED935 /* PTBatcher.h */, + 57CF87B00F6CF56100EED935 /* PTBatcherGUI.cpp */, + 57CF87B20F6CF56200EED935 /* PTBatcherGUI.h */, + 57CF87B50F6CF56200EED935 /* RunStitchFrame.cpp */, + 57CF87B60F6CF56200EED935 /* RunStitchFrame.h */, + ); + path = ptbatcher; + sourceTree = "<group>"; + }; 57D18D880E13BC8A0054A523 /* tools-static */ = { isa = PBXGroup; children = ( @@ -3801,6 +3821,7 @@ 57565A3D0D088CFD00344F55 /* base_wx */, 57E32FBD0C4A87F1006AA781 /* common */, 57E32FAE0C4A87F1006AA781 /* PT */, + 57CF87A00F6CF56100EED935 /* ptbatcher */, 57E330FE0C4A8859006AA781 /* hugin */, 57E330BB0C4A87F2006AA781 /* nona_gui */, 575670960D089B1F00344F55 /* stitch_project */, @@ -4173,21 +4194,6 @@ path = test; sourceTree = "<group>"; }; - 734BDF610EB8EC7B007EBA09 /* PTBatcher */ = { - isa = PBXGroup; - children = ( - 734BDF620EB8EC7B007EBA09 /* Batch.cpp */, - 734BDF630EB8EC7B007EBA09 /* Batch.h */, - 734BDF650EB8EC7B007EBA09 /* ProjectArray.cpp */, - 734BDF660EB8EC7B007EBA09 /* ProjectArray.h */, - 734BDF670EB8EC7B007EBA09 /* PTBatcher.cpp */, - 734BDF690EB8EC7B007EBA09 /* PTBatcher.h */, - 734BDF6C0EB8EC7B007EBA09 /* RunStitchFrame.cpp */, - 734BDF6D0EB8EC7B007EBA09 /* RunStitchFrame.h */, - ); - path = PTBatcher; - sourceTree = "<group>"; - }; 734FB8DC0EB38B9400CD7122 /* celeste */ = { isa = PBXGroup; children = ( @@ -4251,20 +4257,6 @@ path = training; sourceTree = "<group>"; }; - 734FBA2B0EB39F5100CD7122 /* PTBatcherGUI */ = { - isa = PBXGroup; - children = ( - 734FBA2C0EB39F5100CD7122 /* BatchFrame.cpp */, - 734FBA2D0EB39F5100CD7122 /* BatchFrame.h */, - 734FBA2F0EB39F5100CD7122 /* DirTraverser.h */, - 734FBA300EB39F5100CD7122 /* ProjectListBox.cpp */, - 734FBA310EB39F5100CD7122 /* ProjectListBox.h */, - 734FBA320EB39F5100CD7122 /* PTBatcherGUI.cpp */, - 734FBA340EB39F5100CD7122 /* PTBatcherGUI.h */, - ); - path = PTBatcherGUI; - sourceTree = "<group>"; - }; 73EAB5250E86CEA90020D514 /* repository-static */ = { isa = PBXGroup; children = ( @@ -6191,12 +6183,12 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 57D50A660F595AD500CCDCB5 /* Batch.cpp in Sources */, - 57D50A670F595AD500CCDCB5 /* ProjectArray.cpp in Sources */, - 57D50A680F595AD500CCDCB5 /* RunStitchFrame.cpp in Sources */, - 57D50A690F595AD500CCDCB5 /* BatchFrame.cpp in Sources */, - 57D50A6A0F595AD500CCDCB5 /* ProjectListBox.cpp in Sources */, - 57D50A6B0F595AD500CCDCB5 /* PTBatcherGUI.cpp in Sources */, + 57CF87C70F6CF62A00EED935 /* Batch.cpp in Sources */, + 57CF87C80F6CF62A00EED935 /* BatchFrame.cpp in Sources */, + 57CF87C90F6CF62A00EED935 /* ProjectArray.cpp in Sources */, + 57CF87CA0F6CF62A00EED935 /* ProjectListBox.cpp in Sources */, + 57CF87CB0F6CF62A00EED935 /* PTBatcherGUI.cpp in Sources */, + 57CF87CC0F6CF62A00EED935 /* RunStitchFrame.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -6338,10 +6330,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 734BDF6E0EB8EC7B007EBA09 /* Batch.cpp in Sources */, - 734BDF6F0EB8EC7B007EBA09 /* ProjectArray.cpp in Sources */, - 734BDF700EB8EC7B007EBA09 /* PTBatcher.cpp in Sources */, - 734BDF710EB8EC7B007EBA09 /* RunStitchFrame.cpp in Sources */, + 57CF87B90F6CF5EC00EED935 /* PTBatcher.cpp in Sources */, + 57CF87B70F6CF5EC00EED935 /* Batch.cpp in Sources */, + 57CF87BA0F6CF5EC00EED935 /* RunStitchFrame.cpp in Sources */, + 57CF87B80F6CF5EC00EED935 /* ProjectArray.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: hugin/trunk/src/CMakeLists.txt =================================================================== --- hugin/trunk/src/CMakeLists.txt 2009-03-14 21:40:56 UTC (rev 3734) +++ hugin/trunk/src/CMakeLists.txt 2009-03-15 09:07:35 UTC (rev 3735) @@ -40,8 +40,6 @@ ADD_DEFINITIONS("-D_UNICODE") ENDIF("${wxWidgets_CONFIGURATION}" STREQUAL "mswu") ENDIF(WIN32) - add_subdirectory(PTBatcher) - add_subdirectory(PTBatcherGUI) ENDIF(wxWidgets_FOUND) add_subdirectory(translations) Modified: hugin/trunk/src/hugin1/CMakeLists.txt =================================================================== --- hugin/trunk/src/hugin1/CMakeLists.txt 2009-03-14 21:40:56 UTC (rev 3734) +++ hugin/trunk/src/hugin1/CMakeLists.txt 2009-03-15 09:07:35 UTC (rev 3735) @@ -19,6 +19,7 @@ add_subdirectory(hugin) ENDIF(OPENGL_FOUND) add_subdirectory(nona_gui) + add_subdirectory(ptbatcher) ENDIF(wxWidgets_FOUND) IF(VIPS_FOUND) Copied: hugin/trunk/src/hugin1/ptbatcher/Batch.cpp (from rev 3734, hugin/trunk/src/PTBatcher/Batch.cpp) =================================================================== --- hugin/trunk/src/hugin1/ptbatcher/Batch.cpp (rev 0) +++ hugin/trunk/src/hugin1/ptbatcher/Batch.cpp 2009-03-15 09:07:35 UTC (rev 3735) @@ -0,0 +1,895 @@ +// -*- c-basic-offset: 4 -*- + +/** @file Batch.cpp + * + * @brief Batch processor for Hugin + * + * @author Marko Kuder <mar...@gm...> + * + * $Id: Batch.cpp 3322 2008-08-18 1:10:07Z mkuder $ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "Batch.h" +#include <wx/stdpaths.h> + +BEGIN_EVENT_TABLE(Batch, wxFrame) + EVT_END_PROCESS(-1, Batch::OnProcessTerminate) +END_EVENT_TABLE() + +Batch::Batch(wxFrame* parent, wxString path, bool bgui) : wxFrame(parent,wxID_ANY,_T("Batch")){ + //default flag settings + parallel = false; + deleteFiles = false; + shutdown = false; + overwrite = true; + verbose = false; + gui = bgui; + m_cancelled = false; + m_paused = false; + m_running = false; + m_clearedInProgress = false; + + // Required to access the preferences of hugin + //SetAppName(wxT("hugin")); + + // setup the environment for the different operating systems +#if defined __WXMSW__ + wxString huginExeDir = getExePath(path); + + wxString huginRoot; + wxFileName::SplitPath(huginExeDir, &huginRoot, NULL, NULL); + + progs = getPTProgramsConfig(huginExeDir, wxConfigBase::Get()); +#else + // add the locale directory specified during configure + PTPrograms progs = getPTProgramsConfig(wxT(""), wxConfigBase::Get()); +#endif + + // update incompatible configuration entries. + updateHuginConfig(wxConfigBase::Get()); +} + +void Batch::AddAppToBatch(wxString app) +{ + Project *newApp = new Project(app); + m_projList.Add(newApp); +} + +void Batch::AddProjectToBatch(wxString projectFile, wxString outputFile) +{ + wxFileName projectName(projectFile); + wxFileName outName(outputFile); + projectName.Normalize(); + outName.Normalize(); + + if(outputFile.Cmp(_T(""))!=0) + { + Project *proj = new Project(projectName.GetFullPath(),outName.GetFullPath()); + m_projList.Add(proj); + /*if(gui) + ((wxFrame*)GetParent())->SetStatusText(_T("Added project ")+projectFile+_T(" with output ")+outputFile); + else if(verbose) + cout << "Added project " << projectFile.char_str() << " with output " << outputFile.char_str() << endl;*/ + } + else + { //on output set as "", it defaults to same path and name as project file + Project *proj = new Project(projectName.GetFullPath(),projectName.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR) + projectName.GetName()); + m_projList.Add(proj); + /*if(gui) + ((wxFrame*)GetParent())->SetStatusText(_T("Added project ")+projectFile); + else if(verbose) + cout << "Added project " << projectFile.char_str() << endl;*/ + } +} + +bool Batch::AllDone() +{ + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(m_projList.Item(i).status==Project::WAITING || + m_projList.Item(i).status==Project::RUNNING || + m_projList.Item(i).status==Project::PAUSED) + { + return false; + } + } + return true; +} + +void Batch::AppendBatchFile(wxString file) +{ + if(wxFileName::FileExists(file)) + { + wxFileInputStream fileStream(file); + wxString projectName = _T(""); + wxTextInputStream textStream(fileStream); + + //TO-DO: batch file error checking? + //first line in file is idGenerator, we save it a temp variable, cause it gets set when adding projects + long idGenTemp = 1; + textStream.ReadLine().ToLong(&idGenTemp); + //then for each project: project path, prefix, id, status, skip + while((projectName = textStream.ReadLine()).Cmp(_(""))!=0) + { + //we add project to internal list + AddProjectToBatch(projectName,textStream.ReadLine()); + textStream.ReadLine().ToLong(&m_projList.Last().id); + long status; + textStream.ReadLine().ToLong(&status); + //if status was RUNNING or PAUSED, we set it to FAILED + if(status==(long)Project::RUNNING || status==(long)Project::PAUSED) + status=(long)Project::FAILED; + m_projList.Last().status = (Project::Status)status; + if(textStream.ReadLine().StartsWith(_T("T"))) + m_projList.Last().skip = true; + } + //we set the id generator we got from file + Project::idGenerator = idGenTemp; + } +} + +void Batch::CancelBatch() +{ + m_cancelled = true; + for(int i=0; i<GetRunningCount(); i++) + CancelProject(i); + m_running = false; +} +void Batch::CancelProject(int index) +{ + wxCommandEvent event; + if(GetRunningCount()==1) + m_paused = false; + m_stitchFrames.Item(index)->OnCancel(event); + if(GetRunningCount()==0) + m_running = false; +} +void Batch::ChangePrefix(int index, wxString newPrefix) +{ + m_projList.Item(index).prefix = newPrefix; +} +bool Batch::CheckProjectExistence() //used only in console version +{ + #ifdef __WXMSW__ //on windows we run a loop every second to check if running processes are still active + bool exist = true; + HANDLE process; + DWORD exitState; + while(exist) + { + exist = false; + + for(unsigned int i=0; i<m_stitchFrames.GetCount(); i++) + { + try + { + process = OpenProcess(PROCESS_QUERY_INFORMATION,true,m_stitchFrames.Item(i)->GetProcessId()); + GetExitCodeProcess(process,&exitState); + } + catch(::exception e) + { + exitState=1; + } + if(exitState==STILL_ACTIVE) + exist=true; + else if(exitState!=0) + SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); + CloseHandle(process); + } + wxSleep(1); + } + #else //not __WXMSW__, on Linux we wait for each of the processes to complete + int status; + int pid; + for(unsigned int i=0; i<m_stitchFrames.GetCount(); i++) + { + pid = m_stitchFrames.Item(i)->GetProcessId(); + if(waitpid(pid,&status,0)==-1) + SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); //we set to failed if waitpid terminated with an error + if(!WIFEXITED(status) || WEXITSTATUS(status)!=0) + SetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()),Project::FAILED); //we set to failed if child terminated abnormally or with a bad exit code + } + #endif + + wxProcessEvent event; + for(int i=m_stitchFrames.GetCount()-1; i>=0; i--) + { + event.SetId(m_stitchFrames.Item(i)->GetProjectId()); + if(GetStatus(GetIndex(m_stitchFrames.Item(i)->GetProjectId()))==Project::FAILED) + event.SetTimestamp(-1); //a failed exit code cannot be set to a wxWidgets event, so we fake it inside event's timestamp + OnProcessTerminate(event); + } + return true; +} + +int Batch::ClearBatch() +{ + if(m_stitchFrames.GetCount()!=0) + { + if(gui) + { + wxMessageDialog message(this, _("Cannot clear batch in progress.\nDo you want to cancel it?"), _("In progress"), wxYES | wxCANCEL | wxICON_INFORMATION); + if(message.ShowModal()==wxID_YES) + { + CancelBatch(); + + //we set a flag so we don't process terminating events + m_clearedInProgress = true; + Project::idGenerator=1; + m_projList.Clear(); + if(gui) + ((wxFrame*)GetParent())->SetStatusText(_("Cleared batch.")); + else if(verbose) + cout << "Cleared batch." << endl; + return 2; + } + } + else if(verbose) + cout << "Error: Cannot clear batch in progress." << endl; + return 1; + //TO-DO: return + /*wxMessageDialog message(this, _T("Cannot clear batch in progress.\nDo you want to cancel it?"), _T("In progress"), wxYES | wxCANCEL | wxICON_INFORMATION); + if(message.ShowModal()==wxID_YES) + { + OnButtonCancel(event); + }*/ + } + else + { + Project::idGenerator=1; + m_projList.Clear(); + if(gui) + ((wxFrame*)GetParent())->SetStatusText(_("Cleared batch.")); + else if(verbose) + cout << "Cleared batch." << endl; + return 0; + } +} + +bool Batch::CompareProjectsInLists(int stitchListIndex, int batchListIndex) +{ + return m_stitchFrames.Item(stitchListIndex)->GetProjectId() == m_projList.Item(batchListIndex).id; +} + +int Batch::GetFirstAvailable() +{ + unsigned int i = 0; + while(i<m_projList.Count()) + { + if(m_projList.Item(i).skip || m_projList.Item(i).status!=Project::WAITING) + i++; + else + break; + } + if((m_projList.Count() == 0) || (i == m_projList.Count())) + { + //no projects are available anymore + return -1; + } + else + { + return i; + } +} + +int Batch::GetIndex(int id) +{ + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(m_projList.Item(i).id==id) + return i; + } + return -1; +} + + +Project* Batch::GetProject(int index) +{ + return (Project*)&m_projList.Item(index); +} +int Batch::GetProjectCount() +{ + return m_projList.GetCount(); +} +int Batch::GetProjectCountByPath(wxString path) +{ + int count = 0; + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(!m_projList.Item(i).skip && (path.Cmp(m_projList.Item(i).path)==0)) + count++; + } + return count; +} + + +int Batch::GetRunningCount() +{ + return m_stitchFrames.GetCount(); +} + +Project::Status Batch::GetStatus(int index) +{ + if((unsigned int)index<m_projList.GetCount()) + return m_projList.Item(index).status; + else if(gui) + wxMessageBox( _("Error: Could not get status, project with index ")+wxString::Format(_("%d"),index)+_(" is not in list."),_("Error!"),wxOK | wxICON_INFORMATION ); + else if(verbose) + cout << "Error: Could not get status, project with index " << index << " is not in list." << endl; + return Project::MISSING; +} +bool Batch::IsPaused() +{ + return m_paused; +} + +void Batch::ListBatch() +{ + if(m_projList.GetCount() == 0) + cout << "Batch is empty." << endl; + else + { + cout << "List of projects in batch:" << endl << + "[ID] [project path] [output filename] [status]" << endl << + "-------------------------------------" << endl; + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + cout << m_projList.Item(i).id << " " << (const char*)m_projList.Item(i).path.char_str() << " " << (const char*)m_projList.Item(i).prefix.char_str() + << " " << (const char*)m_projList.Item(i).GetStatusText().char_str() << endl; + } + } +} + + +int Batch::LoadBatchFile(wxString file) +{ + int clearCode = ClearBatch(); + if(clearCode==0) + { + AppendBatchFile(file); + return 0; + } + else if(clearCode==2) + { + AppendBatchFile(file); + return 2; + } + else if(gui) + wxMessageBox(_("Error: Could not load batch file.")); + else if(verbose) + cout << "Error: Could not load batch file." << endl; + return 1; +} + + +int Batch::LoadTemp() +{ + wxDir* workingDir = new wxDir(wxStandardPaths::Get().GetUserConfigDir()); + wxString pending; + wxString fileTemp = _T(".ptbt*"); + wxString temp = _T(""); + //we check for existing temporary files + if(workingDir->GetFirst(&temp,fileTemp,wxDIR_FILES)) + { + //we find the last existing tempfile (there should be at most two, but we check for multiple just in case) + while(workingDir->GetNext(&pending)) + { + wxFileName tempFile(temp); + wxFileName pendingFile(pending); + wxDateTime* create1 = new wxDateTime(); + wxDateTime* create2 = new wxDateTime(); + if(tempFile.FileExists() && pendingFile.FileExists()) + { + tempFile.GetTimes(NULL,NULL,create1); + pendingFile.GetTimes(NULL,NULL,create2); + if(create2->IsLaterThan(*create1)) + { + wxRemoveFile(temp); + temp=wxString(pending); + } + } + else + { + //wxMessageBox( _T("Error reading temporary file"),_T("Error!"),wxOK | wxICON_INFORMATION ); + return 1; + } + } + } + //we load the data from the temp file + AppendBatchFile(workingDir->GetName()+wxFileName::GetPathSeparator()+temp); + if(verbose && !gui) + cout << "Loaded temp file." << endl; + return 0; +} + + +bool Batch::NoErrors() +{ + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(m_projList.Item(i).status==Project::FAILED) + { + return false; + } + } + return true; +} +void Batch::OnProcessTerminate(wxProcessEvent & event) +{ + //we find the right pointer to remove + unsigned int i = 0; + while(i < m_stitchFrames.GetCount() && + m_stitchFrames.Item(i)->GetProjectId()!=event.GetId()) + { + i++; + } + m_stitchFrames.RemoveAt(i); + if(m_clearedInProgress) + { + if(m_stitchFrames.GetCount()==0) + { + m_paused = false; + m_running = false; + m_cancelled = false; + m_clearedInProgress = false; + } + } + else + { + if(m_stitchFrames.GetCount()==0) + m_paused = false; + i = GetIndex(event.GetId()); + if (event.GetExitCode() != 0 || event.GetTimestamp()==-1) //timestamp is used as a fake exit code because it cannot be set manually + m_projList.Item(i).status=Project::FAILED; + else + m_projList.Item(i).status=Project::FINISHED; + if(!m_cancelled && !m_paused) + { + if(AllDone()) + { + m_running = false; + if(NoErrors()) + { + if(gui) + //SetStatusText(_T("Project \"")+m_projList.Item(i).path+_T("\" finished. Batch successfully completed.")); + SetStatusText(_("Batch successfully completed.")); + else + //cout << "Project \"" << m_projList.Item(i).path.char_str() << "\" finished. Batch successfully completed." << endl; + cout << "Batch successfully completed." << endl; + } + else + { + if(gui) + //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Batch completed with errors.")); + SetStatusText(_("Batch completed with errors.")); + else + //cout << "Project \"" << m_projList.Item(i).path.char_str() << "\" finished. Batch completed with errors." << endl; + cout << "Batch completed with errors." << endl; + } + if(shutdown) //after we are finished we turn off the computer if checked + { + if(gui) + { + wxProgressDialog progress(_("Initializing shutdown..."), _("Shutting down..."),49,this, + wxPD_AUTO_HIDE | wxPD_SMOOTH | wxPD_APP_MODAL | wxPD_CAN_ABORT | wxPD_CAN_SKIP); + progress.Fit(); + int i = 0; + bool skip = false; + while(progress.Update(i, _("Shutting down..."),&skip)) + { + if(skip || i==50) + { + /*wxMessageDialog message(this,_T("Krneksa")); + message.ShowModal(); + break;*/ + wxShutdown(wxSHUTDOWN_POWEROFF); + } + i++; + #if defined __WXMSW__ + Sleep(200); + #else + sleep(200); + #endif + } + progress.Close(); + } + else + { + if(!wxShutdown(wxSHUTDOWN_POWEROFF)) + { + if(gui) + #ifdef __WXMSW__ + wxMessageBox(_("Error shutting down.")); + #else + wxMessageBox(_("Error shutting down. Do you have root privileges?")); + #endif + else + #ifdef __WXMSW__ + cout << "Error shutting down." << endl; + #else + cout << "Error shutting down. Do you have root privileges?" << endl; + #endif + } + } + } + } + else + { + if(parallel) //if we are running in parallel + { + //the last executed process in parallel runs next + if(GetRunningCount() == 0) + { + //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Running next project...")); + RunNextInBatch(); + } + else + { + //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Waiting for all in parallel to complete...")); + } + } + else + { + //SetStatusText(_T("Project \""+m_projList.Item(i).path)+_T("\" finished. Running next project...")); + RunNextInBatch(); + } + } + } + else + { //after all processes have ended on a cancel, we reset the boolean back to false + //if(stitchFrames.GetCount()==0) + if(GetRunningCount()==0) + { + m_cancelled=false; + } + } + } +} +bool Batch::OnStitch(wxString scriptFile, wxString outname, int id) //was previously without parameter +{ + //if( parser.GetParamCount() == 0 && wxIsEmpty(scriptFile)) + //{ + if(wxIsEmpty(scriptFile)) + { + wxString defaultdir = wxConfigBase::Get()->Read(wxT("/actualPath"),wxT("")); + wxFileDialog dlg(0, + _("Specify project source project file"), + defaultdir, wxT(""), + _("Project files (*.pto,*.ptp,*.pts,*.oto)|*.pto;*.ptp;*.pts;*.oto;|All files (*)|*"), + wxOPEN, wxDefaultPosition); + + dlg.SetDirectory(wxConfigBase::Get()->Read(wxT("/actualPath"),wxT(""))); + if (dlg.ShowModal() == wxID_OK) { + wxConfig::Get()->Write(wxT("/actualPath"), dlg.GetDirectory()); // remember for later + + //scriptFile = dlg.GetPath(); + wxFileDialog dlg2(0,_("Specify output prefix"), + wxConfigBase::Get()->Read(wxT("/actualPath"),wxT("")), + wxT(""), wxT(""), + wxSAVE, wxDefaultPosition); + dlg2.SetDirectory(wxConfigBase::Get()->Read(wxT("/actualPath"),wxT(""))); + if (dlg2.ShowModal() == wxID_OK) { + //wxConfig::Get()->Write(wxT("/actualPath"), dlg2.GetDirectory()); // remember for later + outname = dlg2.GetPath(); + } else { // bail + wxLogError( _("No output prefix specified")); + return false; + } + scriptFile = dlg.GetPath(); + } else { // bail + return false; + wxLogError( _("No project files specified")); + } + } + + if(!gui) + cout << "Stitching with input file " << (const char *)scriptFile.mb_str(wxConvLocal) << "..." << endl; + + // check output filename + wxFileName outfn(outname); + wxString ext = outfn.GetExt(); + // remove extension if it indicates an image file + if (ext.CmpNoCase(wxT("jpg")) == 0 || ext.CmpNoCase(wxT("jpeg")) == 0 || + ext.CmpNoCase(wxT("tif")) == 0 || ext.CmpNoCase(wxT("tiff")) == 0 || + ext.CmpNoCase(wxT("png")) == 0 || ext.CmpNoCase(wxT("exr")) == 0 || + ext.CmpNoCase(wxT("pnm")) == 0 || ext.CmpNoCase(wxT("hdr")) == 0) + { + outfn.ClearExt(); + outname = outfn.GetFullPath(); + } + + RunStitchFrame *stitchFrame = new RunStitchFrame(this, wxT("Hugin Stitcher"), wxDefaultPosition, wxSize(640,600)); //,wxGetApp().m_projList, projListBox ); + //stitchFrame->SetEventHandler(this); + stitchFrame->SetProjectId(id); + if(verbose && gui) + { + stitchFrame->Show( true ); + wxTheApp->SetTopWindow( stitchFrame ); + } + + wxFileName basename(scriptFile); + stitchFrame->SetTitle(wxString::Format(_("%s - Stitching"), basename.GetName().c_str())); + if(overwrite) + stitchFrame->m_stitchPanel->SetOverwrite(true); + + bool n = stitchFrame->StitchProject(scriptFile, outname, progs); + m_stitchFrames.Add(stitchFrame); + if(!n) + stitchFrame->Close(); + /*if (parser.Found(wxT("d")) ) { + wxRemoveFile(scriptFile); + }*/ + return n; + +} + + + + +void Batch::PauseBatch() +{ + if(!m_paused) + { + m_paused = true; + for(int i=0; i<GetRunningCount(); i++) + { + m_stitchFrames.Item(i)->m_stitchPanel->PauseStitch(); + } + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(m_projList.Item(i).status==Project::RUNNING) + m_projList.Item(i).status=Project::PAUSED; + } + } + else + { + m_paused = false; + for(int i=0; i<GetRunningCount(); i++) + { + m_stitchFrames.Item(i)->m_stitchPanel->ContinueStitch(); + } + for(unsigned int i=0; i<m_projList.GetCount(); i++) + { + if(m_projList.Item(i).status==Project::PAUSED) + m_projList.Item(i).status=Project::RUNNING; + } + } +} + + +void Batch::RemoveProject(int id) +{ + int index; + if((index=GetIndex(id)) != -1) + { + RemoveProjectAtIndex(GetIndex(id)); + } + else if(gui) + wxMessageBox( _("Error removing, project with id ")+wxString::Format(_T("%d"),id)+_(" is not in list."),_("Error!"),wxOK | wxICON_INFORMATION ); + else if(verbose) + cout << "Error: Project with id " << id << " is not in list." << endl; +} +void Batch::RemoveProjectAtIndex(int selIndex) +{ + //we delete only successful project files and no applications + if(deleteFiles + && m_projList.Item(selIndex).id>=0 + && m_projList.Item(selIndex).status==Project::FINISHED) + { + wxFileName file(m_projList.Item(selIndex).path); + if(file.FileExists()) + { + if(!wxRemoveFile(file.GetFullPath())) + { + if(gui) + wxMessageBox( _("Error: Could not delete project file ")+file.GetFullPath(),_("Error!"),wxOK | wxICON_INFORMATION ); + else if(verbose) + cout << "Error: Could not delete project file " << (const char*)file.GetFullPath().char_str() << endl; + } + } + } + m_projList.RemoveAt(selIndex); + if(m_projList.GetCount()==0) //reset the id generator on empty list + Project::idGenerator=1; +} + +void Batch::RunBatch() +{ + if(!gui && m_projList.GetCount() == 0) + cout << "Batch is empty." << endl; + else if(!m_running) + { + if(gui) + ((wxFrame*)GetParent())->SetStatusText(_("Running batch...")); + else + cout << "Running batch..." << endl; + bool cancelRun = false; + //check for missing project files + wxFileName file = wxFileName(); + for(unsigned int i=0; i<m_projList.Count(); i++) + { + if(m_projList.Item(i).id >= 0) //we don't check file existence for command line instructions + { + file.Assign(m_projList.Item(i).path); + if(!file.FileExists()) + { + /*wxMessageDialog message(this,_T("Project file \"")+m_projList.Item(i).path+_T("\" is missing, project will not be executed."), _T("Project missing"), + wxOK | wxCANCEL | wxICON_INFORMATION ); + if(message.ShowModal() != wxID_OK) + { + cancelRun = true; + }*/ + + } + } + } + + //bool value; + //if we didn't cancel and not all project are marked for skip + if(!cancelRun) + { + m_running = true; + RunNextInBatch(); + } + } + else if(gui) + ((wxFrame*)GetParent())->SetStatusText(_("Batch already in progress.")); +} + +void Batch::RunNextInBatch() +{ + //((wxToolBar*)FindWindow(TOOLBAR))->ToggleTool(TOOLPAUSE,false); + bool value; + bool repeat = true; + unsigned int i; + while(((i=GetFirstAvailable())!=-1) && repeat) + { + //execute command line instructions + if(m_projList.Item(i).id<0) + { + //if(wxFile::Exists(_T("h:\\pictures\\some2.tif"))) + // wxMessageBox( _T("y"),_T("y"),wxOK | wxICON_INFORMATION ); + if(gui) + SetStatusText(_("Running command \"")+m_projList.Item(i).path+_T("\"")); + else + cout << "Running command \"" << (const char*)m_projList.Item(i).path.char_str() << "\"" << endl; + m_projList.Item(i).status=Project::RUNNING; + if(!gui) //we create a fake stitchFrame, so program waits for app to complete + { + //cout << "creating stitchframe" << endl; + RunStitchFrame *stitchFrame = new RunStitchFrame(this, wxT("Hugin Stitcher"), wxDefaultPosition, wxSize(640,600)); + stitchFrame->SetProjectId(m_projList.Item(i).id); + + //cout << "adding" << endl; + repeat = false; + int pid = wxExecute(m_projList.Item(i).path, wxEXEC_ASYNC); + stitchFrame->SetProcessId(pid); + m_stitchFrames.Add(stitchFrame); + //cout << "pid is " << pid << endl; + } + else + { + if(wxExecute(m_projList.Item(i).path, wxEXEC_SYNC)==0) + m_projList.Item(i).status=Project::FINISHED; + else + m_projList.Item(i).status=Project::FAILED; + } + } + else + { + if(!parallel) //we run in sequence + { + //wxMessageBox( _T("2"),_T("2"),wxOK | wxICON_INFORMATION ); + m_projList.Item(i).status=Project::RUNNING; + //SetStatusText(_T("Stitching project \"")+m_projList.Item(i).path+_T("\"")); + m_running = true; + value = OnStitch(m_projList.Item(i).path, m_projList.Item(i).prefix, m_projList.Item(i).id); + if(!value) + m_projList.Item(i).status=Project::FAILED; + else + repeat = false; + } + else + { + while((i = GetFirstAvailable())!=-1) + { + //projListBox->Select(i); //select the currently processing project + if(m_projList.Item(i).id<0) + break; + m_projList.Item(i).status=Project::RUNNING; + //SetStatusText(_T("Stitching...")); + m_running = true; + value = OnStitch(m_projList.Item(i).path, m_projList.Item(i).prefix, m_projList.Item(i).id); + if(!value) + m_projList.Item(i).status=Project::FAILED; + else + repeat = false; + } + //projListMutex->Unlock(); + } + } + } + if(AllDone()) + m_running = false; + else if(!gui) + CheckProjectExistence(); +} + +void Batch::SaveBatchFile(wxString file) +{ + wxFileOutputStream fileStream(file); + wxTextOutputStream textStream(fileStream); + //we write current idGenerator to file + wxString line = _T(""); + line << Project::idGenerator; + textStream.WriteString(line+_T("\n")); + //then for each project: project path, prefix, id, status, skip + for(unsigned int i = 0; i< m_projList.GetCount(); i++) + { + textStream.WriteString(m_projList.Item(i).path+_T("\n")); + textStream.WriteString(m_projList.Item(i).prefix+_T("\n")); + line = _T(""); + line << m_projList.Item(i).id; + textStream.WriteString(line+_T("\n")); + line = _T(""); + line << m_projList.Item(i).status; + textStream.WriteString(line+_T("\n")); + if(m_projList.Item(i).skip) + textStream.WriteString(_T("T\n")); + else + textStream.WriteString(_T("F\n")); + } + fileStream.Close(); +} + +void Batch::SaveTemp() +{ + //wxMessageBox( _T("saving temp file"),_T(""),wxOK | wxICON_INFORMATION ); + wxDir* workingDir = new wxDir(wxStandardPaths::Get().GetUserConfigDir()); + wxString fileTemp = _T(".ptbt*"); + //we get the old temp file + fileTemp = workingDir->FindFirst(workingDir->GetName(),fileTemp,wxDIR_FILES); + wxFileName oldFile(fileTemp); + //we alternate between 0 and 1 + wxString suffix; + if(fileTemp.EndsWith(_T("0"))) + suffix = _T("1"); + else + suffix = _T("0"); + SaveBatchFile(wxStandardPaths::Get().GetUserConfigDir()+wxFileName::GetPathSeparator()+_T(".ptbt")+suffix); + if(verbose && !gui) + cout << "Saved temp file." << endl; + //we remove the previous temp file + if(oldFile.FileExists()) + wxRemoveFile(fileTemp); +} + + +void Batch::SetStatus(int index,Project::Status status) +{ + if((unsigned int)index<m_projList.GetCount()) + m_projList.Item(index).status = status; + else if(gui) + wxMessageBox( _("Error: Could not set status, project with index ")+wxString::Format(_("%d"),index)+_(" is not in list."),_("Error!"),wxOK | wxICON_INFORMATION ); + else if(verbose) + cout << "Error: Could not set status, project with index " << index << " is not in list." << endl; +} +void Batch::SwapProject(int index) +{ + Project* proj = m_projList.Detach(index+1); + m_projList.Insert(proj,index); +} Copied: hugin/trunk/src/hugin1/ptbatcher/Batch.h (from rev 3734, hugin/trunk/src/PTBatcher/Batch.h) =================================================================== --- hugin/trunk/src/hugin1/ptbatcher/Batch.h (rev 0) +++ hugin/trunk/src/hugin1/ptbatcher/Batch.h 2009-03-15 09:07:35 UTC (rev 3735) @@ -0,0 +1,148 @@ +// -*- c-basic-offset: 4 -*- + +/** @file Batch.h + * + * @brief Batch processor for Hugin + * + * @author Marko Kuder <mar...@gm...> + * + * $Id: Batch.h 3322 2008-08-18 1:10:07Z mkuder $ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#ifndef BATCH_H +#define BATCH_H + +#include <string> +#include "ProjectArray.h" +#include <wx/dir.h> +#ifndef __WXMSW__ + #include <sys/wait.h> +#endif +//#include <wx/wfstream.h> +//#include <wx/event.h> +#include "RunStitchFrame.h" +//#include <hugin_config.h> + +#ifndef FRAMEARRAY +#define FRAMEARRAY + WX_DEFINE_ARRAY_PTR(RunStitchFrame*,FrameArray); +#endif + +using namespace std; + +class Batch : public wxFrame +{ +public: + bool parallel; + bool deleteFiles; + bool shutdown; + bool overwrite; + bool verbose; + bool gui; + + //Main constructor + Batch(wxFrame* parent, wxString path, bool bgui); + + //Adds an application entry in the batch list + void AddAppToBatch(wxString app); + //Adds a project entry in the batch list + void AddProjectToBatch(wxString projectFile, wxString outputFile = _T("")); + //Returns true if there are no more projects pending execution + bool AllDone(); + //Appends projects from file to batch list + void AppendBatchFile(wxString file); + //Stops batch run, failing projects in progress + void CancelBatch(); + //Cancels project at index in batch, failing it + void CancelProject(int index); + //Changes output prefix for project at index + void ChangePrefix(int index, wxString newPrefix); + //Called internally in console mode. Waits for running projects to complete and then runs next in batch + bool CheckProjectExistence(); + //Clears batch list and returns 0 if succesful + int ClearBatch(); + //Compares two project at indexes in both lists and returns true if they have identical project ids + bool CompareProjectsInLists(int stitchListIndex, int batchListIndex); + //Returns index of first waiting project in batch + int GetFirstAvailable(); + //Returns index of project with selected id + int GetIndex(int id); + //Returns project at index + Project* GetProject(int index); + //Returns number of projects in batch list + int GetProjectCount(); + //Returns number of projects in batch list with the input file path + int GetProjectCountByPath(wxString path); + //Returns number of projects currently in progress + int GetRunningCount(); + //Returns current status of project at index + Project::Status GetStatus(int index); + //Returns true if batch execution is currently paused + bool IsPaused(); + //Used in console mode. Prints out all projects and their statuses to the console + void ListBatch(); + //Clears current batch list and loads projects from batch file + int LoadBatchFile(wxString file); + //Loads temporary batch file + int LoadTemp(); + //Returns true if there are no failed projects in batch + bool NoErrors(); + //Called internally when all running processes have completed and need to be removed from running list + void OnProcessTerminate(wxProcessEvent & event); + //Called to start stitch of project with input scriptFile + bool OnStitch(wxString scriptFile, wxString outname, int id); + //Pauses and continues batch execution + void PauseBatch(); + //Removes project with id from batch list + void RemoveProject(int id); + //Removes project at index from batch list + void RemoveProjectAtIndex(int selIndex); + //Starts batch execution + void RunBatch(); + //Starts execution of next waiting project in batch + void RunNextInBatch(); + //Saves batch list to file + void SaveBatchFile(wxString file); + //Saves batch list to temporary file + void SaveTemp(); + //Used internally to set status of selected project + void SetStatus(int index,Project::Status status); + //Swaps position in batch of project at index with project at index+1 + void SwapProject(int index); + +private: + //environment config objects + wxConfigBase* m_config; + //internal list of projects in batch + ProjectArray m_projList; + //list of projects in progress + FrameArray m_stitchFrames; + + //batch state flags + bool m_cancelled; + bool m_paused; + bool m_running; + bool m_clearedInProgress; + + //external program config + PTPrograms progs; + + DECLARE_EVENT_TABLE() +}; + +#endif //BATCH_H Copied: hugin/trunk/src/hugin1/ptbatcher/BatchFrame.cpp (from rev 3734, hugin/trunk/src/PTBatcherGUI/BatchFrame.cpp) =================================================================== --- hugin/trunk/src/hugin1/ptbatcher/BatchFrame.cpp (rev 0) +++ hugin/trunk/src/hugin1/ptbatcher/BatchFrame.cpp 2009-03-15 09:07:35 UTC (rev 3735) @@ -0,0 +1,909 @@ +// -*- c-basic-offset: 4 -*- + +/** @file BatchFrame.cpp + * + * @brief Batch processor for Hugin with GUI + * + * @author Marko Kuder <mar...@gm...> + * + * $Id: BatchFrame.cpp 3322 2008-08-18 1:10:07Z mkuder $ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "BatchFrame.h" +#include <wx/stdpaths.h> +#include "PTBatcherGUI.h" + +BEGIN_EVENT_TABLE(BatchFrame, wxFrame) + EVT_TOOL(XRCID("tool_clear"),BatchFrame::OnButtonClear) + EVT_TOOL(XRCID("tool_open"),BatchFrame::OnButtonOpenBatch) + EVT_TOOL(XRCID("tool_save"),BatchFrame::OnButtonSaveBatch) + EVT_TOOL(XRCID("tool_start"),BatchFrame::OnButtonRunBatch) + EVT_TOOL(XRCID("tool_skip"),BatchFrame::OnButtonSkip) + EVT_TOOL(XRCID("tool_pause"),BatchFrame::OnButtonPause) + EVT_TOOL(XRCID("tool_cancel"),BatchFrame::OnButtonCancel) + EVT_TOOL(XRCID("tool_add"),BatchFrame::OnButtonAddToList) + EVT_TOOL(XRCID("tool_remove"),BatchFrame::OnButtonRemoveFromList) + EVT_TOOL(XRCID("tool_adddir"),BatchFrame::OnButtonAddDir) + EVT_MENU(XRCID("menu_add"),BatchFrame::OnButtonAddToList) + EVT_MENU(XRCID("menu_remove"),BatchFrame::OnButtonRemoveFromList) + EVT_MENU(XRCID("menu_adddir"),BatchFrame::OnButtonAddDir) + EVT_MENU(XRCID("menu_open"),BatchFrame::OnButtonOpenBatch) + EVT_MENU(XRCID("menu_save"),BatchFrame::OnButtonSaveBatch) + EVT_MENU(XRCID("menu_clear"),BatchFrame::OnButtonClear) + EVT_MENU(XRCID("menu_exit"),BatchFrame::OnUserExit) + EVT_MENU(XRCID("menu_help"),BatchFrame::OnButtonHelp) + EVT_BUTTON(XRCID("button_addcommand"),BatchFrame::OnButtonAddCommand) + EVT_BUTTON(XRCID("button_remove"),BatchFrame::OnButtonRemoveComplete) + EVT_BUTTON(XRCID("button_prefix"),BatchFrame::OnButtonChangePrefix) + EVT_BUTTON(XRCID("button_reset"),BatchFrame::OnButtonReset) + EVT_BUTTON(XRCID("button_resetall"),BatchFrame::OnButtonResetAll) + EVT_BUTTON(XRCID("button_edit"),BatchFrame::OnButtonOpenWithHugin) + EVT_BUTTON(XRCID("button_move_up"),BatchFrame::OnButtonMoveUp) + EVT_BUTTON(XRCID("button_move_down"),BatchFrame::OnButtonMoveDown) + EVT_CHECKBOX(XRCID("cb_parallel"), BatchFrame::OnCheckParallel) + EVT_CHECKBOX(XRCID("cb_delete"), BatchFrame::OnCheckDelete) + EVT_CHECKBOX(XRCID("cb_overwrite"), BatchFrame::OnCheckOverwrite) + EVT_CHECKBOX(XRCID("cb_shutdown"), BatchFrame::OnCheckShutdown) + EVT_CHECKBOX(XRCID("cb_verbose"), BatchFrame::OnCheckVerbose) + EVT_END_PROCESS(-1, BatchFrame::OnProcessTerminate) + EVT_CLOSE(BatchFrame::OnClose) +END_EVENT_TABLE() + +BatchFrame::BatchFrame(wxLocale* locale, wxString xrc) +{ + this->SetLocaleAndXRC(locale,xrc); + m_cancelled = false; + m_closeThread = false; + //m_paused = false; + m_help=0; + + //load xrc resources + wxXmlResource::Get()->LoadFrame(this, (wxWindow* )NULL, wxT("batch_frame")); + // load our menu bar +#ifdef __WXMAC__ + wxApp::s_macExitMenuItemId = XRCID("menu_exit"); + wxApp::s_macHelpMenuTitleName = _("&Help"); +#endif + SetMenuBar(wxXmlResource::Get()->LoadMenuBar(this, wxT("batch_menu"))); + + // create tool bar + SetToolBar(wxXmlResource::Get()->LoadToolBar(this, wxT("batch_toolbar"))); + + CreateStatusBar(1); + SetStatusText(_("Not doing much...")); + + // set the minimize icon +#ifdef __WXMSW__ + wxIcon myIcon(m_xrcPrefix + wxT("data/icon.ico"),wxBITMAP_TYPE_ICO); +#else + wxIcon myIcon(m_xrcPrefix + wxT("data/icon.png"),wxBITMAP_TYPE_PNG); +#endif + SetIcon(myIcon); + + m_batch = new Batch(this,wxTheApp->argv[0],true); + m_batch->gui = true; + m_batch->LoadTemp(); + projListBox = XRCCTRL(*this,"project_listbox",ProjectListBox); + + //projListMutex = new wxMutex(); + this->wxThreadHelper::Create(); + //wxMessageBox( _T("B"),_T("B"),wxOK | wxICON_INFORMATION ); + this->GetThread()->Run(); + //TO-DO: include a batch or project progress gauge? + /*m_gauge = new wxGauge(this,wxID_ANY,100,wxPoint(100,100),wxSize(100,10)); + m_gauge->SetValue(50); + m_gauge->Hide();*/ + projListBox->Fill(m_batch); +} + +void *BatchFrame::Entry() +{ + + //we define the working dir to search in and the file name syntax of the spool files + //wxMessageBox( _T("new file received1"),_T("new file received1"),wxOK | wxICON_INFORMATION ); + wxDir* workingDir = new wxDir(wxStandardPaths::Get().GetUserConfigDir()); + wxString fileSent = _T(".ptbs*"); + wxString pending; + /*wxString fileTemp = _T(".ptbt*"); + wxString temp = _T(""); + //we check for existing temporary files + if(workingDir->GetFirst(&temp,fileTemp,wxDIR_FILES)) + { + //we find the last existing tempfile (there should be at most two, but we check for multiple just in case) + while(workingDir->GetNext(&pending)) + { + wxFileName tempFile(temp); + wxFileName pendingFile(pending); + wxDateTime* create1 = new wxDateTime(); + wxDateTime* create2 = new wxDateTime(); + if(tempFile.FileExists() && pendingFile.FileExists()) + { + tempFile.GetTimes(NULL,NULL,create1); + pendingFile.GetTimes(NULL,NULL,create2); + if(create2->IsLaterThan(*create1)) + { + wxRemoveFile(temp); + temp=wxString(pending); + } + } + else + { + wxMessageBox( _T("Error reading temporary file"),_T("Error!"),wxOK | wxICON_INFORMATION ); + } + } + } + + //we load the data from the tem... [truncated message content] |
From: <bru...@us...> - 2009-03-26 20:30:46
|
Revision: 3761 http://hugin.svn.sourceforge.net/hugin/?rev=3761&view=rev Author: brunopostle Date: 2009-03-26 20:30:34 +0000 (Thu, 26 Mar 2009) Log Message: ----------- exclude some more files from package_source target Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/src/hugin1/hugin/xrc/data/help_en_EN/fetch.sh Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2009-03-26 15:28:20 UTC (rev 3760) +++ hugin/trunk/CMakeLists.txt 2009-03-26 20:30:34 UTC (rev 3761) @@ -355,6 +355,7 @@ "\\\\.#" "/#" "/celeste/celeste_standalone$" +"/celeste/Config.h$" "/celeste/training/celeste_train$" "/tools/autooptimiser$" "/tools/fulla$" @@ -383,6 +384,8 @@ "/\\\\.libs/" "/\\\\.deps/" "\\\\.o$" +"\\\\.gmo$" +"\\\\.mo$" "\\\\.a$" "\\\\.lo$" "\\\\.so$" Modified: hugin/trunk/src/hugin1/hugin/xrc/data/help_en_EN/fetch.sh =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/data/help_en_EN/fetch.sh 2009-03-26 15:28:20 UTC (rev 3760) +++ hugin/trunk/src/hugin1/hugin/xrc/data/help_en_EN/fetch.sh 2009-03-26 20:30:34 UTC (rev 3761) @@ -11,4 +11,6 @@ --exclude-directories=wiki/skins \ --ignore-tags=link +rm robots.txt +rm index.php* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tm...@us...> - 2009-04-26 09:40:38
|
Revision: 3802 http://hugin.svn.sourceforge.net/hugin/?rev=3802&view=rev Author: tmodes Date: 2009-04-26 09:40:36 +0000 (Sun, 26 Apr 2009) Log Message: ----------- Allow only one PTBatcherGUI instance, command line parameters of second start are transfered to first instance (using DDE on windows and TCP over port 4242 on linux) Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/src/hugin1/ptbatcher/BatchFrame.cpp hugin/trunk/src/hugin1/ptbatcher/BatchFrame.h hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.cpp hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.h Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2009-04-26 07:26:03 UTC (rev 3801) +++ hugin/trunk/CMakeLists.txt 2009-04-26 09:40:36 UTC (rev 3802) @@ -105,7 +105,7 @@ # This must come before FINDs for tiff, jpeg, png, zlib to enable # finding the wxWidgets distributions of those packages (Win32 only). -SET(wxWidgets_USE_LIBS base core xrc html xml adv gl) +SET(wxWidgets_USE_LIBS base core xrc html xml adv gl net) FIND_PACKAGE(wxWidgets REQUIRED) IF(NOT wxWidgets_FOUND) MESSAGE("wxWidgets was not found, GUI programs (hugin, nona_gui) disabled") Modified: hugin/trunk/src/hugin1/ptbatcher/BatchFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/ptbatcher/BatchFrame.cpp 2009-04-26 07:26:03 UTC (rev 3801) +++ hugin/trunk/src/hugin1/ptbatcher/BatchFrame.cpp 2009-04-26 09:40:36 UTC (rev 3802) @@ -769,21 +769,48 @@ }*/ } +void BatchFrame::SetCheckboxes() +{ + wxConfigBase *config=wxConfigBase::Get(); + int i; + i=config->Read(wxT("/BatchFrame/DeleteCheck"), 0l); + if(i==0) + XRCCTRL(*this,"cb_delete",wxCheckBox)->SetValue(false); + else + XRCCTRL(*this,"cb_delete",wxCheckBox)->SetValue(true); + i=config->Read(wxT("/BatchFrame/ParallelCheck"), 0l); + if(i==0) + XRCCTRL(*this,"cb_parallel",wxCheckBox)->SetValue(false); + else + XRCCTRL(*this,"cb_parallel",wxCheckBox)->SetValue(true); + i=config->Read(wxT("/BatchFrame/ShutdownCheck"), 0l); + if(i==0) + XRCCTRL(*this,"cb_shutdown",wxCheckBox)->SetValue(false); + else + XRCCTRL(*this,"cb_shutdown",wxCheckBox)->SetValue(true); + i=config->Read(wxT("/BatchFrame/OverwriteCheck"), 0l); + if(i==0) + XRCCTRL(*this,"cb_overwrite",wxCheckBox)->SetValue(false); + else + XRCCTRL(*this,"cb_overwrite",wxCheckBox)->SetValue(true); + i=config->Read(wxT("/BatchFrame/VerboseCheck"), 0l); + if(i==0) + XRCCTRL(*this,"cb_verbose",wxCheckBox)->SetValue(false); + else + XRCCTRL(*this,"cb_verbose",wxCheckBox)->SetValue(true); +}; - - - void BatchFrame::OnCheckDelete(wxCommandEvent &event) { if(event.IsChecked()) { m_batch->deleteFiles = true; - wxConfigBase::Get()->Write(wxT("/BatchFrame/DeleteCheck"), 1); + wxConfigBase::Get()->Write(wxT("/BatchFrame/DeleteCheck"), 1l); } else { m_batch->deleteFiles = false; - wxConfigBase::Get()->Write(wxT("/BatchFrame/DeleteCheck"), 0); + wxConfigBase::Get()->Write(wxT("/BatchFrame/DeleteCheck"), 0l); } } @@ -793,12 +820,12 @@ if(event.IsChecked()) { m_batch->overwrite = true; - wxConfigBase::Get()->Write(wxT("/BatchFrame/OverwriteCheck"), 1); + wxConfigBase::Get()->Write(wxT("/BatchFrame/OverwriteCheck"), 1l); } else { m_batch->overwrite = false; - wxConfigBase::Get()->Write(wxT("/BatchFrame/OverwriteCheck"), 0); + wxConfigBase::Get()->Write(wxT("/BatchFrame/OverwriteCheck"), 0l); } } void BatchFrame::OnCheckParallel(wxCommandEvent &event) @@ -806,12 +833,12 @@ if(event.IsChecked()) { m_batch->parallel = true; - wxConfigBase::Get()->Write(wxT("/BatchFrame/ParallelCheck"), 1); + wxConfigBase::Get()->Write(wxT("/BatchFrame/ParallelCheck"), 1l); } else { m_batch->parallel = false; - wxConfigBase::Get()->Write(wxT("/BatchFrame/ParallelCheck"), 0); + wxConfigBase::Get()->Write(wxT("/BatchFrame/ParallelCheck"), 0l); } } @@ -820,12 +847,12 @@ if(event.IsChecked()) { m_batch->shutdown = true; - wxConfigBase::Get()->Write(wxT("/BatchFrame/ShutdownCheck"), 1); + wxConfigBase::Get()->Write(wxT("/BatchFrame/ShutdownCheck"), 1l); } else { m_batch->shutdown = false; - wxConfigBase::Get()->Write(wxT("/BatchFrame/ShutdownCheck"), 0); + wxConfigBase::Get()->Write(wxT("/BatchFrame/ShutdownCheck"), 0l); } } @@ -834,12 +861,12 @@ if(event.IsChecked()) { m_batch->verbose = true; - wxConfigBase::Get()->Write(wxT("/BatchFrame/VerboseCheck"), 1); + wxConfigBase::Get()->Write(wxT("/BatchFrame/VerboseCheck"), 1l); } else { m_batch->verbose = false; - wxConfigBase::Get()->Write(wxT("/BatchFrame/VerboseCheck"), 0); + wxConfigBase::Get()->Write(wxT("/BatchFrame/VerboseCheck"), 0l); } } @@ -848,10 +875,10 @@ //wxMessageBox(_T("Closing...")); //save windows position if(this->IsMaximized()) - wxConfigBase::Get()->Write(wxT("/BatchFrame/Max"), 1); + wxConfigBase::Get()->Write(wxT("/BatchFrame/Max"), 1l); else { - wxConfigBase::Get()->Write(wxT("/BatchFrame/Max"), 0); + wxConfigBase::Get()->Write(wxT("/BatchFrame/Max"), 0l); wxConfigBase::Get()->Write(wxT("/BatchFrame/Width"), this->GetSize().GetWidth()); wxConfigBase::Get()->Write(wxT("/BatchFrame/Height"), this->GetSize().GetHeight()); } @@ -991,9 +1018,9 @@ void BatchFrame::RestoreSize() { //get saved size - int width = wxConfigBase::Get()->Read(wxT("/BatchFrame/Width"), -1); - int height = wxConfigBase::Get()->Read(wxT("/BatchFrame/Height"), -1); - int max = wxConfigBase::Get()->Read(wxT("/BatchFrame/Max"), -1);; + int width = wxConfigBase::Get()->Read(wxT("/BatchFrame/Width"), -1l); + int height = wxConfigBase::Get()->Read(wxT("/BatchFrame/Height"), -1l); + int max = wxConfigBase::Get()->Read(wxT("/BatchFrame/Max"), -1l);; if((width != -1) && (height != -1)) this->SetSize(width,height); else Modified: hugin/trunk/src/hugin1/ptbatcher/BatchFrame.h =================================================================== --- hugin/trunk/src/hugin1/ptbatcher/BatchFrame.h 2009-04-26 07:26:03 UTC (rev 3801) +++ hugin/trunk/src/hugin1/ptbatcher/BatchFrame.h 2009-04-26 09:40:36 UTC (rev 3802) @@ -85,6 +85,8 @@ void OnClose(wxCloseEvent &event); //Resets all checkboxes based on m_batch object properties void PropagateDefaults(); + //Sets all checkboxes corresponding the setting in config + void SetCheckboxes(); //Starts batch execution void RunBatch(); //Sets locale and XRC prefix pointers from main app Modified: hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.cpp =================================================================== --- hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.cpp 2009-04-26 07:26:03 UTC (rev 3801) +++ hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.cpp 2009-04-26 09:40:36 UTC (rev 3802) @@ -86,21 +86,28 @@ // set the name of locale recource to look for m_locale.AddCatalog(wxT("hugin")); - if ( ! wxFile::Exists(m_xrcPrefix + wxT("/batch_frame.xrc")) ) { - wxMessageBox(_("xrc directory not found, hugin needs to be properly installed\nTried Path:" + m_xrcPrefix ), _("Fatal Error")); - return false; - } - // initialize image handlers - wxInitAllImageHandlers(); + const wxString name = wxString::Format(_T(".PTBatcherGUI-%s"), wxGetUserId().c_str()); + m_checker = new wxSingleInstanceChecker(name); + bool IsFirstInstance=(!m_checker->IsAnotherRunning()); - // Initialize all the XRC handlers. - wxXmlResource::Get()->InitAllHandlers(); - wxXmlResource::Get()->AddHandler(new ProjectListBoxXmlHandler()); - // load XRC files - wxXmlResource::Get()->Load(m_xrcPrefix + wxT("batch_frame.xrc")); - wxXmlResource::Get()->Load(m_xrcPrefix + wxT("batch_toolbar.xrc")); - wxXmlResource::Get()->Load(m_xrcPrefix + wxT("batch_menu.xrc")); + if(IsFirstInstance) + { + if ( ! wxFile::Exists(m_xrcPrefix + wxT("/batch_frame.xrc")) ) { + wxMessageBox(_("xrc directory not found, hugin needs to be properly installed\nTried Path:") + m_xrcPrefix , _("Fatal Error")); + return false; + } + // initialize image handlers + wxInitAllImageHandlers(); + // Initialize all the XRC handlers. + wxXmlResource::Get()->InitAllHandlers(); + wxXmlResource::Get()->AddHandler(new ProjectListBoxXmlHandler()); + // load XRC files + wxXmlResource::Get()->Load(m_xrcPrefix + wxT("batch_frame.xrc")); + wxXmlResource::Get()->Load(m_xrcPrefix + wxT("batch_toolbar.xrc")); + wxXmlResource::Get()->Load(m_xrcPrefix + wxT("batch_menu.xrc")); + }; + // parse arguments static const wxCmdLineEntryDesc cmdLineDesc[] = { @@ -151,10 +158,33 @@ } */ #endif - m_frame = new BatchFrame(&m_locale,m_xrcPrefix); - m_frame->RestoreSize(); - SetTopWindow(m_frame); - m_frame->Show(true); + wxClient client; + wxConnectionBase *conn; + wxString servername; +#ifdef __WINDOWS__ + servername=name; +#else + servername=wxT("4242"); +#endif + if(IsFirstInstance) + { + m_frame = new BatchFrame(&m_locale,m_xrcPrefix); + m_frame->RestoreSize(); + SetTopWindow(m_frame); + m_frame->Show(true); + m_server = new BatchIPCServer(); + if (!m_server->Create(servername)) + { + delete m_server; + m_server = NULL; + }; + } + else + { + conn=client.MakeConnection(wxT("localhost"), servername, IPC_START); + if(!conn) + return false; + }; //m_frame->SetLocaleAndXRC(&m_locale,m_xrcPrefix); //projectsRunning=0; unsigned int count = 0; @@ -167,20 +197,23 @@ if(!projectSpecified) //next parameter must be new script file { wxFileName name(param); - Project *proj = new Project(param,name.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR) + name.GetName()); - projList.Add(proj); - m_frame->SetStatusText(_("Added project ")+param); - - m_frame->projListBox->AppendProject(proj); + name.MakeAbsolute(); + if(IsFirstInstance) + m_frame->AddToList(name.GetFullPath()); + else + conn->Request(wxT("A ")+name.GetFullPath()); projectSpecified = true; } else //parameter could be previous project's output prefix { wxFileName fn(param); + fn.MakeAbsolute(); if(!fn.HasExt()) //if there is no extension we have a prefix { - projList.Last().prefix = param; - m_frame->projListBox->ReloadProject(m_frame->projListBox->GetItemCount()-1,((Project*)&projList.Last())); + if(IsFirstInstance) + m_frame->ChangePrefix(-1,fn.GetFullPath()); + else + conn->Request(wxT("P ")+fn.GetFullPath()); projectSpecified = false; } else @@ -193,8 +226,10 @@ ext.CmpNoCase(wxT("pnm")) == 0 || ext.CmpNoCase(wxT("hdr")) == 0) { //extension will be removed before stitch, so there is no need to do it now - projList.Last().prefix = param; - m_frame->projListBox->ReloadProject(m_frame->projListBox->GetItemCount()-1,((Project*)&projList.Last())); + if(IsFirstInstance) + m_frame->ChangePrefix(-1,fn.GetFullPath()); + else + conn->Request(wxT("P ")+fn.GetFullPath()); projectSpecified = false; } else //if parameter has a different extension we presume it is a new script file @@ -223,72 +258,39 @@ m_frame->projListBox->Deselect(m_frame->projListBox->GetItemCount()-1);*/ //we add the new project - wxFileName name(param); - Project *proj = new Project(param,name.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR) + name.GetName()); - projList.Add(proj); - m_frame->SetStatusText(_("Added project ")+param); - m_frame->projListBox->AppendProject(proj); + if(IsFirstInstance) + m_frame->AddToList(fn.GetFullPath()); + else + conn->Request(wxT("A ")+fn.GetFullPath()); projectSpecified = true; } } //else of if(!fn.HasExt()) } } - if (parser.Found(wxT("d")) ) { - XRCCTRL(*m_frame,"cb_delete",wxCheckBox)->SetValue(true); - wxConfigBase::Get()->Write(wxT("/BatchFrame/DeleteCheck"), 1); - } - else{ - int del = wxConfigBase::Get()->Read(wxT("/BatchFrame/DeleteCheck"), (long)0); - if(del==0) - XRCCTRL(*m_frame,"cb_delete",wxCheckBox)->SetValue(false); - else - XRCCTRL(*m_frame,"cb_delete",wxCheckBox)->SetValue(true); - } - if (parser.Found(wxT("p")) ) { - XRCCTRL(*m_frame,"cb_parallel",wxCheckBox)->SetValue(true); - wxConfigBase::Get()->Write(wxT("/BatchFrame/ParallelCheck"), 1); - } - else{ - int par = wxConfigBase::Get()->Read(wxT("/BatchFrame/ParallelCheck"), (long)0); - if(par==0) - XRCCTRL(*m_frame,"cb_parallel",wxCheckBox)->SetValue(false); - else - XRCCTRL(*m_frame,"cb_parallel",wxCheckBox)->SetValue(true); - } - if (parser.Found(wxT("s")) ) { - XRCCTRL(*m_frame,"cb_shutdown",wxCheckBox)->SetValue(true); - wxConfigBase::Get()->Write(wxT("/BatchFrame/ShutdownCheck"), 1); - } - else{ - int shtdwn = wxConfigBase::Get()->Read(wxT("/BatchFrame/ShutdownCheck"), (long)0); - if(shtdwn==0) - XRCCTRL(*m_frame,"cb_shutdown",wxCheckBox)->SetValue(false); - else - XRCCTRL(*m_frame,"cb_shutdown",wxCheckBox)->SetValue(true); - } - if (parser.Found(wxT("o")) ) { - XRCCTRL(*m_frame,"cb_overwrite",wxCheckBox)->SetValue(true); - wxConfigBase::Get()->Write(wxT("/BatchFrame/OverwriteCheck"), 1); - } - else{ - int overwrite = wxConfigBase::Get()->Read(wxT("/BatchFrame/OverwriteCheck"), (long)0); - if(overwrite==0) - XRCCTRL(*m_frame,"cb_overwrite",wxCheckBox)->SetValue(false); - else - XRCCTRL(*m_frame,"cb_overwrite",wxCheckBox)->SetValue(true); - } - if (parser.Found(wxT("v")) ) { - XRCCTRL(*m_frame,"cb_verbose",wxCheckBox)->SetValue(true); - wxConfigBase::Get()->Write(wxT("/BatchFrame/VerboseCheck"), 1); - } - else{ - int overwrite = wxConfigBase::Get()->Read(wxT("/BatchFrame/VerboseCheck"), (long)0); - if(overwrite==0) - XRCCTRL(*m_frame,"cb_verbose",wxCheckBox)->SetValue(false); - else - XRCCTRL(*m_frame,"cb_verbose",wxCheckBox)->SetValue(true); - } + wxConfigBase *config=wxConfigBase::Get(); + if (parser.Found(wxT("d"))) + config->Write(wxT("/BatchFrame/DeleteCheck"), 1l); + if (parser.Found(wxT("p"))) + config->Write(wxT("/BatchFrame/ParallelCheck"), 1l); + if (parser.Found(wxT("s"))) + config->Write(wxT("/BatchFrame/ShutdownCheck"), 1l); + if (parser.Found(wxT("o"))) + config->Write(wxT("/BatchFrame/OverwriteCheck"), 1l); + if (parser.Found(wxT("v"))) + config->Write(wxT("/BatchFrame/VerboseCheck"), 1l); + config->Flush(); + if(!IsFirstInstance) + { + conn->Request(wxT("BringWindowToTop")); + if(parser.Found(wxT("b"))) + conn->Request(wxT("RunBatch")); + conn->Disconnect(); + delete conn; + delete m_checker; + return false; + }; + m_frame->SetCheckboxes(); m_frame->PropagateDefaults(); if (parser.Found(wxT("b")) ) { m_frame->RunBatch(); @@ -296,6 +298,13 @@ return true; } +int PTBatcherGUI::OnExit() +{ + delete m_checker; + delete m_server; + return 0; +} + void PTBatcherGUI::OnItemActivated(wxListEvent &event) { wxCommandEvent dummy; @@ -327,9 +336,34 @@ } #ifdef __WXMAC__ -// wx calls this method when the app gets "Open file" AppleEvent +// wx calls this method when the app gets "Open file" AppleEvent void PTBatcherGUI::MacOpenFile(const wxString &fileName) { m_macFileNameToOpenOnStart = fileName; } #endif + +wxChar* BatchIPCConnection::OnRequest(const wxString& topic, const wxString& item, int *size, wxIPCFormat format) +{ + BatchFrame *MyBatchFrame=wxGetApp().GetFrame(); + if(item.Left(1)==wxT("A")) + MyBatchFrame->AddToList(item.Mid(2)); + if(item.Left(1)==wxT("P")) + MyBatchFrame->ChangePrefix(-1,item.Mid(2)); + MyBatchFrame->SetCheckboxes(); + if(item==wxT("BringWindowToTop")) + MyBatchFrame->RequestUserAttention(); + if(item==wxT("RunBatch")) + { + wxCommandEvent myEvent(wxEVT_COMMAND_TOOL_CLICKED ,XRCID("tool_start")); + MyBatchFrame->AddPendingEvent(myEvent); + }; + return wxT(""); +}; + +wxConnectionBase* BatchIPCServer::OnAcceptConnection (const wxString& topic) +{ + if(topic==IPC_START) + return new BatchIPCConnection; + return NULL; +}; Modified: hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.h =================================================================== --- hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.h 2009-04-26 07:26:03 UTC (rev 3801) +++ hugin/trunk/src/hugin1/ptbatcher/PTBatcherGUI.h 2009-04-26 09:40:36 UTC (rev 3802) @@ -33,6 +33,8 @@ #include <wx/dir.h> #include <wx/wfstream.h> #include <wx/filefn.h> +#include <wx/snglinst.h> +#include <wx/ipc.h> #include <hugin_config.h> #include <wx/cmdline.h> @@ -46,6 +48,29 @@ #define PTBATCHERGUI_H // ********************************************************************** +/** class for communication between different PTBatcherGUI instances + * + * this class is used to transfer the commandline parameters of the second instance of PTBatcherGUI + * to the first and only running instance of PTBatcherGUI +*/ +class BatchIPCConnection : public wxConnection +{ +public: + /** request handler for transfer */ + virtual wxChar *OnRequest(const wxString& topic, const wxString& item, int *size = NULL, wxIPCFormat format = wxIPC_TEXT); +}; + +/** server for server which implements the communication between different PTBatcherGUI instances (see BatchIPCConnection) */ +class BatchIPCServer : public wxServer +{ +public: + /**accept connection handler (establish the connection) */ + virtual wxConnectionBase *OnAcceptConnection (const wxString& topic); +}; + +/** topic name for BatchIPCConnection and BatchIPCServer */ +const wxString IPC_START(wxT("BatchStart")); + /** The application class for hugin_stitch_project * * it contains the main frame. @@ -56,7 +81,8 @@ /** pseudo constructor. with the ability to fail gracefully. */ virtual bool OnInit(); - + virtual int OnExit(); + //Handles some input keys for the frame void OnItemActivated(wxListEvent &event); void OnKeyDown(wxKeyEvent &event); @@ -77,6 +103,9 @@ wxLocale m_locale; wxString m_xrcPrefix; PTPrograms progs; + wxSingleInstanceChecker *m_checker; + BatchIPCServer *m_server; + #ifdef __WXMAC__ wxString m_macFileNameToOpenOnStart; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gko...@us...> - 2009-05-08 23:31:05
|
Revision: 3842 http://hugin.svn.sourceforge.net/hugin/?rev=3842&view=rev Author: gkohlmeyer Date: 2009-05-08 23:31:04 +0000 (Fri, 08 May 2009) Log Message: ----------- Updated CMake files for boost 1.39.0, exiv2-0.18.1 and wxWidgets 2.8.10 Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/CMakeModules/FindBoost.cmake hugin/trunk/CMakeModules/FindExiv2.cmake Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2009-05-08 23:29:18 UTC (rev 3841) +++ hugin/trunk/CMakeLists.txt 2009-05-08 23:31:04 UTC (rev 3842) @@ -92,7 +92,7 @@ # search boost there SET(BOOST_DIR_SEARCH_USER ${SOURCE_BASE_DIR}) # wxWidgets - SET(wxWidgets_ROOT_DIR ${SOURCE_BASE_DIR}/wxWidgets-2.8.9) + SET(wxWidgets_ROOT_DIR ${SOURCE_BASE_DIR}/wxWidgets-2.8.10) # GLEW moved to FildGLEW.cmake module # SET(GLEW_INCLUDE_DIR ${SOURCE_BASE_DIR}/glew/include) # for dynamic build, it's glew32.lib and the dll must be copied into hugin's bin folder Modified: hugin/trunk/CMakeModules/FindBoost.cmake =================================================================== --- hugin/trunk/CMakeModules/FindBoost.cmake 2009-05-08 23:29:18 UTC (rev 3841) +++ hugin/trunk/CMakeModules/FindBoost.cmake 2009-05-08 23:31:04 UTC (rev 3842) @@ -110,6 +110,7 @@ boost-1_33_0 boost_1_37_0 boost_1_38_0 + boost_1_39_0 ) # Modified: hugin/trunk/CMakeModules/FindExiv2.cmake =================================================================== --- hugin/trunk/CMakeModules/FindExiv2.cmake 2009-05-08 23:29:18 UTC (rev 3841) +++ hugin/trunk/CMakeModules/FindExiv2.cmake 2009-05-08 23:31:04 UTC (rev 3842) @@ -73,6 +73,7 @@ ${SOURCE_BASE_DIR}/exiv2/msvc/include ${SOURCE_BASE_DIR}/exiv2-0.16/msvc/include ${SOURCE_BASE_DIR}/exiv2-0.18/msvc/include + ${SOURCE_BASE_DIR}/exiv2-0.18.1/msvc/include ) include(FindLibraryWithDebug) @@ -80,13 +81,13 @@ find_library_with_debug(EXIV2_LIBRARIES WIN32_DEBUG_POSTFIX d NAMES exiv2 libexiv2 - PATHS /usr/lib /usr/local/lib ${SOURCE_BASE_DIR}/exiv2/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.16/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.18/msvc/lib + PATHS /usr/lib /usr/local/lib ${SOURCE_BASE_DIR}/exiv2/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.16/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.18/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.18.1/msvc/lib ) find_library_with_debug(EXIV2EXPAT_LIBRARIES WIN32_DEBUG_POSTFIX d NAMES libexpat - PATHS /usr/lib /usr/local/lib ${SOURCE_BASE_DIR}/exiv2/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.16/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.18/msvc/lib + PATHS /usr/lib /usr/local/lib ${SOURCE_BASE_DIR}/exiv2/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.16/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.18/msvc/lib ${SOURCE_BASE_DIR}/exiv2-0.18.1/msvc/lib ) SET(EXIV2_LIBRARIES ${EXIV2_LIBRARIES} ${EXIV2EXPAT_LIBRARIES}) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <gpa...@us...> - 2009-05-15 13:53:38
|
Revision: 3853 http://hugin.svn.sourceforge.net/hugin/?rev=3853&view=rev Author: gpatters1 Date: 2009-05-15 13:38:34 +0000 (Fri, 15 May 2009) Log Message: ----------- Fixes to add time-series button for non-jpeg images. NOTE: libexiv2 is now required to build hugin. Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/src/hugin1/hugin/LensPanel.cpp hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2009-05-14 16:40:31 UTC (rev 3852) +++ hugin/trunk/CMakeLists.txt 2009-05-15 13:38:34 UTC (rev 3853) @@ -142,10 +142,8 @@ FIND_PACKAGE(OpenEXR REQUIRED) include_directories(${OPENEXR_INCLUDE_DIR}) -FIND_PACKAGE(Exiv2) -IF(EXIV2_FOUND) - INCLUDE_DIRECTORIES(${EXIV2_INCLUDE_DIR}) -ENDIF(EXIV2_FOUND) +FIND_PACKAGE(Exiv2 REQUIRED) +INCLUDE_DIRECTORIES(${EXIV2_INCLUDE_DIR}) ## OpenGL and GLEW Modified: hugin/trunk/src/hugin1/hugin/LensPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/LensPanel.cpp 2009-05-14 16:40:31 UTC (rev 3852) +++ hugin/trunk/src/hugin1/hugin/LensPanel.cpp 2009-05-15 13:38:34 UTC (rev 3853) @@ -34,8 +34,6 @@ #include <algorithm> -#include "jhead/jhead.h" - #include "common/wxPlatform.h" #include "hugin/LensPanel.h" #include "hugin/CommandHistory.h" @@ -809,29 +807,17 @@ unsigned int imgNr = *it; // check file extension wxFileName file(wxString(pano->getImage(imgNr).getFilename().c_str(), HUGIN_CONV_FILENAME)); -#ifndef HUGIN_USE_EXIV2 - if (file.GetExt().CmpNoCase(wxT("jpg")) == 0 || - file.GetExt().CmpNoCase(wxT("jpeg")) == 0 ) - { -#endif - double cropFactor = 0; - double focalLength = 0; - SrcPanoImage srcImg = pano->getSrcImage(imgNr); - bool ok = initImageFromFile(srcImg, focalLength, cropFactor); - if (! ok) { - if ( ! getLensDataFromUser(this, srcImg, focalLength, cropFactor)) { - srcImg.setHFOV(50); - } + double cropFactor = 0; + double focalLength = 0; + SrcPanoImage srcImg = pano->getSrcImage(imgNr); + bool ok = initImageFromFile(srcImg, focalLength, cropFactor); + if (! ok) { + if ( ! getLensDataFromUser(this, srcImg, focalLength, cropFactor)) { + srcImg.setHFOV(50); } - //initLensFromFile(pano->getImage(imgNr).getFilename().c_str(), c, lens, vars, imgopts, true); - GlobalCmdHist::getInstance().addCommand( - new PT::UpdateSrcImageCmd( *pano, imgNr, srcImg) - ); -#ifndef HUGIN_USE_EXIV2 - } else { - wxLogError(_("Not a jpeg file:") + file.GetName()); } -#endif + //initLensFromFile(pano->getImage(imgNr).getFilename().c_str(), c, lens, vars, imgopts, true); + GlobalCmdHist::getInstance().addCommand(new PT::UpdateSrcImageCmd( *pano, imgNr, srcImg)); } } else { wxLogError(_("Please select an image and try again")); @@ -902,39 +888,21 @@ cfg.Write(wxT("Lens/crop/right"), imgopts.cropRect.right()); cfg.Write(wxT("Lens/crop/bottom"), imgopts.cropRect.bottom()); - // try to read the exif data and add that to the lens ini file - wxFileName file(wxString(pano->getImage(imgNr).getFilename().c_str(), HUGIN_CONV_FILENAME)); - if (file.GetExt().CmpNoCase(wxT("jpg")) == 0 || - file.GetExt().CmpNoCase(wxT("jpeg")) == 0 ) - { - - // TODO: use EXIF2 for reading this exif data. - ImageInfo_t exif; - ResetJpgfile(); - // Start with an empty image information structure. - - memset(&exif, 0, sizeof(exif)); - exif.FlashUsed = -1; - exif.MeteringMode = -1; - - if (ReadJpegFile(exif,pano->getImage(imgNr).getFilename().c_str(), READ_EXIF)){ - // calculate crop factor, if possible - double cropFactor=0; - if (exif.FocalLength > 0 && exif.CCDHeight > 0 && exif.CCDWidth > 0) { - cropFactor = sqrt(36.0*36.0+24.0*24)/sqrt(exif.CCDWidth*exif.CCDWidth + exif.CCDHeight*exif.CCDHeight); - } else if (exif.FocalLength35mm > 0 && exif.FocalLength > 0) { - cropFactor = exif.FocalLength35mm / exif.FocalLength; - } - - // write exif data to ini file - cfg.Write(wxT("EXIF/CameraMake"), wxString(exif.CameraMake, wxConvLocal)); - cfg.Write(wxT("EXIF/CameraModel"), wxString(exif.CameraModel, wxConvLocal)); - cfg.Write(wxT("EXIF/FocalLength"), (double) exif.FocalLength); - cfg.Write(wxT("EXIF/Aperture"), (double) exif.ApertureFNumber); - cfg.Write(wxT("EXIF/ISO"), exif.ISOequivalent); - cfg.Write(wxT("EXIF/CropFactor"), cropFactor); - cfg.Write(wxT("EXIF/Distance"), exif.Distance); - } + SrcPanoImage image = pano->getSrcImage(imgNr); + // No EXIF data is stored in the pano model so they will have + // to be loaded now to save into the lens file + double focalLength = 0; + double cropFactor = 0; + if (image.readEXIF(focalLength, cropFactor, false)) { + + // write exif data to ini file + cfg.Write(wxT("EXIF/CameraMake"), wxString(image.getExifMake().c_str(), wxConvLocal)); + cfg.Write(wxT("EXIF/CameraModel"), wxString(image.getExifModel().c_str(), wxConvLocal)); + cfg.Write(wxT("EXIF/FocalLength"), image.getExifFocalLength()); + cfg.Write(wxT("EXIF/Aperture"), image.getExifAperture()); + cfg.Write(wxT("EXIF/ISO"), image.getExifISO()); + cfg.Write(wxT("EXIF/CropFactor"), image.getExifCropFactor()); + cfg.Write(wxT("EXIF/Distance"), image.getExifDistance()); } cfg.Flush(); Modified: hugin/trunk/src/hugin1/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2009-05-14 16:40:31 UTC (rev 3852) +++ hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2009-05-15 13:38:34 UTC (rev 3853) @@ -26,6 +26,8 @@ #include <config.h> #include <hugin_version.h> +#include <exiv2/exif.hpp> +#include <exiv2/image.hpp> #include "panoinc_WX.h" #include "panoinc.h" @@ -34,8 +36,6 @@ #include "vigra_ext/Correlation.h" -#include "jhead/jhead.h" - #include "PT/utils.h" #include "hugin/config_defaults.h" @@ -832,22 +832,51 @@ DEBUG_TRACE(""); } -time_t ReadJpegTime(const char* filename) +time_t ReadExifTime(const char* filename) { - // Skip it if it isn't JPEG or there's no EXIF. - ResetJpgfile(); - ImageInfo_t exif; - memset(&exif, 0, sizeof(exif)); - if (!ReadJpegFile(exif, filename, READ_EXIF)) + Exiv2::Image::AutoPtr image; + try { + image = Exiv2::ImageFactory::open(filename); + }catch(...) { return 0; + } + if (image.get() == 0) { + return 0; + } + + image->readMetadata(); + Exiv2::ExifData &exifData = image->exifData(); + if (exifData.empty()) { + return 0; + } + + Exiv2::Exifdatum& tag = exifData["Exif.Image.DateTime"]; + const std::string date_time = tag.toString(); + // Remember the file and a shutter timestamp. - time_t stamp; struct tm when; memset(&when, 0, sizeof(when)); - Exif2tm(&when, exif.DateTime); + when.tm_wday = -1; + + // parse into the tm_structure + const int a = sscanf(date_time.c_str(), "%d:%d:%d %d:%d:%d", + &when.tm_year, &when.tm_mon, &when.tm_mday, + &when.tm_hour, &when.tm_min, &when.tm_sec); + + if (a == 6){ + when.tm_isdst = -1; + when.tm_mon -= 1; // Adjust for unix zero-based months + when.tm_year -= 1900; // Adjust for year starting at 1900 + } else { + // Not in EXIF format + return 0; + } + + time_t stamp; stamp = mktime(&when); if (stamp == (time_t)(-1)) return 0; + return stamp; } @@ -923,7 +952,7 @@ { wxString file = found->first; // Check the time if it's got a camera EXIF timestamp. - time_t stamp = ReadJpegTime(file.mb_str(HUGIN_CONV_FILENAME)); + time_t stamp = ReadExifTime(file.mb_str(HUGIN_CONV_FILENAME)); if (stamp) { filenames[file] = stamp; timeMap[(const char *)file.mb_str(HUGIN_CONV_FILENAME)] = stamp; Modified: hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp 2009-05-14 16:40:31 UTC (rev 3852) +++ hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp 2009-05-15 13:38:34 UTC (rev 3853) @@ -38,12 +38,8 @@ #include <vigra/diff2d.hxx> #include <vigra/imageinfo.hxx> #include <hugin_utils/utils.h> -#include <jhead/jhead.h> - -#ifdef HUGIN_USE_EXIV2 #include <exiv2/exif.hpp> #include <exiv2/image.hpp> -#endif #ifdef __FreeBSD__ #define log2(x) (log(x) / M_LN2) @@ -367,7 +363,6 @@ focalLength, cropFactor, getSize())); } - #ifdef HUGIN_USE_EXIV2 Exiv2::Image::AutoPtr image; try { image = Exiv2::ImageFactory::open(filename.c_str()); @@ -405,17 +400,19 @@ Exiv2::ExifKey key("Exif.Image.Make"); Exiv2::ExifData::iterator itr = exifData.findKey(key); - if (itr != exifData.end()) + if (itr != exifData.end()) { setExifMake(itr->toString()); - else + } else { setExifMake("Unknown"); + } Exiv2::ExifKey key2("Exif.Image.Model"); itr = exifData.findKey(key2); - if (itr != exifData.end()) + if (itr != exifData.end()) { setExifModel(itr->toString()); - else + } else { setExifModel("Unknown"); + } long orientation = 0; if (getExiv2Value(exifData,"Exif.Image.Orientation",orientation)) { @@ -604,108 +601,6 @@ } getExiv2Value(exifData,"Exif.Photo.SubjectDistance", subjectDistance); -#else - if (ext == "JPG" || ext == "JPEG") { - - ImageInfo_t exif; - ResetJpgfile(); - // Start with an empty image information structure. - - memset(&exif, 0, sizeof(exif)); - exif.FlashUsed = -1; - exif.MeteringMode = -1; - if (ReadJpegFile(exif,filename.c_str(), READ_EXIF)){ -#ifdef DEBUG - ShowImageInfo(exif); -#endif - std::cout << "exp time: " << exif.ExposureTime << " f-stop: " << exif.ApertureFNumber << std::endl; - // calculate exposure from exif image - exposureTime = exif.ExposureTime; - photoFNumber = exif.ApertureFNumber; - if (exif.ExposureTime > 0 && exif.ApertureFNumber > 0) { - double gain = 1; - isoSpeed = exif.ISOequivalent; - if (exif.ISOequivalent > 0) - gain = exif.ISOequivalent/ 100.0; - eV = log2(exif.ApertureFNumber*exif.ApertureFNumber/(gain * exif.ExposureTime)); - } - - setExifMake(exif.CameraMake); - setExifModel(exif.CameraModel); - DEBUG_DEBUG("exif dimensions: " << exif.ExifImageWidth << "x" << exif.ExifImageWidth); - switch (exif.Orientation) { - case 3: // rotate 180 - roll = 180; - break; - case 6: // rotate 90 - roll = 90; - break; - case 8: // rotate 270 - roll = 270; - break; - default: - break; - } - // image has been modified without adjusting exif tags - // assume user has rotated to upright pose - if (exif.ExifImageWidth && exif.ExifImageLength) { - double ratioExif = exif.ExifImageWidth / (double)exif.ExifImageLength; - double ratioImage = width/(double)height; - if (fabs( ratioExif - ratioImage) > 0.1) { - roll = 0; - } - } - - // calc sensor dimensions if not set and 35mm focal length is available - FDiff2D sensorSize; - - std::cout << "exif.CCDHeight " << exif.CCDHeight << " exif.CCDWidth " << exif.CCDWidth << "\n"; - if (exif.CCDHeight > 0 && exif.CCDWidth > 0) { - // read sensor size directly. - sensorSize.x = exif.CCDWidth; - sensorSize.y = exif.CCDHeight; - if (strcmp(exif.CameraModel, "Canon EOS 20D") == 0) { - // special case for buggy 20D camera - sensorSize.x = 22.5; - sensorSize.y = 15; - } - // - // check if sensor size ratio and image size fit together - double rsensor = (double)sensorSize.x / sensorSize.y; - double rimg = (double) width / height; - if ( (rsensor > 1 && rimg < 1) || (rsensor < 1 && rimg > 1) ) { - // image and sensor ratio do not match - // swap sensor sizes - float t; - t = sensorSize.y; - sensorSize.y = sensorSize.x; - sensorSize.x = t; - } - std::cout << "sensorSize.y " << sensorSize.y << " sensorSize.x " << sensorSize.x << "\n"; - cropFactor = sqrt(36.0*36.0+24.0*24)/sqrt(sensorSize.x*sensorSize.x + sensorSize.y*sensorSize.y); - } - - if (exif.FocalLength > 0 && cropFactor > 0) { - // user provided crop factor - focalLength = exif.FocalLength; - } else if (exif.FocalLength35mm > 0 && exif.FocalLength > 0) { - cropFactor = exif.FocalLength35mm / exif.FocalLength; - focalLength = exif.FocalLength; - } else if (exif.FocalLength35mm > 0) { - // 35 mm equiv focal length available, crop factor unknown. - // do not ask for crop factor, assume 1. - cropFactor = 1; - focalLength = exif.FocalLength35mm; - } else if (exif.FocalLength > 0 && cropFactor <= 0) { - // need to redo, this time with crop - focalLength = exif.FocalLength; - cropFactor = 0; - } - } - subjectDistance = exif.Distance; - } -#endif - // store some important EXIF tags for later usage. setExifFocalLength(focalLength); setExifCropFactor(cropFactor); @@ -832,7 +727,6 @@ } -#ifdef HUGIN_USE_EXIV2 // Convenience functions to work with Exiv2 bool SrcPanoImage::getExiv2Value(Exiv2::ExifData& exifData, std::string keyName, long & value) { @@ -860,6 +754,5 @@ return false; } } -#endif // HUGIN_USE_EXIV2 } // namespace This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <st...@us...> - 2009-05-23 10:34:31
|
Revision: 3877 http://hugin.svn.sourceforge.net/hugin/?rev=3877&view=rev Author: stativ Date: 2009-05-23 10:34:29 +0000 (Sat, 23 May 2009) Log Message: ----------- Added support for external LAPACK Modified Paths: -------------- hugin/trunk/CMakeLists.txt hugin/trunk/src/CMakeLists.txt hugin/trunk/src/foreign/levmar/CMakeLists.txt hugin/trunk/src/foreign/levmar/lm.h Modified: hugin/trunk/CMakeLists.txt =================================================================== --- hugin/trunk/CMakeLists.txt 2009-05-23 08:30:47 UTC (rev 3876) +++ hugin/trunk/CMakeLists.txt 2009-05-23 10:34:29 UTC (rev 3877) @@ -193,6 +193,17 @@ MESSAGE(STATUS "Program msgfmt found (${MSGFMT_EXECUTABLE})") ENDIF(MSGFMT_FOUND) +## +## LAPACK +## + +FIND_PACKAGE(LAPACK) +IF(LAPACK_FOUND) + MESSAGE(STATUS "LAPACK found (${LAPACK_LIBRARIES})") +ELSE(LAPACK_FOUND) + MESSAGE(STATUS "LAPACK not found, using LU-based solver") +ENDIF(LAPACK_FOUND) + # vips is not used right now #IF (WIN32) # # todo: check for vips (not needed right now) Modified: hugin/trunk/src/CMakeLists.txt =================================================================== --- hugin/trunk/src/CMakeLists.txt 2009-05-23 08:30:47 UTC (rev 3876) +++ hugin/trunk/src/CMakeLists.txt 2009-05-23 10:34:29 UTC (rev 3877) @@ -1,15 +1,26 @@ # define common sets of libraries, used by different subdirectories IF (MSVC) - # boost_thread is linked automatically - # additionally link to our getopt - set(common_libs huginbase hugingetopt - ${PANO_LIBRARIES} huginlevmar) + IF(LAPACK_FOUND) + # boost_thread is linked automatically + # additionally link to our getopt + set(common_libs huginbase hugingetopt + ${PANO_LIBRARIES} ${LAPACK_LIBRARIES} huginlevmar) + ELSE(LAPACK_FOUND) + set(common_libs huginbase hugingetopt + ${PANO_LIBRARIES} huginlevmar) + ENDIF(LAPACK_FOUND) include_directories( ${CMAKE_SOURCE_DIR}/src/foreign/getopt/include ) ELSE (MSVC) - # need to specify boost thread library - set(common_libs huginbase - ${Boost_thread_LIBRARIES} ${PANO_LIBRARIES} huginlevmar) + IF(LAPACK_FOUND) + # need to specify boost thread library + set(common_libs huginbase + ${Boost_thread_LIBRARIES} ${PANO_LIBRARIES} ${LAPACK_LIBRARIES} huginlevmar) + ELSE(LAPACK_FOUND) + # need to specify boost thread library + set(common_libs huginbase + ${Boost_thread_LIBRARIES} ${PANO_LIBRARIES} huginlevmar) + ENDIF(LAPACK_FOUND) ENDIF (MSVC) set(image_libs huginvigraimpex ${OPENEXR_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} Modified: hugin/trunk/src/foreign/levmar/CMakeLists.txt =================================================================== --- hugin/trunk/src/foreign/levmar/CMakeLists.txt 2009-05-23 08:30:47 UTC (rev 3876) +++ hugin/trunk/src/foreign/levmar/CMakeLists.txt 2009-05-23 10:34:29 UTC (rev 3877) @@ -1,4 +1,8 @@ add_library(huginlevmar STATIC lm.c Axb.c misc.c lmlec.c lmbc.c) IF (NOT MSVC) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC") -ENDIF (NOT MSVC) \ No newline at end of file +ENDIF (NOT MSVC) + +IF(LAPACK_FOUND) + ADD_DEFINITIONS(-DHAVE_LAPACK) +ENDIF(LAPACK_FOUND) Modified: hugin/trunk/src/foreign/levmar/lm.h =================================================================== --- hugin/trunk/src/foreign/levmar/lm.h 2009-05-23 08:30:47 UTC (rev 3876) +++ hugin/trunk/src/foreign/levmar/lm.h 2009-05-23 10:34:29 UTC (rev 3877) @@ -20,7 +20,7 @@ #ifndef _LM_H_ #define _LM_H_ -#undef HAVE_LAPACK // uncomment this to force not using LAPACK +//#undef HAVE_LAPACK // uncomment this to force not using LAPACK #define LINSOLVERS_RETAIN_MEMORY // comment this is if you don't want routines in Axb.c retain working memory between calls This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |