From: <tm...@us...> - 2010-03-25 20:07:36
|
Revision: 5090 http://hugin.svn.sourceforge.net/hugin/?rev=5090&view=rev Author: tmodes Date: 2010-03-25 20:07:29 +0000 (Thu, 25 Mar 2010) Log Message: ----------- Changed some labels in GUI for better understanding Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/xrc/mask_editor_panel.xrc hugin/trunk/src/hugin1/hugin/xrc/preview_frame.xrc hugin/trunk/src/translations/bg.po hugin/trunk/src/translations/ca_ES.po hugin/trunk/src/translations/cs_CZ.po hugin/trunk/src/translations/de.po hugin/trunk/src/translations/en_GB.po hugin/trunk/src/translations/es.po hugin/trunk/src/translations/fi.po hugin/trunk/src/translations/fr.po hugin/trunk/src/translations/hu.po hugin/trunk/src/translations/hugin.pot hugin/trunk/src/translations/it.po hugin/trunk/src/translations/ja.po hugin/trunk/src/translations/ko.po hugin/trunk/src/translations/nl.po hugin/trunk/src/translations/pl.po hugin/trunk/src/translations/pt_BR.po hugin/trunk/src/translations/ru.po hugin/trunk/src/translations/sk.po hugin/trunk/src/translations/sl.po hugin/trunk/src/translations/sv.po hugin/trunk/src/translations/uk.po hugin/trunk/src/translations/zh_CN.po hugin/trunk/src/translations/zh_TW.po Modified: hugin/trunk/src/hugin1/hugin/xrc/mask_editor_panel.xrc =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/mask_editor_panel.xrc 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/hugin1/hugin/xrc/mask_editor_panel.xrc 2010-03-25 20:07:29 UTC (rev 5090) @@ -243,11 +243,11 @@ </object> <object class="sizeritem"> <object class="wxRadioBox" name="mask_rescale"> - <label>Mask size change</label> + <label>Mask size</label> <content> - <item>Clip</item> - <item>Scale</item> - <item>Proportional scale</item> + <item>Don't change</item> + <item>Scale to fit</item> + <item>Scale proportional</item> </content> <selection>0</selection> <style>wxRA_SPECIFY_COLS</style> @@ -259,9 +259,9 @@ <object class="wxRadioBox" name="mask_rotate"> <label>Rotation</label> <content> - <item>none</item> - <item>clockwise</item> - <item>counter-clockwise</item> + <item>Don't rotate</item> + <item>90° clockwise</item> + <item>90° counter-clockwise</item> </content> <selection>0</selection> <style>wxRA_SPECIFY_COLS</style> @@ -327,4 +327,4 @@ <title>Loading mask</title> <style>wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</style> </object> -</resource> \ No newline at end of file +</resource> Modified: hugin/trunk/src/hugin1/hugin/xrc/preview_frame.xrc =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/preview_frame.xrc 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/hugin1/hugin/xrc/preview_frame.xrc 2010-03-25 20:07:29 UTC (rev 5090) @@ -375,8 +375,8 @@ <object class="sizeritem"> <object class="wxStaticText"> <label>* A grey line indicates there are no control points, but the image pair overlaps. -* A green line indicates good alignment. -* A red line indicates poor alignment. </label> +* Green, yellow and red lines indicate good, medium and poor alignment. +* Click a line to edit the associated images in the Control Points tab.</label> </object> <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> <border>5</border> Modified: hugin/trunk/src/translations/bg.po =================================================================== --- hugin/trunk/src/translations/bg.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/bg.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -6,7 +6,7 @@ "Project-Id-Version: bg\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2008-07-10 10:12+0200\n" "Last-Translator: Svetoslav Stefanov <lfu...@gm...>\n" "Language-Team: Bulgarian <bg...@li...>\n" @@ -3889,21 +3889,21 @@ msgstr "" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Тип на обектива:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Запазване" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "хоризонтална линия" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3912,15 +3912,16 @@ msgstr "Италиански" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "нет" +#, fuzzy +msgid "Don't rotate" +msgstr "&Дари средства" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -5038,8 +5039,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5387,6 +5388,13 @@ "да се използва само при силно застъпващи се изображения и много добре " "разположени контролни точки." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Запазване" + +#~ msgid "none" +#~ msgstr "нет" + #~ msgid "The druid has no advice." #~ msgstr "Помощникът няма с какво да помогне." Modified: hugin/trunk/src/translations/ca_ES.po =================================================================== --- hugin/trunk/src/translations/ca_ES.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/ca_ES.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -9,7 +9,7 @@ "Project-Id-Version: Hugin 0.5\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2005-11-10 18:48+0100\n" "Last-Translator: Albert Capellades Badia <alb...@gm...>\n" "Language-Team: Translation Project Catalan Team <alb...@gm...>\n" @@ -3869,21 +3869,21 @@ msgstr "" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Tipus de lent :" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Guardar" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "línia horitzontal" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3892,16 +3892,15 @@ msgstr "Italià" #: translations/xrc.cpp:413 xrc.cpp:413 -#, fuzzy -msgid "none" -msgstr "Cap" +msgid "Don't rotate" +msgstr "" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -5041,8 +5040,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5392,6 +5391,14 @@ "imatges amb un grau elevat de encavalcament i molts punts de control " "distribuïts correctament." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Guardar" + +#, fuzzy +#~ msgid "none" +#~ msgstr "Cap" + #~ msgid "The druid has no advice." #~ msgstr "L'assistent no us pot ajudar." Modified: hugin/trunk/src/translations/cs_CZ.po =================================================================== --- hugin/trunk/src/translations/cs_CZ.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/cs_CZ.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -29,7 +29,7 @@ "Project-Id-Version: cs_CZ\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2010-02-27 12:52+0100\n" "Last-Translator: Václav Černý <va...@se...>\n" "Language-Team: Čeština\n" @@ -3755,20 +3755,22 @@ msgstr "Velikost masky:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "Změna velikosti masky" +#, fuzzy +msgid "Mask size" +msgstr "Velikost masky:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" -msgstr "Oříznout" +msgid "Don't change" +msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -msgid "Scale" -msgstr "Měřítko" +msgid "Scale to fit" +msgstr "" # TODO #: translations/xrc.cpp:411 xrc.cpp:411 -msgid "Proportional scale" +#, fuzzy +msgid "Scale proportional" msgstr "Proporcionální měřítko" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3776,15 +3778,18 @@ msgstr "Otočení" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "žádná" +#, fuzzy +msgid "Don't rotate" +msgstr "&Darovat" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +#, fuzzy +msgid "90° clockwise" msgstr "po směru" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +#, fuzzy +msgid "90° counter-clockwise" msgstr "proti směru" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4862,11 +4867,12 @@ msgstr "Měřítko:" #: translations/xrc.cpp:743 xrc.cpp:743 +#, fuzzy msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" "* Šedá čára znázorňuje pár obrázků bez kontrolních bodů, který se překrývá.\n" "* Zelená čára značí dobré zarovnání.\n" @@ -5194,6 +5200,18 @@ "Optimalizace všech parametrů zkreslení \"všechno\" má smysl jen tehdy, pokud " "jste dobře rozmístili velké množství kontrolních bodů." +#~ msgid "Mask size change" +#~ msgstr "Změna velikosti masky" + +#~ msgid "Clip" +#~ msgstr "Oříznout" + +#~ msgid "Scale" +#~ msgstr "Měřítko" + +#~ msgid "none" +#~ msgstr "žádná" + #~ msgid "The druid has no advice." #~ msgstr "Pomocník nemá žádný nápad." Modified: hugin/trunk/src/translations/de.po =================================================================== --- hugin/trunk/src/translations/de.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/de.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -10,7 +10,7 @@ "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2010-03-22 22:27+0100\n" "Last-Translator: Carl von Einem <ca...@ei...>\n" "Language-Team: deutsch <de...@li...>\n" @@ -3784,19 +3784,21 @@ msgstr "Grösse der Maske:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "Änderung der Maskengrösse" +#, fuzzy +msgid "Mask size" +msgstr "Grösse der Maske:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" -msgstr "Clip" +msgid "Don't change" +msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -msgid "Scale" -msgstr "Skalieren" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 -msgid "Proportional scale" +#, fuzzy +msgid "Scale proportional" msgstr "Proportional skalieren" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3804,15 +3806,18 @@ msgstr "Drehung" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "keine" +#, fuzzy +msgid "Don't rotate" +msgstr "&Spenden" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +#, fuzzy +msgid "90° clockwise" msgstr "Im Uhrzeigersinn" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +#, fuzzy +msgid "90° counter-clockwise" msgstr "Gegen den Uhrzeigersinn" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4902,11 +4907,12 @@ msgstr "Skalierung:" #: translations/xrc.cpp:743 xrc.cpp:743 +#, fuzzy msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" "* Eine graue Linie markiert sich überlappende Bildpaare, die nicht durch " "Kontrollpunkte verbunden sind.\n" @@ -5248,6 +5254,18 @@ "Bilder mit großer Überlappung sowie mit vielen, gleichmäßig verteilten " "Kontrollpunkten verwendet werden." +#~ msgid "Mask size change" +#~ msgstr "Änderung der Maskengrösse" + +#~ msgid "Clip" +#~ msgstr "Clip" + +#~ msgid "Scale" +#~ msgstr "Skalieren" + +#~ msgid "none" +#~ msgstr "keine" + #~ msgid "The druid has no advice." #~ msgstr "Der Assistent hat keinen Ratschlag" Modified: hugin/trunk/src/translations/en_GB.po =================================================================== --- hugin/trunk/src/translations/en_GB.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/en_GB.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -9,7 +9,7 @@ "Project-Id-Version: en_GB\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2008-04-10 17:27+0100\n" "Last-Translator: Bruno Postle <br...@po...>\n" "Language-Team: LANGUAGE <en...@li...>\n" @@ -3577,19 +3577,19 @@ msgstr "" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" +msgid "Mask size" msgstr "" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -msgid "Scale" +msgid "Scale to fit" msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 -msgid "Proportional scale" +msgid "Scale proportional" msgstr "" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3597,15 +3597,15 @@ msgstr "" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" +msgid "Don't rotate" msgstr "" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4641,8 +4641,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 Modified: hugin/trunk/src/translations/es.po =================================================================== --- hugin/trunk/src/translations/es.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/es.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -8,7 +8,7 @@ "Project-Id-Version: hugin\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2009-07-06 03:17+0100\n" "Last-Translator: José Alejandro Carrillo Neira <j.a...@gm...>\n" "Language-Team: Spanish <tra...@es...>\n" @@ -3849,21 +3849,21 @@ msgstr "Marca:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Marca:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Guardar" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "línea horizontal" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3872,15 +3872,16 @@ msgstr "Italiano" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "ninguna" +#, fuzzy +msgid "Don't rotate" +msgstr "Do&nar" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -5013,8 +5014,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5357,6 +5358,13 @@ "sentido con imágenes fuertemente sobrepuestas y con muchos puntos de control " "bien distribuidos." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Guardar" + +#~ msgid "none" +#~ msgstr "ninguna" + #~ msgid "The druid has no advice." #~ msgstr "El druida no tiene ningún consejo." Modified: hugin/trunk/src/translations/fi.po =================================================================== --- hugin/trunk/src/translations/fi.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/fi.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -7,7 +7,7 @@ "Project-Id-Version: fi\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2010-03-23 15:21+0200\n" "Last-Translator: Juha Helminen <jhe...@ik...>\n" "Language-Team: <@>\n" @@ -3715,19 +3715,21 @@ msgstr "Maskin koko:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "Maskin koon vaihto" +#, fuzzy +msgid "Mask size" +msgstr "Maskin koko:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -msgid "Scale" -msgstr "Mittakaava" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 -msgid "Proportional scale" +#, fuzzy +msgid "Scale proportional" msgstr "Suhteutettu mittakaava" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3735,15 +3737,18 @@ msgstr "Kierto" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "" +#, fuzzy +msgid "Don't rotate" +msgstr "&Lahjoita" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +#, fuzzy +msgid "90° clockwise" msgstr "myötäpäivään" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +#, fuzzy +msgid "90° counter-clockwise" msgstr "vastapäivään" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4830,11 +4835,12 @@ msgstr "Mittakaava:" #: translations/xrc.cpp:743 xrc.cpp:743 +#, fuzzy msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" "* Harmaa viiva osoittaa ettei ole kohdistuspisteitä, mutta kuvaparilla on " "päällekkäisyyttä.\n" @@ -5154,6 +5160,12 @@ "Kaikkien väristymä parametrien optimointi on järkevää vain paljon " "päällekkäin olevilla ja laajasti jaetuilla kohdistuspisteillä." +#~ msgid "Mask size change" +#~ msgstr "Maskin koon vaihto" + +#~ msgid "Scale" +#~ msgstr "Mittakaava" + #~ msgid "" #~ "Stitch your final image now, and then use an image editor\n" #~ "such as the GNU Image Manipulation Program (the GIMP)\n" Modified: hugin/trunk/src/translations/fr.po =================================================================== --- hugin/trunk/src/translations/fr.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/fr.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -9,7 +9,7 @@ "Project-Id-Version: Hugin 2010-0.0\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2010-03-23 17:57+0100\n" "Last-Translator: Jean-Luc Coulon (f5ibh) <jea...@wa...>\n" "Language-Team: French <French <deb...@li...>>\n" @@ -3812,19 +3812,21 @@ msgstr "Dimensions du masque :" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "Modification des dimensions du masque" +#, fuzzy +msgid "Mask size" +msgstr "Dimensions du masque :" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" -msgstr "Tronquer" +msgid "Don't change" +msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -msgid "Scale" -msgstr "Échelle" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 -msgid "Proportional scale" +#, fuzzy +msgid "Scale proportional" msgstr "Échelle proportionnelle" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3832,15 +3834,18 @@ msgstr "Rotation" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "aucune" +#, fuzzy +msgid "Don't rotate" +msgstr "&Dons" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +#, fuzzy +msgid "90° clockwise" msgstr "horaire" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +#, fuzzy +msgid "90° counter-clockwise" msgstr "anti-horaire" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4950,11 +4955,12 @@ msgstr "Échelle :" #: translations/xrc.cpp:743 xrc.cpp:743 +#, fuzzy msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" "* Une ligne grise indique qu'il n'y a pas de point de contrôle, mais que la " "paire d'images se recouvre.\n" @@ -5305,6 +5311,18 @@ "L'optimisation de tous les paramètres de distorsion (« tout ») ne s'applique " "qu'à des images ayant un important recouvrement et des points de contrôle " +#~ msgid "Mask size change" +#~ msgstr "Modification des dimensions du masque" + +#~ msgid "Clip" +#~ msgstr "Tronquer" + +#~ msgid "Scale" +#~ msgstr "Échelle" + +#~ msgid "none" +#~ msgstr "aucune" + #~ msgid "The druid has no advice." #~ msgstr "L'assistant ne peut vous aider." Modified: hugin/trunk/src/translations/hu.po =================================================================== --- hugin/trunk/src/translations/hu.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/hu.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -3,7 +3,7 @@ "Project-Id-Version: Hugin 2010.1.0\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2010-03-04 14:40+0100\n" "Last-Translator: Höss Lajos <pg...@fr...>\n" "Language-Team: Balló György <ba...@fr...>\n" @@ -3770,21 +3770,21 @@ msgstr "Márka:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Márka:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Méret:" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "vízszintes vonal" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3793,15 +3793,16 @@ msgstr "Iteráció" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "egyik sem" +#, fuzzy +msgid "Don't rotate" +msgstr "A&dományoz" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4892,11 +4893,12 @@ msgstr "Méret:" #: translations/xrc.cpp:743 xrc.cpp:743 +#, fuzzy msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" "* A szürke vonal jelzi, hogy nincsenek kontroll pontok, de a képpárok között " "van átfedés.\n" @@ -5228,6 +5230,13 @@ "értelme, ha nagy részben átlapoltak a képek és több jól szétszórt kontroll " "pont van rajtuk." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Méret:" + +#~ msgid "none" +#~ msgstr "egyik sem" + #~ msgid "The druid has no advice." #~ msgstr "A segédnek (druid) nincs tanácsa." Modified: hugin/trunk/src/translations/hugin.pot =================================================================== --- hugin/trunk/src/translations/hugin.pot 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/hugin.pot 2010-03-25 20:07:29 UTC (rev 5090) @@ -9,7 +9,7 @@ "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL...@li...>\n" @@ -3517,19 +3517,19 @@ msgstr "" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" +msgid "Mask size" msgstr "" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -msgid "Scale" +msgid "Scale to fit" msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 -msgid "Proportional scale" +msgid "Scale proportional" msgstr "" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3537,15 +3537,15 @@ msgstr "" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" +msgid "Don't rotate" msgstr "" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4576,8 +4576,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 Modified: hugin/trunk/src/translations/it.po =================================================================== --- hugin/trunk/src/translations/it.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/it.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -33,7 +33,7 @@ "Project-Id-Version: hugin 0.8\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2010-01-28 17:18+0100\n" "Last-Translator: Cristian Marchi <cri...@gm...>\n" "Language-Team: Italian <tp...@li...>\n" @@ -3886,21 +3886,21 @@ msgstr "Produttore:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Produttore:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Scala:" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "linea orizzontale" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3910,15 +3910,15 @@ #: translations/xrc.cpp:413 xrc.cpp:413 #, fuzzy -msgid "none" -msgstr "Nessuna" +msgid "Don't rotate" +msgstr "&Donazione" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -5044,11 +5044,12 @@ msgstr "Scala:" #: translations/xrc.cpp:743 xrc.cpp:743 +#, fuzzy msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" "* Una linea grigia indica che non ci sono punti di controllo, ma che la " "immagini si sovrappongono.\n" @@ -5405,6 +5406,14 @@ "L'ottimizzazione di tutti i parametri di distorsione ha senso solo con " "immagini fortemente sovrapposte e molti punti di controllo ben distribuiti." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Scala:" + +#, fuzzy +#~ msgid "none" +#~ msgstr "Nessuna" + #~ msgid "The druid has no advice." #~ msgstr "L'assistente non ha alcun consiglio." Modified: hugin/trunk/src/translations/ja.po =================================================================== --- hugin/trunk/src/translations/ja.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/ja.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -6,7 +6,7 @@ "Project-Id-Version: Hugin 0.8.0\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2009-03-30 00:05+0900\n" "Last-Translator: Ippei UKAI <ippei (at users.sourceforge.net>\n" "Language-Team: N/A\n" @@ -3813,21 +3813,21 @@ msgstr "" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "レンズタイプ:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "保存する…" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "水平な線" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3837,15 +3837,15 @@ #: translations/xrc.cpp:413 xrc.cpp:413 #, fuzzy -msgid "none" -msgstr "なし" +msgid "Don't rotate" +msgstr "寄付" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4957,8 +4957,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5287,6 +5287,14 @@ "「全部」の数値を最適化するのは、大きく重なりあっているたくさんのうまく散ら" "ばったコントロールポイントの設定された画像でなければ意味がありません。" +#, fuzzy +#~ msgid "Scale" +#~ msgstr "保存する…" + +#, fuzzy +#~ msgid "none" +#~ msgstr "なし" + #~ msgid "The druid has no advice." #~ msgstr "Druidからのアドバイスはありません。" Modified: hugin/trunk/src/translations/ko.po =================================================================== --- hugin/trunk/src/translations/ko.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/ko.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -8,7 +8,7 @@ "Project-Id-Version: hugin\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2008-04-29 13:39+0900\n" "Last-Translator: homin,Lee <ff...@gm...>\n" "Language-Team: Gnome-kr-hackers <gno...@li...>\n" @@ -3838,21 +3838,21 @@ msgstr "" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "렌즈 종류:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "저장" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "가로 줄" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3861,15 +3861,16 @@ msgstr "이탈리아어" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "없음" +#, fuzzy +msgid "Don't rotate" +msgstr "기부(&D)" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4977,8 +4978,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5306,6 +5307,13 @@ "모든 왜곡 파라미터들을 최적화. \"모두\"는 이미지간 중첩 범위가 넓고 조정 위치" "들이 잘 분산되어 있어야 잘 동작 합니다." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "저장" + +#~ msgid "none" +#~ msgstr "없음" + #~ msgid "The druid has no advice." #~ msgstr "마법사가 충고할 게 없습니다." Modified: hugin/trunk/src/translations/nl.po =================================================================== --- hugin/trunk/src/translations/nl.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/nl.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -9,7 +9,7 @@ "Project-Id-Version: nl\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2010-02-05 19:55+0100\n" "Last-Translator: Harry van der Wolf <har...@ho...>\n" "Language-Team: American English <kde...@li...>\n" @@ -3796,21 +3796,21 @@ msgstr "Merk:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Merk:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Schaal:" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "horizontale lijn" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3820,15 +3820,15 @@ #: translations/xrc.cpp:413 xrc.cpp:413 #, fuzzy -msgid "none" -msgstr "Geen" +msgid "Don't rotate" +msgstr "&Doneer" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4919,11 +4919,12 @@ msgstr "Schaal:" #: translations/xrc.cpp:743 xrc.cpp:743 +#, fuzzy msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" "* Een grijze lijn geeft aan dat er geen ijkpunten, maar dat het afbeeldings " "paar wel overlpat.\n" @@ -5266,6 +5267,14 @@ "Optimalisatie van alle vervormingsparameters. Optie \"alles\" heeft alleen " "zin bij sterk overlappende afbeeldingen met vele goed verspreide ijkpunten." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Schaal:" + +#, fuzzy +#~ msgid "none" +#~ msgstr "Geen" + #~ msgid "The druid has no advice." #~ msgstr "De druïde heeft geen advies." Modified: hugin/trunk/src/translations/pl.po =================================================================== --- hugin/trunk/src/translations/pl.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/pl.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -12,7 +12,7 @@ "Project-Id-Version: pl\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2010-02-18 19:28+0100\n" "Last-Translator: Michał Smoczyk <msm...@wp...>\n" "Language-Team: Polish <pl...@li...>\n" @@ -3808,21 +3808,21 @@ msgstr "" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Typ obiektywu:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Skala:" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "linia pozioma" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3832,15 +3832,15 @@ #: translations/xrc.cpp:413 xrc.cpp:413 #, fuzzy -msgid "none" -msgstr "Brak" +msgid "Don't rotate" +msgstr "&Wspomórz finansowo" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4947,11 +4947,12 @@ msgstr "Skala:" #: translations/xrc.cpp:743 xrc.cpp:743 +#, fuzzy msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" "* Szara linia oznacza brak jest punktów kontrolnych, ale para zdjęć nakłada " "się.\n" @@ -5291,6 +5292,14 @@ "w przypadku znacznie zachodzących na siebie zdjęć i wielu dobrze " "rozproszonych punktów kontrolnych." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Skala:" + +#, fuzzy +#~ msgid "none" +#~ msgstr "Brak" + #~ msgid "The druid has no advice." #~ msgstr "Asystent nie ma wskazówek." Modified: hugin/trunk/src/translations/pt_BR.po =================================================================== --- hugin/trunk/src/translations/pt_BR.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/pt_BR.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -9,7 +9,7 @@ "Project-Id-Version: pt_BR\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2009-12-14 18:37-0300\n" "Last-Translator: Ademar de Souza Reis Jr. <ad...@ad...>\n" "Language-Team: Brazilian Portuguese <pt...@li...>\n" @@ -3789,21 +3789,21 @@ msgstr "" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Tipo da Lente:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Salvar" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "linha horizontal" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3813,15 +3813,15 @@ #: translations/xrc.cpp:413 xrc.cpp:413 #, fuzzy -msgid "none" -msgstr "Nenhum" +msgid "Don't rotate" +msgstr "Fazer uma &Doação" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4912,8 +4912,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5259,6 +5259,14 @@ "com imagens fortemente sobrepujadas ou com vários pontos de controle " "distribuídos." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Salvar" + +#, fuzzy +#~ msgid "none" +#~ msgstr "Nenhum" + #~ msgid "The druid has no advice." #~ msgstr "O \"druid\" não tem nenhum conselho." Modified: hugin/trunk/src/translations/ru.po =================================================================== --- hugin/trunk/src/translations/ru.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/ru.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -8,7 +8,7 @@ "Project-Id-Version: hugin 2009.04\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2009-10-14 04:28+0300\n" "Last-Translator: Alexandre Prokoudine <ale...@gm...>\n" "Language-Team: GNOME Russian <gno...@li...>\n" @@ -3807,21 +3807,21 @@ msgstr "Производитель:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Производитель:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Сохранить" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "Горизонтальная линия" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3830,15 +3830,16 @@ msgstr "Итальянский" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "нет" +#, fuzzy +msgid "Don't rotate" +msgstr "&Дать денег авторам" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4953,8 +4954,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5297,6 +5298,13 @@ "сильно пересекающиеся изображения с заметно удаленными друг от друга " "контрольными точками." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Сохранить" + +#~ msgid "none" +#~ msgstr "нет" + #~ msgid "The druid has no advice." #~ msgstr "Мастеру нечем вам помочь." Modified: hugin/trunk/src/translations/sk.po =================================================================== --- hugin/trunk/src/translations/sk.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/sk.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -8,7 +8,7 @@ "Project-Id-Version: hugin\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2009-12-06 17:21+0100\n" "Last-Translator: Jozef Riha <jos...@gm...>\n" "Language-Team: Slovak <sk...@li...>\n" @@ -3796,21 +3796,21 @@ msgstr "Výroba:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Výroba:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Uložiť" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "horizontálna čiara" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3819,15 +3819,16 @@ msgstr "Taliančina" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "žiadna" +#, fuzzy +msgid "Don't rotate" +msgstr "&Sponzoring" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4932,8 +4933,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5267,6 +5268,13 @@ "ak sa obrázky veľmi prekrývajú a použili ste tiež mnoho dobre rozprestrených " "kontrolných bodov." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Uložiť" + +#~ msgid "none" +#~ msgstr "žiadna" + #~ msgid "The druid has no advice." #~ msgstr "Pomocník nevie poradiť." Modified: hugin/trunk/src/translations/sl.po =================================================================== --- hugin/trunk/src/translations/sl.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/sl.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -3,7 +3,7 @@ "Project-Id-Version: Slovenski prevod\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2009-02-17 22:25+0100\n" "Last-Translator: Zoran Mesec <zor...@gm...>\n" "Language-Team: Zoran Mesec <zor...@gm...>\n" @@ -3845,21 +3845,21 @@ msgstr "" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Tip objektiva:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Shrani" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "vodoravna črta" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3869,15 +3869,15 @@ #: translations/xrc.cpp:413 xrc.cpp:413 #, fuzzy -msgid "none" -msgstr "Brez" +msgid "Don't rotate" +msgstr "&Doniraj" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4983,8 +4983,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5272,6 +5272,14 @@ "with heavily overlapping images and many well distributed control points." msgstr "" +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Shrani" + +#, fuzzy +#~ msgid "none" +#~ msgstr "Brez" + #~ msgid "The druid has no advice." #~ msgstr "Čarovnik nima nasvetov." Modified: hugin/trunk/src/translations/sv.po =================================================================== --- hugin/trunk/src/translations/sv.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/sv.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -8,7 +8,7 @@ "Project-Id-Version: se\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2010-03-06 16:31+0100\n" "Last-Translator: Ulf Wilhelmson <ulf...@gm...>\n" "Language-Team: Svenska <se...@li...>\n" @@ -3769,21 +3769,21 @@ msgstr "Märke:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Märke:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Skala:" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "horisontell linje" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3792,15 +3792,16 @@ msgstr "Iteration" #: translations/xrc.cpp:413 xrc.cpp:413 -msgid "none" -msgstr "ingen" +#, fuzzy +msgid "Don't rotate" +msgstr "&Donera" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4886,11 +4887,12 @@ msgstr "Skala:" #: translations/xrc.cpp:743 xrc.cpp:743 +#, fuzzy msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" "* En grå linje indikerar att kontrollpunkter saknas, Men att bilderna " "överlappar.\n" @@ -5222,6 +5224,13 @@ "Optimering av alla distotionsparametrar \"Allting\" är endast meningsfull " "med kraftigt överlappande bilder och många väl distribuerade kontrollpunkter." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Skala:" + +#~ msgid "none" +#~ msgstr "ingen" + #~ msgid "The druid has no advice." #~ msgstr "Druiden har inget råd" Modified: hugin/trunk/src/translations/uk.po =================================================================== --- hugin/trunk/src/translations/uk.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/uk.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -6,7 +6,7 @@ "Project-Id-Version: Hugin 0.7\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2006-08-20 21:38+0200\n" "Last-Translator: Serhij Dubyk <du...@li...>\n" "Language-Team: \n" @@ -3897,21 +3897,21 @@ msgstr "" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "Тип об'єктиву: " #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "Зберегти" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "горизонтальна лінія" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3920,16 +3920,15 @@ msgstr "Італійська" #: translations/xrc.cpp:413 xrc.cpp:413 -#, fuzzy -msgid "none" -msgstr "Немає" +msgid "Don't rotate" +msgstr "" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -5062,8 +5061,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5408,6 +5407,14 @@ "Оптимізація усіх параметрів спотворення (\"усе\") має тільки сенс для важко " "перекриваючих зображень і багатьох широко розповсюджених контрольних крапки." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "Зберегти" + +#, fuzzy +#~ msgid "none" +#~ msgstr "Немає" + #~ msgid "The druid has no advice." #~ msgstr "Майстрові нічим Вам допомогти." Modified: hugin/trunk/src/translations/zh_CN.po =================================================================== --- hugin/trunk/src/translations/zh_CN.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/zh_CN.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -3,7 +3,7 @@ "Project-Id-Version: for Hugin\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: 2009-10-23 20:44+0800\n" "Last-Translator: Lu Fang\n" "Language-Team: Chinese Simplified <N/A>\n" @@ -3720,21 +3720,21 @@ msgstr "制作:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "制作:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "保存" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "水平线" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3744,15 +3744,15 @@ #: translations/xrc.cpp:413 xrc.cpp:413 #, fuzzy -msgid "none" -msgstr "无" +msgid "Don't rotate" +msgstr "捐赠 (&D)" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4835,8 +4835,8 @@ msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" #: translations/xrc.cpp:744 xrc.cpp:744 @@ -5140,6 +5140,14 @@ "只有当图像重叠程度很高并且有很多分布良好的控制点时, 对所有失真参数进行优化的" "选项 \"everything\" 才会有效果." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "保存" + +#, fuzzy +#~ msgid "none" +#~ msgstr "无" + #~ msgid "The druid has no advice." #~ msgstr "druid 无建议." Modified: hugin/trunk/src/translations/zh_TW.po =================================================================== --- hugin/trunk/src/translations/zh_TW.po 2010-03-23 17:59:03 UTC (rev 5089) +++ hugin/trunk/src/translations/zh_TW.po 2010-03-25 20:07:29 UTC (rev 5090) @@ -3,7 +3,7 @@ "Project-Id-Version: for hugin 0.8.0\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2010-03-23 18:39+0100\n" +"POT-Creation-Date: 2010-03-25 21:05+0100\n" "PO-Revision-Date: \n" "Last-Translator: Rick Langford <ru...@ya...>\n" "Language-Team: Chinese Traditional <NA>\n" @@ -3686,21 +3686,21 @@ msgstr "製造商:" #: translations/xrc.cpp:408 xrc.cpp:408 -msgid "Mask size change" -msgstr "" +#, fuzzy +msgid "Mask size" +msgstr "製造商:" #: translations/xrc.cpp:409 xrc.cpp:409 -msgid "Clip" +msgid "Don't change" msgstr "" #: translations/xrc.cpp:410 xrc.cpp:410 -#, fuzzy -msgid "Scale" -msgstr "縮放:" +msgid "Scale to fit" +msgstr "" #: translations/xrc.cpp:411 xrc.cpp:411 #, fuzzy -msgid "Proportional scale" +msgid "Scale proportional" msgstr "水平線" #: translations/xrc.cpp:412 xrc.cpp:412 @@ -3710,15 +3710,15 @@ #: translations/xrc.cpp:413 xrc.cpp:413 #, fuzzy -msgid "none" -msgstr "無" +msgid "Don't rotate" +msgstr "捐贈 (&D)" #: translations/xrc.cpp:414 xrc.cpp:414 -msgid "clockwise" +msgid "90° clockwise" msgstr "" #: translations/xrc.cpp:415 xrc.cpp:415 -msgid "counter-clockwise" +msgid "90° counter-clockwise" msgstr "" #: translations/xrc.cpp:418 xrc.cpp:418 @@ -4776,11 +4776,12 @@ msgstr "縮放:" #: translations/xrc.cpp:743 xrc.cpp:743 +#, fuzzy msgid "" "* A grey line indicates there are no control points, but the image pair " "overlaps.\n" -"* A green line indicates good alignment.\n" -"* A red line indicates poor alignment. " +"* Green, yellow and red lines indicate good, medium and poor alignment.\n" +"* Click a line to edit the associated images in the Control Points tab." msgstr "" "* 灰線表示沒有控制點,但是這對圖片重疊.\n" "* 綠線表示好的對準.\n" @@ -5082,6 +5083,14 @@ "只有當圖片重疊程度很高並且有很多分布良好的控制點時, 對所有失真參數執行最佳化" "選項 [所有參數] 才會有效果." +#, fuzzy +#~ msgid "Scale" +#~ msgstr "縮放:" + +#, fuzzy +#~ msgid "none" +#~ msgstr "無" + #~ msgid "The druid has no advice." #~ msgstr "druid 無建議." This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tm...@us...> - 2010-04-03 16:23:18
|
Revision: 5104 http://hugin.svn.sourceforge.net/hugin/?rev=5104&view=rev Author: tmodes Date: 2010-04-03 16:23:11 +0000 (Sat, 03 Apr 2010) Log Message: ----------- Expose new input projection formats in libpano, rev 1259, to GUI Revision Links: -------------- http://hugin.svn.sourceforge.net/hugin/?rev=1259&view=rev Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/HFOVDialog.cpp hugin/trunk/src/hugin1/hugin/HFOVDialog.h hugin/trunk/src/hugin1/hugin/ImagesList.cpp hugin/trunk/src/hugin1/hugin/LensPanel.cpp hugin/trunk/src/hugin1/hugin/VertexCoordRemapper.h hugin/trunk/src/hugin1/hugin/xrc/assistant_panel.xrc hugin/trunk/src/hugin1/hugin/xrc/lens_panel.xrc hugin/trunk/src/hugin_base/panodata/Lens.cpp hugin/trunk/src/hugin_base/panodata/Lens.h hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.cpp Modified: hugin/trunk/src/hugin1/hugin/HFOVDialog.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/HFOVDialog.cpp 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin1/hugin/HFOVDialog.cpp 2010-04-03 16:23:11 UTC (rev 5104) @@ -49,6 +49,33 @@ EVT_BUTTON( XRCID("lensdlg_load_lens_button"), HFOVDialog::OnLoadLensParameters ) END_EVENT_TABLE() +void FillLensProjectionList(wxControlWithItems* list) +{ + list->Clear(); + list->Append(_("Normal (rectilinear)"),(void*)HuginBase::SrcPanoImage::RECTILINEAR); + list->Append(_("Panoramic (cylindrical)"),(void*)HuginBase::SrcPanoImage::PANORAMIC); + list->Append(_("Circular fisheye"),(void*)HuginBase::SrcPanoImage::CIRCULAR_FISHEYE); + list->Append(_("Full frame fisheye"),(void*)HuginBase::SrcPanoImage::FULL_FRAME_FISHEYE); + list->Append(_("Equirectangular"),(void*)HuginBase::SrcPanoImage::EQUIRECTANGULAR); + list->Append(_("Orthographic"),(void*)HuginBase::SrcPanoImage::FISHEYE_ORTHOGRAPHIC); + list->Append(_("Stereographic"),(void*)HuginBase::SrcPanoImage::FISHEYE_STEREOGRAPHIC); + list->Append(_("Equisolid"),(void*)HuginBase::SrcPanoImage::FISHEYE_EQUISOLID); + list->SetSelection(0); +}; + +void SelectProjection(wxControlWithItems* list,int new_projection) +{ + for(unsigned int i=0;i<list->GetCount();i++) + { + if((int)list->GetClientData(i)==new_projection) + { + list->SetSelection(i); + return; + }; + }; + list->SetSelection(0); +}; + HFOVDialog::HFOVDialog(wxWindow * parent, SrcPanoImage & srcImg, double focalLength, double cropFactor) : m_srcImg(srcImg), m_focalLength(focalLength), m_cropFactor(cropFactor) { @@ -66,6 +93,7 @@ m_projChoice = XRCCTRL(*this, "lensdlg_type_choice", wxChoice); DEBUG_ASSERT(m_projChoice); + FillLensProjectionList(m_projChoice); m_okButton = XRCCTRL(*this, "wxID_OK", wxButton); DEBUG_ASSERT(m_okButton); @@ -75,7 +103,7 @@ wxString message; message.Printf(_("No or only partial information about field of view was found in image file\n%s\n\nPlease enter the horizontal field of view (HFOV) or the focal length and crop factor."), fn.c_str()); XRCCTRL(*this, "lensdlg_message", wxStaticText)->SetLabel(message); - m_projChoice->SetSelection(m_srcImg.getProjection()); + SelectProjection(m_projChoice,m_srcImg.getProjection()); if (m_cropFactor > 0 && m_focalLength > 0) { // everything is well known.. compute HFOV @@ -112,8 +140,9 @@ void HFOVDialog::OnTypeChanged(wxCommandEvent & e) { - DEBUG_DEBUG("new type: " << m_projChoice->GetSelection()); - m_srcImg.setProjection( (SrcPanoImage::Projection)m_projChoice->GetSelection() ); + SrcPanoImage::Projection new_proj=(SrcPanoImage::Projection)((int)m_projChoice->GetClientData(m_projChoice->GetSelection())); + DEBUG_DEBUG("new type: " << new_proj); + m_srcImg.setProjection(new_proj); if (m_cropFactor > 0 && m_focalLength > 0) { m_HFOV = calcHFOV(m_srcImg.getProjection(), m_focalLength, m_cropFactor, m_srcImg.getSize()); @@ -340,7 +369,7 @@ m_cropText->SetValue(m_cropFactorStr); m_HFOVStr = doubleTowxString(m_HFOV,2); m_hfovText->SetValue(m_HFOVStr); - m_projChoice->SetSelection(m_srcImg.getProjection()); + SelectProjection(m_projChoice, m_srcImg.getProjection()); // update lens type m_okButton->Enable(); Modified: hugin/trunk/src/hugin1/hugin/HFOVDialog.h =================================================================== --- hugin/trunk/src/hugin1/hugin/HFOVDialog.h 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin1/hugin/HFOVDialog.h 2010-04-03 16:23:11 UTC (rev 5104) @@ -31,6 +31,12 @@ #include "PT/Panorama.h" #include "PT/PanoImage.h" +/** Fills a wxControlWithItem with all input projection formats, + * the client data contains the associated projection number */ +void FillLensProjectionList(wxControlWithItems* list); +/** Selects the given projection in the given list item */ +void SelectProjection(wxControlWithItems* list,int new_projection); + /** A dialog for HFOV * * Also allows cancellation Modified: hugin/trunk/src/hugin1/hugin/ImagesList.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/ImagesList.cpp 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin1/hugin/ImagesList.cpp 2010-04-03 16:23:11 UTC (rev 5104) @@ -522,6 +522,9 @@ case SrcPanoImage::CIRCULAR_FISHEYE: ps << _("Circular fisheye"); break; case SrcPanoImage::FULL_FRAME_FISHEYE: ps << _("Full frame fisheye"); break; case SrcPanoImage::EQUIRECTANGULAR: ps << _("Equirectangular"); break; + case SrcPanoImage::FISHEYE_ORTHOGRAPHIC: ps << _("Orthographic"); break; + case SrcPanoImage::FISHEYE_STEREOGRAPHIC:ps << _("Stereographic"); break; + case SrcPanoImage::FISHEYE_EQUISOLID: ps << _("Equisolid"); break; } SetItem(imgNr, 3, ps); SetItem(imgNr, 4, doubleTowxString( map_get(var, "Eev").getValue(),1)); Modified: hugin/trunk/src/hugin1/hugin/LensPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/LensPanel.cpp 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin1/hugin/LensPanel.cpp 2010-04-03 16:23:11 UTC (rev 5104) @@ -48,8 +48,8 @@ #include "hugin/wxPanoCommand.h" //#include "hugin/VigCorrDialog.h" #include "hugin/ResetDialog.h" +#include "hugin/HFOVDialog.h" - using namespace PT; using namespace utils; using namespace std; @@ -189,6 +189,9 @@ m_lens_ctrls = XRCCTRL(*this, "lens_control_panel", wxPanel); DEBUG_ASSERT(m_lens_ctrls); + // fill list of projection formats + FillLensProjectionList(XRCCTRL(*this, "lens_val_projectionFormat", wxChoice)); + // dummy to disable controls wxListEvent ev; ListSelectionChanged(ev); @@ -268,12 +271,11 @@ const VariableMap & imgvars = pano->getImageVariables(*m_selectedImages.begin()); // update gui - int guiPF = XRCCTRL(*this, "lens_val_projectionFormat", - wxChoice)->GetSelection(); - if (lens.getProjection() != (Lens::LensProjectionFormat) guiPF) { + wxChoice* choice_projection=XRCCTRL(*this, "lens_val_projectionFormat",wxChoice); + int guiPF = (int)choice_projection->GetClientData(choice_projection->GetSelection()); + if (lens.getProjection() != (Lens::LensProjectionFormat)guiPF) { DEBUG_DEBUG("changing projection format in gui to: " << lens.getProjection()); - XRCCTRL(*this, "lens_val_projectionFormat", wxChoice)->SetSelection( - lens.getProjection() ); + SelectProjection(choice_projection,lens.getProjection()); } // set response type @@ -367,8 +369,9 @@ if (m_selectedImages.size() > 0) { UIntSet imgs; // uses enum HuginBase::SrcPanoImage::Projection from SrcPanoImage.h + wxChoice* choice_projection=XRCCTRL(*this, "lens_val_projectionFormat", wxChoice); HuginBase::SrcPanoImage::Projection var = (HuginBase::SrcPanoImage::Projection) - XRCCTRL(*this, "lens_val_projectionFormat", wxChoice)->GetSelection(); + ((int)choice_projection->GetClientData(choice_projection->GetSelection())); for (UIntSet::iterator it = m_selectedImages.begin(); it != m_selectedImages.end(); ++it) { Modified: hugin/trunk/src/hugin1/hugin/VertexCoordRemapper.h =================================================================== --- hugin/trunk/src/hugin1/hugin/VertexCoordRemapper.h 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin1/hugin/VertexCoordRemapper.h 2010-04-03 16:23:11 UTC (rev 5104) @@ -60,7 +60,6 @@ #include <panodata/Panorama.h> #include <panodata/PanoramaOptions.h> #include <panotools/PanoToolsInterface.h> -#include <nona/SpaceTransform.h> class VertexCoordRemapper : public MeshRemapper { Modified: hugin/trunk/src/hugin1/hugin/xrc/assistant_panel.xrc =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/assistant_panel.xrc 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin1/hugin/xrc/assistant_panel.xrc 2010-04-03 16:23:11 UTC (rev 5104) @@ -225,13 +225,8 @@ <object class="sizeritem"> <object class="wxChoice" name="lensdlg_type_choice"> <content> - <item>Normal (rectilinear)</item> - <item>Panoramic (cylindrical)</item> - <item>Circular fisheye</item> - <item>Full frame fisheye</item> - <item>Equirectangular</item> + <item></item> </content> - <selection>0</selection> </object> </object> <object class="spacer"> @@ -359,4 +354,4 @@ </object> <style>wxCAPTION|wxRESIZE_BORDER</style> </object> -</resource> +</resource> \ No newline at end of file Modified: hugin/trunk/src/hugin1/hugin/xrc/lens_panel.xrc =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/lens_panel.xrc 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin1/hugin/xrc/lens_panel.xrc 2010-04-03 16:23:11 UTC (rev 5104) @@ -130,11 +130,7 @@ <object class="sizeritem"> <object class="wxChoice" name="lens_val_projectionFormat"> <content> - <item>Normal (rectilinear)</item> - <item>Panoramic (cylindrical)</item> - <item>Circular fisheye</item> - <item>Full frame fisheye</item> - <item>Equirectangular</item> + <item></item> </content> </object> <flag>wxALIGN_CENTRE_VERTICAL</flag> @@ -855,4 +851,4 @@ </object> </object> </object> -</resource> +</resource> \ No newline at end of file Modified: hugin/trunk/src/hugin_base/panodata/Lens.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/Lens.cpp 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin_base/panodata/Lens.cpp 2010-04-03 16:23:11 UTC (rev 5104) @@ -79,6 +79,11 @@ break; case CIRCULAR_FISHEYE: case FULL_FRAME_FISHEYE: + case FISHEYE_ORTHOGRAPHIC: + case FISHEYE_STEREOGRAPHIC: + case FISHEYE_EQUISOLID: + case PANORAMIC: + case EQUIRECTANGULAR: // same projection equation for both fisheye types, // assume equal area projection. return m_sensorSize.x / (HFOV/180*M_PI); Modified: hugin/trunk/src/hugin_base/panodata/Lens.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/Lens.h 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin_base/panodata/Lens.h 2010-04-03 16:23:11 UTC (rev 5104) @@ -51,7 +51,10 @@ PANORAMIC = 1, CIRCULAR_FISHEYE = 2, FULL_FRAME_FISHEYE = 3, - EQUIRECTANGULAR = 4 + EQUIRECTANGULAR = 4, + FISHEYE_ORTHOGRAPHIC = 8, + FISHEYE_STEREOGRAPHIC = 10, + FISHEYE_EQUISOLID = 21 }; Modified: hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp 2010-04-03 16:23:11 UTC (rev 5104) @@ -103,6 +103,9 @@ case FULL_FRAME_FISHEYE: case CIRCULAR_FISHEYE: case RECTILINEAR: + case FISHEYE_ORTHOGRAPHIC: + case FISHEYE_STEREOGRAPHIC: + case FISHEYE_EQUISOLID: default: break; } @@ -633,6 +636,9 @@ break; case SrcPanoImage::CIRCULAR_FISHEYE: case SrcPanoImage::FULL_FRAME_FISHEYE: + case SrcPanoImage::FISHEYE_ORTHOGRAPHIC: + case SrcPanoImage::FISHEYE_STEREOGRAPHIC: + case SrcPanoImage::FISHEYE_EQUISOLID: hfov = sensorSize.x / fl * 180/M_PI; break; case SrcPanoImage::EQUIRECTANGULAR: @@ -666,6 +672,9 @@ break; case SrcPanoImage::CIRCULAR_FISHEYE: case SrcPanoImage::FULL_FRAME_FISHEYE: + case SrcPanoImage::FISHEYE_ORTHOGRAPHIC: + case SrcPanoImage::FISHEYE_STEREOGRAPHIC: + case SrcPanoImage::FISHEYE_EQUISOLID: // same projection equation for both fisheye types, // assume equal area projection. return sensorSize.x / (hfov/180*M_PI); @@ -695,6 +704,9 @@ case SrcPanoImage::CIRCULAR_FISHEYE: case SrcPanoImage::FULL_FRAME_FISHEYE: case SrcPanoImage::EQUIRECTANGULAR: + case SrcPanoImage::FISHEYE_ORTHOGRAPHIC: + case SrcPanoImage::FISHEYE_STEREOGRAPHIC: + case SrcPanoImage::FISHEYE_EQUISOLID: case SrcPanoImage::PANORAMIC: // same projection equation for both fisheye types, // assume equal area projection. Modified: hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h 2010-04-03 16:23:11 UTC (rev 5104) @@ -67,7 +67,10 @@ PANORAMIC = 1, CIRCULAR_FISHEYE = 2, FULL_FRAME_FISHEYE = 3, - EQUIRECTANGULAR = 4 + EQUIRECTANGULAR = 4, + FISHEYE_ORTHOGRAPHIC = 8, + FISHEYE_STEREOGRAPHIC = 10, + FISHEYE_EQUISOLID = 21 }; /// Modified: hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.cpp =================================================================== --- hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.cpp 2010-04-03 08:04:40 UTC (rev 5103) +++ hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.cpp 2010-04-03 16:23:11 UTC (rev 5104) @@ -677,6 +677,15 @@ case Lens::EQUIRECTANGULAR: image.format = _equirectangular; break; + case Lens::FISHEYE_ORTHOGRAPHIC: + image.format = _orthographic; + break; + case Lens::FISHEYE_STEREOGRAPHIC: + image.format = _stereographic; + break; + case Lens::FISHEYE_EQUISOLID: + image.format = _equisolid; + break; } image.hfov = const_map_get(vars,"v").getValue(); image.yaw = const_map_get(vars,"y").getValue(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tm...@us...> - 2010-04-13 17:24:38
|
Revision: 5113 http://hugin.svn.sourceforge.net/hugin/?rev=5113&view=rev Author: tmodes Date: 2010-04-13 17:24:29 +0000 (Tue, 13 Apr 2010) Log Message: ----------- Refactored merge panorama code to allow calling from commandline (new tool: pto_merge) Modified Paths: -------------- hugin/trunk/src/hugin1/PT/PanoCommand.h hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/MainFrame.h hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp hugin/trunk/src/hugin1/hugin/wxPanoCommand.h hugin/trunk/src/hugin_base/panodata/Panorama.cpp hugin/trunk/src/hugin_base/panodata/Panorama.h hugin/trunk/src/tools/CMakeLists.txt Added Paths: ----------- hugin/trunk/src/tools/pto_merge.cpp Modified: hugin/trunk/src/hugin1/PT/PanoCommand.h =================================================================== --- hugin/trunk/src/hugin1/PT/PanoCommand.h 2010-04-11 01:21:30 UTC (rev 5112) +++ hugin/trunk/src/hugin1/PT/PanoCommand.h 2010-04-13 17:24:29 UTC (rev 5113) @@ -748,7 +748,7 @@ virtual std::string getName() const { - return "change lens"; + return "swap images"; } private: @@ -757,6 +757,31 @@ }; + /** merge two project files */ + class MergePanoCmd : public PanoCommand + { + public: + MergePanoCmd(Panorama & p, Panorama & p2) + : PanoCommand(p), newPano(p2) + { }; + + virtual bool processPanorama(Panorama& pano) + { + pano.mergePanorama(newPano); + pano.changeFinished(); + + return true; + } + + virtual std::string getName() const + { + return "merge panorama"; + } + + private: + Panorama newPano; + }; + //========================================================================= //========================================================================= Modified: hugin/trunk/src/hugin1/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2010-04-11 01:21:30 UTC (rev 5112) +++ hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2010-04-13 17:24:29 UTC (rev 5113) @@ -144,7 +144,7 @@ EVT_MENU(XRCID("action_save_as_ptstitcher"), MainFrame::OnSavePTStitcherAs) EVT_MENU(XRCID("action_send_to_batch"), MainFrame::OnSendToBatch) EVT_MENU(XRCID("action_open_batch_processor"), MainFrame::OnOpenPTBatcher) - EVT_MENU(XRCID("action_import_project"), MainFrame::OnImportProject) + EVT_MENU(XRCID("action_import_project"), MainFrame::OnMergeProject) EVT_MENU(XRCID("action_apply_template"), MainFrame::OnApplyTemplate) EVT_MENU(XRCID("action_exit_hugin"), MainFrame::OnUserQuit) EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, MainFrame::OnMRUFiles) @@ -1278,7 +1278,7 @@ pano_panel->DoStitch(); } -void MainFrame::OnImportProject(wxCommandEvent & e) +void MainFrame::OnMergeProject(wxCommandEvent & e) { // get the global config object wxConfigBase* config = wxConfigBase::Get(); @@ -1298,20 +1298,30 @@ if (fname.IsOk() && fname.FileExists()) { wxBusyCursor wait; - deregisterPTWXDlgFcn(); - GlobalCmdHist::getInstance().addCommand( - new wxImportPTProjectCmd(pano,(const char *)filename.mb_str(HUGIN_CONV_FILENAME), (const char *)path.mb_str(HUGIN_CONV_FILENAME)) - ); - registerPTWXDlgFcn(MainFrame::Get()); - opt_panel->setModeCustom(); - pano.clearDirty(); - m_mruFiles.AddFileToHistory(fname.GetFullPath()); - // force update of preview window - if ( !(preview_frame->IsIconized() ||(! preview_frame->IsShown()) ) ) + PanoramaMemento newPano; + std::ifstream in((const char *)fname.GetFullPath().mb_str(HUGIN_CONV_FILENAME)); + int ptoversion=0; + if (newPano.loadPTScript(in, ptoversion, (const char *)path.mb_str(HUGIN_CONV_FILENAME))) { - wxCommandEvent dummy; - preview_frame->OnUpdate(dummy); + Panorama new_pano; + new_pano.setMemento(newPano); + GlobalCmdHist::getInstance().addCommand( + new MergePanoCmd(pano, new_pano) + ); + opt_panel->setModeCustom(); + pano.clearDirty(); + m_mruFiles.AddFileToHistory(fname.GetFullPath()); + // force update of preview window + if ( !(preview_frame->IsIconized() ||(! preview_frame->IsShown()) ) ) + { + wxCommandEvent dummy; + preview_frame->OnUpdate(dummy); + }; } + else + { + wxMessageBox(wxString::Format(_("Could not read project file %s."),fname.GetFullPath().c_str()),_("Error"),wxOK|wxICON_ERROR); + }; }; } } Modified: hugin/trunk/src/hugin1/hugin/MainFrame.h =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.h 2010-04-11 01:21:30 UTC (rev 5112) +++ hugin/trunk/src/hugin1/hugin/MainFrame.h 2010-04-13 17:24:29 UTC (rev 5113) @@ -185,7 +185,7 @@ void OnAddTimeImages(wxCommandEvent & e); void OnFineTuneAll(wxCommandEvent & e); void OnRemoveCPinMasks(wxCommandEvent & e); - void OnImportProject(wxCommandEvent & e); + void OnMergeProject(wxCommandEvent & e); void OnApplyTemplate(wxCommandEvent & e); void OnSendToBatch(wxCommandEvent & e); void OnOpenPTBatcher(wxCommandEvent & e); Modified: hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2010-04-11 01:21:30 UTC (rev 5112) +++ hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2010-04-13 17:24:29 UTC (rev 5113) @@ -613,151 +613,5 @@ pano.changeFinished(); } -void wxImportPTProjectCmd::execute() -{ - PanoCommand::execute(); -#ifdef _Hgn1_PANOCOMMAND_H - Panorama& pano = o_pano; -#endif - Panorama new_pano; - wxLoadPTProjectCmd load(new_pano, filename, prefix); - load.execute(); - if(new_pano.getNrOfImages()>0) - { - vector<unsigned int> new_image_nr(new_pano.getNrOfImages()); - unsigned int oldNrOfImage=pano.getNrOfImages(); - HuginBase::OptimizeVector optVec=pano.getOptimizeVector(); - HuginBase::OptimizeVector optVecNew=new_pano.getOptimizeVector(); - //add only new images - for(unsigned int i=0;i<new_pano.getNrOfImages();i++) - { - std::string filename=new_pano.getImage(i).getFilename(); - bool found=false; - for(unsigned int j=0;j<pano.getNrOfImages();j++) - { - if(pano.getImage(j).getFilename()==filename) - { - //image is already in panorama, we remember the image nr - found=true; - new_image_nr[i]=j; - // now check if we have to update the masks - HuginBase::MaskPolygonVector masksOld=pano.getImage(j).getMasks(); - HuginBase::MaskPolygonVector masksNew=new_pano.getImage(i).getMasks(); - if(masksNew.size()>0) - { - for(unsigned int k=0;k<masksNew.size();k++) - { - bool usedMasks=false; - unsigned int l=0; - while((!usedMasks) && l<masksOld.size()) - { - usedMasks=(masksNew[k]==masksOld[l]); - l++; - }; - if(!usedMasks) - masksOld.push_back(masksNew[k]); - }; - pano.updateMasksForImage(j,masksOld); - }; - break; - }; - }; - if(!found) - { - //new image found, add it - new_image_nr[i]=pano.addImage(new_pano.getImage(i)); - //copy also optimise vector - optVec.push_back(optVecNew[i]); - }; - }; - pano.setOptimizeVector(optVec); - //now update lens numbers - HuginBase::StandardImageVariableGroups variable_groups(pano); - HuginBase::ImageVariableGroup & lenses = variable_groups.getLenses(); - HuginBase::StandardImageVariableGroups new_variable_groups(new_pano); - HuginBase::ImageVariableGroup & new_lenses = new_variable_groups.getLenses(); - for (unsigned int i=0; i<new_pano.getNrOfImages(); i++) - { - if(new_image_nr[i]>=oldNrOfImage) - { - //image was previously added - unsigned oldLens=new_lenses.getPartNumber(i); - bool foundLens=false; - for(unsigned int j=0; j<new_pano.getNrOfImages(); j++) - { - if(i==j) - continue; - if(new_lenses.getPartNumber(j)==oldLens) - { - if(new_image_nr[j]<oldNrOfImage) - { - lenses.switchParts(new_image_nr[i],lenses.getPartNumber(new_image_nr[j])); - lenses.updatePartNumbers(); - foundLens=true; - break; - }; - }; - }; - if(foundLens) - continue; - // no image which connects the present with the new pano - // so use the same check as in AddImage to conclude - // if the present pano contains a matching lens - const HuginBase::SrcPanoImage img=new_pano.getImage(i); - for (unsigned int j=0; j<oldNrOfImage; j++) - { - SrcPanoImage other = pano.getSrcImage(j); - if(other.getExifModel().size()>0 && other.getExifMake().size()>0) - { - if (other.getSize()==img.getSize() && - other.getExifModel()==img.getExifModel() && other.getExifMake()==img.getExifMake() && - other.getExifFocalLength()==img.getExifFocalLength()) - { - lenses.switchParts(new_image_nr[i],lenses.getPartNumber(j)); - lenses.updatePartNumbers(); - break; - } - } - else - { - // no exiv information, just check image size. - if (other.getSize()==img.getSize()) - { - lenses.switchParts(new_image_nr[i],lenses.getPartNumber(j)); - lenses.updatePartNumbers(); - break; - }; - }; - }; - }; - }; - // recreate links between image variables. - for (unsigned int i=0; i<new_pano.getNrOfImages(); i++) - { - for(unsigned int j=i+1;j<new_pano.getNrOfImages();j++) - { - const HuginBase::SrcPanoImage &img=new_pano.getImage(i); -#define image_variable( name, type, default_value )\ - if(img.name##isLinkedWith(new_pano.getImage(j)))\ - {\ - pano.linkImageVariable##name(new_image_nr[i],new_image_nr[j]);\ - }; -#include "panodata/image_variables.h" -#undef image_variable - } - } - //now translate cp - CPVector cps=new_pano.getCtrlPoints(); - for(unsigned int i=0;i<cps.size();i++) - { - HuginBase::ControlPoint cp(new_image_nr[cps[i].image1Nr], cps[i].x1, cps[i].y1, - new_image_nr[cps[i].image2Nr],cps[i].x2, cps[i].y2, cps[i].mode); - pano.addCtrlPoint(cp); - }; - }; - pano.changeFinished(); -} - - } // namespace Modified: hugin/trunk/src/hugin1/hugin/wxPanoCommand.h =================================================================== --- hugin/trunk/src/hugin1/hugin/wxPanoCommand.h 2010-04-11 01:21:30 UTC (rev 5112) +++ hugin/trunk/src/hugin1/hugin/wxPanoCommand.h 2010-04-13 17:24:29 UTC (rev 5113) @@ -112,29 +112,6 @@ std::istream & in; }; -/** load a new one and import it into current on. - * - */ -class wxImportPTProjectCmd : public PanoCommand -{ -public: - wxImportPTProjectCmd(Panorama & p, const std::string filename, const std::string prefix = "") - : PanoCommand(p), - filename(filename), - prefix(prefix) - { }; - - virtual void execute(); - - virtual std::string getName() const - { - return "import project"; - } -private: - const std::string filename; - const std::string prefix; -}; - //========================================================================= //========================================================================= Modified: hugin/trunk/src/hugin_base/panodata/Panorama.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/Panorama.cpp 2010-04-11 01:21:30 UTC (rev 5112) +++ hugin/trunk/src/hugin_base/panodata/Panorama.cpp 2010-04-13 17:24:29 UTC (rev 5113) @@ -1321,6 +1321,83 @@ return subset; } +void Panorama::mergePanorama(const Panorama &newPano) +{ + if(newPano.getNrOfImages()>0) + { + std::vector<unsigned int> new_image_nr(newPano.getNrOfImages()); + unsigned int oldNrOfImage=getNrOfImages(); + HuginBase::OptimizeVector optVec=getOptimizeVector(); + HuginBase::OptimizeVector optVecNew=newPano.getOptimizeVector(); + //add only new images + for(unsigned int i=0;i<newPano.getNrOfImages();i++) + { + std::string filename=newPano.getImage(i).getFilename(); + bool found=false; + for(unsigned int j=0;j<getNrOfImages();j++) + { + if(getImage(j).getFilename()==filename) + { + //image is already in panorama, we remember the image nr + found=true; + new_image_nr[i]=j; + // now check if we have to update the masks + HuginBase::MaskPolygonVector masksOld=getImage(j).getMasks(); + HuginBase::MaskPolygonVector masksNew=newPano.getImage(i).getMasks(); + if(masksNew.size()>0) + { + for(unsigned int k=0;k<masksNew.size();k++) + { + bool usedMasks=false; + unsigned int l=0; + while((!usedMasks) && l<masksOld.size()) + { + usedMasks=(masksNew[k]==masksOld[l]); + l++; + }; + if(!usedMasks) + masksOld.push_back(masksNew[k]); + }; + updateMasksForImage(j,masksOld); + }; + break; + }; + }; + if(!found) + { + //new image found, add it + new_image_nr[i]=addImage(newPano.getImage(i)); + //copy also optimise vector + optVec.push_back(optVecNew[i]); + }; + }; + setOptimizeVector(optVec); + // recreate links between image variables. + for (unsigned int i=0; i<newPano.getNrOfImages(); i++) + { + for(unsigned int j=i+1;j<newPano.getNrOfImages();j++) + { + const HuginBase::SrcPanoImage &img=newPano.getImage(i); +#define image_variable( name, type, default_value )\ + if(img.name##isLinkedWith(newPano.getImage(j)))\ + {\ + linkImageVariable##name(new_image_nr[i],new_image_nr[j]);\ + }; +#include "panodata/image_variables.h" +#undef image_variable + } + } + //now translate cp + CPVector cps=newPano.getCtrlPoints(); + for(unsigned int i=0;i<cps.size();i++) + { + HuginBase::ControlPoint cp(new_image_nr[cps[i].image1Nr], cps[i].x1, cps[i].y1, + new_image_nr[cps[i].image2Nr],cps[i].x2, cps[i].y2, cps[i].mode); + addCtrlPoint(cp); + }; + }; +}; + int Panorama::getNextCPTypeLineNumber() const { int t=0; Modified: hugin/trunk/src/hugin_base/panodata/Panorama.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/Panorama.h 2010-04-11 01:21:30 UTC (rev 5112) +++ hugin/trunk/src/hugin_base/panodata/Panorama.h 2010-04-13 17:24:29 UTC (rev 5113) @@ -213,6 +213,9 @@ /** add an Image to the panorama */ unsigned int addImage(const SrcPanoImage &img); + + /** merges the panorama with the given pano */ + void mergePanorama(const Panorama &newPano); /** creates an image, from filename, and a Lens, if needed */ // int addImageAndLens(const std::string & filename); Modified: hugin/trunk/src/tools/CMakeLists.txt =================================================================== --- hugin/trunk/src/tools/CMakeLists.txt 2010-04-11 01:21:30 UTC (rev 5112) +++ hugin/trunk/src/tools/CMakeLists.txt 2010-04-13 17:24:29 UTC (rev 5113) @@ -26,6 +26,9 @@ add_executable(cpclean cpclean.cpp) target_link_libraries(cpclean ${common_libs} ) +add_executable(pto_merge pto_merge.cpp) +target_link_libraries(pto_merge ${common_libs} ) + add_executable(pano_trafo pano_trafo.cpp) target_link_libraries(pano_trafo ${common_libs} ) @@ -36,6 +39,6 @@ target_link_libraries(hugin_hdrmerge ${common_libs} ${image_libs} ) install(TARGETS nona vig_optimize autooptimiser fulla align_image_stack - tca_correct pto2mk cpclean hugin_hdrmerge pano_trafo pano_modify + tca_correct pto2mk cpclean hugin_hdrmerge pano_trafo pano_modify pto_merge DESTINATION ${BINDIR}) Added: hugin/trunk/src/tools/pto_merge.cpp =================================================================== --- hugin/trunk/src/tools/pto_merge.cpp (rev 0) +++ hugin/trunk/src/tools/pto_merge.cpp 2010-04-13 17:24:29 UTC (rev 5113) @@ -0,0 +1,148 @@ +// -*- c-basic-offset: 4 -*- + +/** @file pto_merge.cpp + * + * @brief program to merge several project files + * + * @author Thomas Modes + * + * $Id$ + * + */ + +/* 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 <hugin_version.h> + +#include <fstream> +#include <sstream> +#include <getopt.h> +#ifndef WIN32 + #include <unistd.h> +#endif +#include <panodata/Panorama.h> + +using namespace std; +using namespace HuginBase; +using namespace AppBase; + +static void usage(const char * name) +{ + cout << name << ": merges several project files" << endl + << "pto_merge version " << DISPLAY_VERSION << endl + << endl + << "Usage: " << name << " [options] input.pto input2.pto ..." << endl + << endl + << " Options:" << endl + << " -o, --output=file.pto Output Hugin PTO file." << endl + << " Default: <filename>_merge.pto" << endl + << " -h, --help Shows this help" << endl + << endl; +} + +int main(int argc, char *argv[]) +{ + // parse arguments + const char * optstring = "o:h"; + + static struct option longOptions[] = { + {"output", required_argument, NULL, 'o' }, + {"help", no_argument, NULL, 'h' }, + 0 + }; + + int c; + int optionIndex = 0; + string output; + while ((c = getopt_long (argc, argv, optstring, longOptions,&optionIndex)) != -1) + { + switch (c) + { + case 'o': + output = optarg; + break; + case 'h': + usage(argv[0]); + return 0; + case '?': + break; + default: + abort (); + } + } + + if (argc - optind < 2) + { + cout << "Warning: pto_merge requires at least 2 project files" << endl << endl; + usage(argv[0]); + return 1; + }; + + string input=argv[optind]; + // read panorama + Panorama pano; + ifstream prjfile(input.c_str()); + if (!prjfile.good()) { + cerr << "could not open script : " << input << endl; + return 1; + } + pano.setFilePrefix(hugin_utils::getPathPrefix(input)); + DocumentData::ReadWriteError err = pano.readData(prjfile); + if (err != DocumentData::SUCCESSFUL) { + cerr << "error while parsing panos tool script: " << input << endl; + cerr << "DocumentData::ReadWriteError code: " << err << endl; + return 1; + } + + optind++; + while(optind<argc) + { + Panorama pano2; + string input2=argv[optind]; + ifstream prjfile2(input2.c_str()); + if (!prjfile2.good()) + { + cerr << "could not open script : " << input << endl; + return 1; + } + pano2.setFilePrefix(hugin_utils::getPathPrefix(input2)); + DocumentData::ReadWriteError err = pano2.readData(prjfile2); + if (err != DocumentData::SUCCESSFUL) + { + cerr << "error while parsing panos tool script: " << input << endl; + cerr << "DocumentData::ReadWriteError code: " << err << endl; + return 1; + } + pano.mergePanorama(pano2); + optind++; + }; + + //write output + OptimizeVector optvec = pano.getOptimizeVector(); + UIntSet imgs; + fill_set(imgs,0, pano.getNrOfImages()-1); + // Set output .pto filename if not given + if (output=="") + { + output=input.substr(0,input.length()-4).append("_merge.pto"); + } + ofstream of(output.c_str()); + pano.printPanoramaScript(of, optvec, pano.getOptions(), imgs, false, hugin_utils::getPathPrefix(input)); + + cout << endl << "Written output to " << output << endl; + return 0; +} Property changes on: hugin/trunk/src/tools/pto_merge.cpp ___________________________________________________________________ Added: svn:keywords + Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tm...@us...> - 2010-04-14 19:50:55
|
Revision: 5115 http://hugin.svn.sourceforge.net/hugin/?rev=5115&view=rev Author: tmodes Date: 2010-04-14 19:50:49 +0000 (Wed, 14 Apr 2010) Log Message: ----------- Some improvements for progress display Modified Paths: -------------- hugin/trunk/src/foreign/levmar/lm_core.c hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.cpp hugin/trunk/src/hugin_base/appbase/ProgressDisplay.cpp Modified: hugin/trunk/src/foreign/levmar/lm_core.c =================================================================== --- hugin/trunk/src/foreign/levmar/lm_core.c 2010-04-14 17:25:05 UTC (rev 5114) +++ hugin/trunk/src/foreign/levmar/lm_core.c 2010-04-14 19:50:49 UTC (rev 5115) @@ -242,7 +242,7 @@ } //p_L2=sqrt(p_L2); -#if 1 +#if 0 if(!(k%10)){ printf("Iter: %d, estimate: ", k); for(i=0; i<m; ++i) @@ -606,7 +606,7 @@ break; } } -#if 1 +#if 0 if(!(k%10)){ printf("Iter: %d, estimate: ", k); for(i=0; i<m; ++i) Modified: hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.cpp =================================================================== --- hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.cpp 2010-04-14 17:25:05 UTC (rev 5114) +++ hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.cpp 2010-04-14 19:50:49 UTC (rev 5115) @@ -309,10 +309,12 @@ vigra::ArrayVector<double> x(n, 0.0); data.ToX(p.begin()); +#ifdef DEBUG printf("Parameters before optimisation: "); for(int i=0; i<m; ++i) printf("%.7g ", p[i]); printf("\n"); +#endif // covariance matrix at solution vigra::DImage cov(m,m); @@ -339,6 +341,7 @@ } error = sqrt(error/n); +#ifdef DEBUG printf("Levenberg-Marquardt returned %d in %g iter, reason %g\nSolution: ", ret, info[5], info[6]); for(int i=0; i<m; ++i) printf("%.7g ", p[i]); @@ -346,6 +349,7 @@ for(int i=0; i<LM_INFO_SZ; ++i) printf("%g ", info[i]); printf("\n"); +#endif // copy settings to panorama for (unsigned i=0; i<pano.getNrOfImages(); i++) { Modified: hugin/trunk/src/hugin_base/appbase/ProgressDisplay.cpp =================================================================== --- hugin/trunk/src/hugin_base/appbase/ProgressDisplay.cpp 2010-04-14 17:25:05 UTC (rev 5114) +++ hugin/trunk/src/hugin_base/appbase/ProgressDisplay.cpp 2010-04-14 19:50:49 UTC (rev 5115) @@ -210,7 +210,11 @@ int strlen=0; ostringstream stream; +#if defined _WINDOWS + stream << setfill('\b') << setw(81); +#else stream << "\r"; +#endif for (std::vector<ProgressSubtask>::iterator it = o_subtasks.begin(); it != o_subtasks.end(); ++it) { @@ -225,7 +229,10 @@ std::vector<ProgressSubtask>::iterator next = it; ++next; } - if (o_subtasks[0].measuresProgress()) { + bool showProgress=false; + if(o_subtasks.size()>0) + showProgress=o_subtasks[0].measuresProgress(); + if(showProgress){ stream << ": " << setw(3) << hugin_utils::roundi( 100.0 * o_subtasks[0].progress / o_subtasks[0].maxProgress) << "%"; } else { m_whizzCount = (++m_whizzCount) % (int)m_whizz.size(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tm...@us...> - 2010-04-14 19:52:22
|
Revision: 5116 http://hugin.svn.sourceforge.net/hugin/?rev=5116&view=rev Author: tmodes Date: 2010-04-14 19:52:15 +0000 (Wed, 14 Apr 2010) Log Message: ----------- Added smart photometric optimiser to autooptimiser Modified Paths: -------------- hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.h hugin/trunk/src/hugin_base/algorithms/point_sampler/PointSampler.h hugin/trunk/src/tools/CMakeLists.txt hugin/trunk/src/tools/autooptimiser.cpp hugin/trunk/src/tools/vig_optimize.cpp Added Paths: ----------- hugin/trunk/src/tools/ExtractPoints.h Modified: hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.h =================================================================== --- hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.h 2010-04-14 19:50:49 UTC (rev 5115) +++ hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.h 2010-04-14 19:52:15 UTC (rev 5116) @@ -145,8 +145,9 @@ /// SmartPhotometricOptimizer(PanoramaData& panorama, AppBase::ProgressDisplay* progressDisplay, const OptimizeVector& vars, - const PointPairs& correspondences) - : PhotometricOptimizer(panorama, progressDisplay, vars, correspondences) + const PointPairs& correspondences, + PhotometricOptimizeMode optMode) + : PhotometricOptimizer(panorama, progressDisplay, vars, correspondences), o_optMode(optMode) {}; /// Modified: hugin/trunk/src/hugin_base/algorithms/point_sampler/PointSampler.h =================================================================== --- hugin/trunk/src/hugin_base/algorithms/point_sampler/PointSampler.h 2010-04-14 19:50:49 UTC (rev 5115) +++ hugin/trunk/src/hugin_base/algorithms/point_sampler/PointSampler.h 2010-04-14 19:52:15 UTC (rev 5116) @@ -409,7 +409,7 @@ destMap = map1; } else if (map1->size() > map2->size()) { destMap = map2; - } else if (map1->rend()->first > map2->rend()->first) { + } else if (map1->rbegin()->first > map2->rbegin()->first) { // heuristic: insert into bin with higher maximum laplacian filter response // (higher probablity of misregistration). destMap = map1; Modified: hugin/trunk/src/tools/CMakeLists.txt =================================================================== --- hugin/trunk/src/tools/CMakeLists.txt 2010-04-14 19:50:49 UTC (rev 5115) +++ hugin/trunk/src/tools/CMakeLists.txt 2010-04-14 19:52:15 UTC (rev 5116) @@ -8,10 +8,10 @@ #add_executable(autocreate autocreate.cpp) #target_link_libraries(autocreate ${common_libs} ${image_libs}) -add_executable(autooptimiser autooptimiser.cpp) +add_executable(autooptimiser autooptimiser.cpp ExtractPoints.h) target_link_libraries(autooptimiser ${common_libs} ${image_libs}) -add_executable(vig_optimize vig_optimize.cpp) +add_executable(vig_optimize vig_optimize.cpp ExtractPoints.h) target_link_libraries(vig_optimize ${common_libs} ${image_libs}) add_executable(align_image_stack align_image_stack.cpp) Added: hugin/trunk/src/tools/ExtractPoints.h =================================================================== --- hugin/trunk/src/tools/ExtractPoints.h (rev 0) +++ hugin/trunk/src/tools/ExtractPoints.h 2010-04-14 19:52:15 UTC (rev 5116) @@ -0,0 +1,124 @@ +// -*- c-basic-offset: 4 -*- + +/** @file ExtractPoints.h + * + * @brief helper procedure for photometric optimizer on command line + * + * @author Pablo d'Angelo <pab...@we...> + * + * $Id$ + * + */ + +/** + * 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 <hugin_basic.h> + +#include <vigra/error.hxx> +#include <vigra/impex.hxx> + +#include <vigra_ext/ransac.h> +#include <vigra_ext/VigQuotientEstimator.h> +#include <vigra_ext/Pyramid.h> +#include <vigra_ext/Interpolators.h> +#include <vigra_ext/impexalpha.hxx> +#include <algorithms/point_sampler/PointSampler.h> + +using namespace std; +using namespace vigra; +using namespace vigra_ext; +using namespace AppBase; +using namespace HuginBase; + +template<class ImageType> +std::vector<ImageType *> loadImagesPyr(std::vector<std::string> files, int pyrLevel, int verbose) +{ + typedef typename ImageType::value_type PixelType; + std::vector<ImageType *> srcImgs; + for (size_t i=0; i < files.size(); i++) { + ImageType * tImg = new ImageType(); + ImageType * tImg2 = new ImageType(); + vigra::ImageImportInfo info(files[i].c_str()); + tImg->resize(info.size()); + if (verbose) + std::cout << "loading: " << files[i] << std::endl; + + if (info.numExtraBands() == 1) { + // dummy mask + vigra::BImage mask(info.size()); + vigra::importImageAlpha(info, vigra::destImage(*tImg), vigra::destImage(mask)); + } else { + vigra::importImage(info, vigra::destImage(*tImg)); + } + float div = 1; + if (strcmp(info.getPixelType(), "UINT8") == 0) { + div = 255; + } else if (strcmp(info.getPixelType(), "UINT16") == 0) { + div = (1<<16)-1; + } + + if (pyrLevel) { + ImageType * swap; + // create downscaled image + if (verbose > 0) { + std::cout << "downscaling: "; + } + for (int l=pyrLevel; l > 0; l--) { + if (verbose > 0) { + std::cout << tImg->size().x << "x" << tImg->size().y << " " << std::flush; + } + reduceToNextLevel(*tImg, *tImg2); + swap = tImg; + tImg = tImg2; + tImg2 = swap; + } + if (verbose > 0) + std::cout << std::endl; + } + if (div > 1) { + div = 1/div; + transformImage(vigra::srcImageRange(*tImg), vigra::destImage(*tImg), + vigra::functor::Arg1()*vigra::functor::Param(div)); + } + srcImgs.push_back(tImg); + delete tImg2; + } + return srcImgs; +} + + +// needs 2.0 progress steps +void loadImgsAndExtractPoints(Panorama pano, int nPoints, int pyrLevel, bool randomPoints, AppBase::ProgressDisplay& progress, std::vector<vigra_ext::PointPairRGB> & points, int verbose) +{ + // extract file names + std::vector<std::string> files; + for (size_t i=0; i < pano.getNrOfImages(); i++) + files.push_back(pano.getImage(i).getFilename()); + + std::vector<vigra::FRGBImage*> images; + + // try to load the images. + images = loadImagesPyr<vigra::FRGBImage>(files, pyrLevel, verbose); + + progress.startSubtask("Sampling points",0.0); + if(randomPoints) + points = RandomPointSampler(pano, &progress, images, nPoints).execute().getResultPoints(); + else + points = AllPointSampler(pano, &progress, images, nPoints).execute().getResultPoints(); + progress.finishSubtask(); +} Property changes on: hugin/trunk/src/tools/ExtractPoints.h ___________________________________________________________________ Added: svn:keywords + Id Modified: hugin/trunk/src/tools/autooptimiser.cpp =================================================================== --- hugin/trunk/src/tools/autooptimiser.cpp 2010-04-14 19:50:49 UTC (rev 5115) +++ hugin/trunk/src/tools/autooptimiser.cpp 2010-04-14 19:52:15 UTC (rev 5116) @@ -36,15 +36,19 @@ #include <unistd.h> #endif - #include <hugin_basic.h> #include <hugin_utils/stl_utils.h> #include <appbase/ProgressDisplayOld.h> #include <algorithms/optimizer/PTOptimizer.h> #include <algorithms/nona/CenterHorizontally.h> #include <algorithms/basic/StraightenPanorama.h> +#include <algorithms/basic/CalculateMeanExposure.h> #include <algorithms/nona/FitPanorama.h> #include <algorithms/basic/CalculateOptimalScale.h> +#include <algorithms/optimizer/PhotometricOptimizer.h> +#include <panodata/ImageVariableGroup.h> +#include <panodata/StandardImageVariableGroups.h> +#include "ExtractPoints.h" using namespace std; using namespace hugin_utils; @@ -67,6 +71,7 @@ << " on the amount and distribution of the control points" << endl << " -p pairwise optimisation of yaw, pitch and roll, starting from" << endl << " first image" << endl + << " -m Optimise photometric parameters" << endl << " -n Optimize parameters specified in script file (like PTOptimizer)" << endl << endl << " Postprocessing options:" << endl @@ -86,7 +91,7 @@ int main(int argc, char *argv[]) { // parse arguments - const char * optstring = "alho:npqsv:"; + const char * optstring = "alho:npqsv:m"; int c; string output; bool doPairwise = false; @@ -95,6 +100,7 @@ bool doLevel = false; bool chooseProj = false; bool quiet = false; + bool doPhotometric = false; double hfov = 0.0; while ((c = getopt (argc, argv, optstring)) != -1) { @@ -126,6 +132,9 @@ case 'v': hfov = atof(optarg); break; + case 'm': + doPhotometric = true; + break; default: abort (); } @@ -189,6 +198,11 @@ } } + if(pano.getNrOfCtrlPoints()==0 && (doPairwise || doAutoOpt || doNormalOpt)) + { + cerr << "Panorama have to have control points to optimise positions" << endl; + return 1; + }; if (doPairwise && ! doAutoOpt) { // do pairwise optimisation set<string> optvars; @@ -245,6 +259,88 @@ pano.setOptions(opts); } + if(doPhotometric) + { + // photometric estimation + PanoramaOptions opts = pano.getOptions(); + int nPoints = 200; + int pyrLevel=3; + bool randomPoints = true; + nPoints = nPoints * pano.getNrOfImages(); + + std::vector<vigra_ext::PointPairRGB> points; + ProgressDisplay *progressDisplay; + if(!quiet) + progressDisplay=new StreamProgressDisplay(std::cout); + else + progressDisplay=new DummyProgressDisplay(); + try + { + loadImgsAndExtractPoints(pano, nPoints, pyrLevel, randomPoints, *progressDisplay, points, !quiet); + } + catch (std::exception & e) + { + cerr << "caught exception: " << e.what() << endl; + return 1; + }; + if(!quiet) + cout << "\rSelected " << points.size() << " points" << endl; + + if (points.size() == 0) + { + cerr << "Error: no overlapping points found, exiting" << endl; + return 1; + } + + progressDisplay->startSubtask("Photometric Optimization", 0.0); + // first, ensure that vignetting and response coefficients are linked + const HuginBase::ImageVariableGroup::ImageVariableEnum vars[] = { + HuginBase::ImageVariableGroup::IVE_EMoRParams, + HuginBase::ImageVariableGroup::IVE_ResponseType, + HuginBase::ImageVariableGroup::IVE_VigCorrMode, + HuginBase::ImageVariableGroup::IVE_RadialVigCorrCoeff, + HuginBase::ImageVariableGroup::IVE_RadialVigCorrCenterShift + }; + HuginBase::StandardImageVariableGroups variable_groups(pano); + HuginBase::ImageVariableGroup & lenses = variable_groups.getLenses(); + for (size_t i = 0; i < lenses.getNumberOfParts(); i++) + { + std::set<HuginBase::ImageVariableGroup::ImageVariableEnum> links_needed; + links_needed.clear(); + for (int v = 0; v < 5; v++) + { + if (!lenses.getVarLinkedInPart(vars[v], i)) + { + links_needed.insert(vars[v]); + } + }; + if (!links_needed.empty()) + { + std::set<HuginBase::ImageVariableGroup::ImageVariableEnum>::iterator it; + for (it = links_needed.begin(); it != links_needed.end(); it++) + { + lenses.linkVariablePart(*it, i); + } + } + } + + HuginBase::SmartPhotometricOptimizer::PhotometricOptimizeMode optmode = + HuginBase::SmartPhotometricOptimizer::OPT_PHOTOMETRIC_LDR; + if (opts.outputMode == PanoramaOptions::OUTPUT_HDR) + { + optmode = HuginBase::SmartPhotometricOptimizer::OPT_PHOTOMETRIC_HDR; + } + SmartPhotometricOptimizer photoOpt(pano, progressDisplay, pano.getOptimizeVector(), points, optmode); + photoOpt.run(); + + // calculate the mean exposure. + opts.outputExposureValue = CalculateMeanExposure::calcMeanExposure(pano); + pano.setOptions(opts); + progressDisplay->finishSubtask(); + delete progressDisplay; + }; + + // write result OptimizeVector optvec = pano.getOptimizeVector(); UIntSet imgs; fill_set(imgs,0, pano.getNrOfImages()-1); Modified: hugin/trunk/src/tools/vig_optimize.cpp =================================================================== --- hugin/trunk/src/tools/vig_optimize.cpp 2010-04-14 19:50:49 UTC (rev 5115) +++ hugin/trunk/src/tools/vig_optimize.cpp 2010-04-14 19:52:15 UTC (rev 5116) @@ -29,17 +29,9 @@ #include <fstream> #include <sstream> -#include <vigra/error.hxx> -#include <vigra/impex.hxx> - -#include <vigra_ext/ransac.h> -#include <vigra_ext/VigQuotientEstimator.h> -#include <vigra_ext/Pyramid.h> -#include <vigra_ext/Interpolators.h> -#include <algorithms/point_sampler/PointSampler.h> #include <algorithms/optimizer/PhotometricOptimizer.h> +#include "ExtractPoints.h" - #ifdef WIN32 #include <getopt.h> #else @@ -69,7 +61,8 @@ << " -o file write results to output project" << std::endl << " -v Verbose, print progress messages" << std::endl << " -p n Number of points to extract" << std::endl - << " -r Extract random point (faster, but less accurate)" << std::endl + // random points is default, all points was only implemented for testing purposes + // << " -r Extract random point (faster, but less accurate)" << std::endl << " -s level Work on downscaled images, every step halfs width and height" << std::endl << " -h Display help (this text)" << std::endl << std::endl @@ -142,19 +135,6 @@ } } - -template<class ImageType> -std::vector<ImageType *> loadImagesPyr(std::vector<std::string> files, int pyrLevel, int verbose=0); - -void loadImgsAndExtractPoints(Panorama pano, - int nPoints, - int pyrLevel, - bool randomPoints, - AppBase::ProgressDisplay& progress, - std::vector<vigra_ext::PointPairRGB>& points); - - - bool hasphotometricParams(Panorama &pano) { OptimizeVector vars=pano.getOptimizeVector(); @@ -179,15 +159,15 @@ StreamProgressDisplay progressDisplay(std::cout); // parse arguments - const char * optstring = "hi:o:p:rs:vw:"; + const char * optstring = "hi:o:p:s:vw:"; int c; opterr = 0; int pyrLevel=3; int verbose = 0; - int nPoints = 5000; - bool randomPoints = false; + int nPoints = 200; + bool randomPoints = true; std::string outputFile; std::string outputPointsFile; std::string inputPointsFile; @@ -203,9 +183,9 @@ case 'p': nPoints = atoi(optarg); break; - case 'r': + /*case 'r': randomPoints = true; - break; + break; */ case 's': pyrLevel=atoi(optarg); break; @@ -256,10 +236,6 @@ // suppress tiff warnings TIFFSetWarningHandler(0); - - progressDisplay.startSubtask("Vignetting Optimization", 0.0); - - // todo: handle images with alpha masks try { std::vector<vigra_ext::PointPairRGB> points; @@ -275,10 +251,10 @@ loadPointsC(f, points); fclose(f); } else { - loadImgsAndExtractPoints(pano, nPoints, pyrLevel, randomPoints, progressDisplay, points); + loadImgsAndExtractPoints(pano, nPoints, pyrLevel, randomPoints, progressDisplay, points, verbose); } if (verbose) - cout << "Selected " << points.size() << " points" << std::endl; + cout << "\rSelected " << points.size() << " points" << std::endl; if (points.size() == 0) { std::cerr << "Error: no overlapping points found, exiting" << std::endl; return 1; @@ -301,6 +277,7 @@ } + progressDisplay.startSubtask("Vignetting Optimization", 0.0); PhotometricOptimizer photoopt(pano, &progressDisplay, pano.getOptimizeVector(), points); photoopt.run(); // double error = photoopt.getResultError(); @@ -323,83 +300,3 @@ } return 0; } - - - - - -template<class ImageType> -std::vector<ImageType *> loadImagesPyr(std::vector<std::string> files, int pyrLevel, int verbose) -{ - typedef typename ImageType::value_type PixelType; - std::vector<ImageType *> srcImgs; - for (size_t i=0; i < files.size(); i++) { - ImageType * tImg = new ImageType(); - ImageType * tImg2 = new ImageType(); - vigra::ImageImportInfo info(files[i].c_str()); - tImg->resize(info.size()); - if (verbose) - std::cout << "loading: " << files[i] << std::endl; - - if (info.numExtraBands() == 1) { - // dummy mask - vigra::BImage mask(info.size()); - vigra::importImageAlpha(info, vigra::destImage(*tImg), vigra::destImage(mask)); - } else { - vigra::importImage(info, vigra::destImage(*tImg)); - } - float div = 1; - if (strcmp(info.getPixelType(), "UINT8") == 0) { - div = 255; - } else if (strcmp(info.getPixelType(), "UINT16") == 0) { - div = (1<<16)-1; - } - - if (pyrLevel) { - ImageType * swap; - // create downscaled image - if (verbose > 0) { - std::cout << "downscaling: "; - } - for (int l=pyrLevel; l > 0; l--) { - if (verbose > 0) { - std::cout << tImg->size().x << "x" << tImg->size().y << " " << std::flush; - } - reduceToNextLevel(*tImg, *tImg2); - swap = tImg; - tImg = tImg2; - tImg2 = swap; - } - if (verbose > 0) - std::cout << std::endl; - } - if (div > 1) { - div = 1/div; - transformImage(vigra::srcImageRange(*tImg), vigra::destImage(*tImg), - vigra::functor::Arg1()*vigra::functor::Param(div)); - } - srcImgs.push_back(tImg); - delete tImg2; - } - return srcImgs; -} - - -// needs 2.0 progress steps -void loadImgsAndExtractPoints(Panorama pano, int nPoints, int pyrLevel, bool randomPoints, AppBase::ProgressDisplay& progress, std::vector<vigra_ext::PointPairRGB> & points ) -{ - // extract file names - std::vector<std::string> files; - for (size_t i=0; i < pano.getNrOfImages(); i++) - files.push_back(pano.getImage(i).getFilename()); - - std::vector<vigra::FRGBImage*> images; - - // try to load the images. - images = loadImagesPyr<vigra::FRGBImage>(files, pyrLevel, 1); - - if(randomPoints) - points = RandomPointSampler(pano, &progress, images, nPoints).execute().getResultPoints(); - else - points = AllPointSampler(pano, &progress, images, nPoints).execute().getResultPoints(); -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tm...@us...> - 2010-05-02 15:00:30
|
Revision: 5133 http://hugin.svn.sourceforge.net/hugin/?rev=5133&view=rev Author: tmodes Date: 2010-05-02 15:00:24 +0000 (Sun, 02 May 2010) Log Message: ----------- Unified coloring of cp errors Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/CPImagesComboBox.cpp hugin/trunk/src/hugin1/hugin/PreviewControlPointTool.cpp hugin/trunk/src/hugin1/hugin/PreviewLayoutLinesTool.cpp hugin/trunk/src/hugin_base/hugin_utils/utils.cpp hugin/trunk/src/hugin_base/hugin_utils/utils.h Modified: hugin/trunk/src/hugin1/hugin/CPImagesComboBox.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPImagesComboBox.cpp 2010-05-02 08:17:05 UTC (rev 5132) +++ hugin/trunk/src/hugin1/hugin/CPImagesComboBox.cpp 2010-05-02 15:00:24 UTC (rev 5133) @@ -201,13 +201,13 @@ wxPen MyPen(wxColour(255,0,0),1,wxSOLID); wxBrush MyBrush(wxColour(255,0,0),wxSOLID); double red, green, blue; - - hugin_utils::ControlPointErrorColour(CPConnection[item],false,&red,&green,&blue); - - //Scale colour to 0-255 - red *= 255; - green *= 255; + hugin_utils::ControlPointErrorColour(CPConnection[item],red,green,blue); + + //Scale colour to 0-255 + red *= 255; + green *= 255; + MyPen.SetColour(wxColour(red,green,0)); MyBrush.SetColour(wxColour(red,green,0)); dc.SetPen(MyPen); Modified: hugin/trunk/src/hugin1/hugin/PreviewControlPointTool.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/PreviewControlPointTool.cpp 2010-05-02 08:17:05 UTC (rev 5132) +++ hugin/trunk/src/hugin1/hugin/PreviewControlPointTool.cpp 2010-05-02 15:00:24 UTC (rev 5133) @@ -70,17 +70,15 @@ // draw line control points blue instead of orange. bool line = cp.mode != HuginBase::ControlPoint::X_Y; if (line) - { - glColor3f(0.0, 0.5, 1.0); - } + { + glColor3f(0.0, 0.5, 1.0); + } else - { - - double red, green, blue; - hugin_utils::ControlPointErrorColour(cp.error,false,&red,&green,&blue); - glColor3d(red, green, blue); - - } + { + double red, green, blue; + hugin_utils::ControlPointErrorColour(cp.error,red,green,blue); + glColor3d(red, green, blue); + } // draw a the smallest great circle arc between these two points. double x1, y1, x2, y2; transforms[cp.image1Nr].transformImgCoord(x1, y1, cp.x1, cp.y1); Modified: hugin/trunk/src/hugin1/hugin/PreviewLayoutLinesTool.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/PreviewLayoutLinesTool.cpp 2010-05-02 08:17:05 UTC (rev 5132) +++ hugin/trunk/src/hugin1/hugin/PreviewLayoutLinesTool.cpp 2010-05-02 15:00:24 UTC (rev 5133) @@ -551,9 +551,9 @@ // no control points, use a grey line glColor3ub(170, 170, 170); }else { - double red, green, blue; - hugin_utils::ControlPointErrorColour(worstError,true,&red,&green,&blue); - glColor3d(red, green, blue); + double red, green, blue; + hugin_utils::ControlPointErrorColour(worstError,red,green,blue); + glColor3d(red, green, blue); } double lineWidth = numberOfControlPoints / 5.0 + 1.0; Modified: hugin/trunk/src/hugin_base/hugin_utils/utils.cpp =================================================================== --- hugin/trunk/src/hugin_base/hugin_utils/utils.cpp 2010-05-02 08:17:05 UTC (rev 5132) +++ hugin/trunk/src/hugin_base/hugin_utils/utils.cpp 2010-05-02 15:00:24 UTC (rev 5133) @@ -202,45 +202,24 @@ } void ControlPointErrorColour(const double cperr, - const bool worst, double* r,double* g, double* b) + double &r,double &g, double &b) { //Colour change points - double xp1,xp2; + double xp1=5; + double xp2=10; - //Use two scalings - if (worst) - { - //For maximum control point error - xp1 = 5; - xp2 = 20; - } - else - { - //For individual control point error - xp1 = 3; - xp2 = 15; - } - if ( cperr<= xp1) { //low error - *r = cperr / xp1; - *g = 0.75+cperr/(xp1*4); + r = cperr / xp1; + g = 0.75; } - else if ( cperr < xp2) + else { - // medium error - *r = 1.0; - *g = 1.0 - ((cperr - xp1)/(xp2-xp1)); + r = 1.0; + g = 0.75 * ( (1.0-std::min<double>(cperr-xp1,(xp2-xp1))/(xp2-xp1))); } - else - { - // big error - *r = 1.0; - *g = 0.0; - } - *g *= 0.75; - *b = 0.0; + b = 0.0; } Modified: hugin/trunk/src/hugin_base/hugin_utils/utils.h =================================================================== --- hugin/trunk/src/hugin_base/hugin_utils/utils.h 2010-05-02 08:17:05 UTC (rev 5132) +++ hugin/trunk/src/hugin_base/hugin_utils/utils.h 2010-05-02 15:00:24 UTC (rev 5133) @@ -280,8 +280,8 @@ return ret; } - IMPEX void ControlPointErrorColour(const double cperr, - const bool worst, double* r,double* g, double* b); + IMPEX void ControlPointErrorColour(const double cperr, + double &r,double &g, double &b); } // namespace This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tm...@us...> - 2010-05-10 16:47:59
|
Revision: 5150 http://hugin.svn.sourceforge.net/hugin/?rev=5150&view=rev Author: tmodes Date: 2010-05-10 16:47:52 +0000 (Mon, 10 May 2010) Log Message: ----------- Improved calculation of focal length and crop factor [2996028] Modified Paths: -------------- hugin/trunk/src/hugin1/PT/PanoCommand.h hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp hugin/trunk/src/hugin1/hugin/LensPanel.cpp hugin/trunk/src/hugin1/hugin/LensPanel.h hugin/trunk/src/hugin_base/panodata/Lens.cpp hugin/trunk/src/hugin_base/panodata/Lens.h hugin/trunk/src/hugin_base/panodata/Panorama.cpp hugin/trunk/src/hugin_base/panodata/Panorama.h hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.cpp Modified: hugin/trunk/src/hugin1/PT/PanoCommand.h =================================================================== --- hugin/trunk/src/hugin1/PT/PanoCommand.h 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin1/PT/PanoCommand.h 2010-05-10 16:47:52 UTC (rev 5150) @@ -1076,11 +1076,90 @@ double y,p,r; }; + //========================================================================= + //========================================================================= + /** Update the focal length + */ + class UpdateFocalLengthCmd : public PanoCommand + { + public: + UpdateFocalLengthCmd(Panorama & p, UIntSet imgs, double newFocalLength) + : PanoCommand(p), imgNrs(imgs), m_focalLength(newFocalLength) + { }; + + virtual bool processPanorama(Panorama& pano) + { + pano.UpdateFocalLength(imgNrs,m_focalLength); + pano.changeFinished(); + return true; + } + + virtual std::string getName() const + { + return "update focal length"; + } + + private: + UIntSet imgNrs; + double m_focalLength; + }; + //========================================================================= //========================================================================= + /** Update the crop factor + */ + class UpdateCropFactorCmd : public PanoCommand + { + public: + UpdateCropFactorCmd(Panorama & p, UIntSet imgs, double newCropFactor) + : PanoCommand(p), imgNrs(imgs), m_cropFactor(newCropFactor) + { }; + + virtual bool processPanorama(Panorama& pano) + { + //search all image with the same lens, otherwise the crop factor is updated via links, + //but not the hfov if the image is not the given UIntSet + UIntSet allImgWithSameLens; + UIntSet testedLens; + HuginBase::StandardImageVariableGroups variable_groups(pano); + HuginBase::ImageVariableGroup & lenses = variable_groups.getLenses(); + for(UIntSet::const_iterator it=imgNrs.begin();it!=imgNrs.end();it++) + { + allImgWithSameLens.insert(*it); + unsigned int lensNr=lenses.getPartNumber(*it); + if(set_contains(testedLens,lensNr)) + continue; + testedLens.insert(lensNr); + for(unsigned int i=0;i<pano.getNrOfImages();i++) + { + if(lenses.getPartNumber(i)==lensNr) + { + allImgWithSameLens.insert(i); + }; + }; + }; + pano.UpdateCropFactor(allImgWithSameLens, m_cropFactor); + pano.changeFinished(); + return true; + } + + virtual std::string getName() const + { + return "update crop factor"; + } + + private: + UIntSet imgNrs; + double m_cropFactor; + }; + + //========================================================================= + //========================================================================= + + /** Switch the part number of an image */ class ChangePartNumberCmd : public PanoCommand Modified: hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp 2010-05-10 16:47:52 UTC (rev 5150) @@ -913,8 +913,8 @@ UIntSet images0; images0.insert(0); GlobalCmdHist::getInstance().addCommand( - new PT::ChangeImageExifFocalLengthCmd(*m_pano, images0, val) - ); + new PT::UpdateFocalLengthCmd(*m_pano, images0, val) + ); } void AssistantPanel::OnCropFactorChanged(wxCommandEvent & e) @@ -926,28 +926,11 @@ return; } - // always change first lens... - - double fl = m_pano->getImage(0).getExifFocalLength(); - UIntSet images; - for (unsigned i=0; i < m_pano->getNrOfImages(); i++) { - images.insert(i); - } + images.insert(0); GlobalCmdHist::getInstance().addCommand( - new PT::ChangeImageExifCropFactorCmd(*m_pano, images, val) - ); - /// @todo why are we copying the focal length from the first image? - GlobalCmdHist::getInstance().addCommand( - new PT::ChangeImageExifFocalLengthCmd(*m_pano, images, fl) - ); - - // TODO: update crop factor as well without destroying other information. - UIntSet imgs; - imgs.insert(0); - GlobalCmdHist::getInstance().addCommand( - new PT::ChangeImageExifCropFactorCmd(*m_pano, imgs, val) - ); + new PT::UpdateCropFactorCmd(*m_pano,images,val) + ); } IMPLEMENT_DYNAMIC_CLASS(AssistantPanel, wxPanel) Modified: hugin/trunk/src/hugin1/hugin/LensPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/LensPanel.cpp 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin1/hugin/LensPanel.cpp 2010-05-10 16:47:52 UTC (rev 5150) @@ -256,8 +256,7 @@ if ((m_selectedImages.size() == 0) || (m_selectedLenses.size() == 0)){ // no image selected - wxListEvent ev; - ListSelectionChanged(ev); + EnableInputs(); return; } if (m_selectedImages.size() != 1) { @@ -311,7 +310,9 @@ } // update focal length - double focal_length = lens.getFocalLength(); + const SrcPanoImage &img=pano->getImage(*(m_selectedImages.begin())); + double focal_length = SrcPanoImage::calcFocalLength(img.getProjection(),img.getHFOV(), + img.getExifCropFactor(),img.getSize()); m_XRCCTRL(*this, wxT("lens_val_focalLength"), wxTextCtrl)->SetValue( doubleTowxString(focal_length,m_distDigitsEdit)); @@ -418,22 +419,10 @@ return; } - - VariableMapVector vars; - UIntSet lensNrs; - for (UIntSet::const_iterator it=m_selectedImages.begin(); - it != m_selectedImages.end(); - ++it) - { - vars.push_back(pano->getImageVariables(*it)); - Lens l = variable_groups->getLensForImage(*it); - l.setFocalLength(val); - map_get(vars.back(),"v").setValue( map_get(l.variables,"v").getValue() ); - } - GlobalCmdHist::getInstance().addCommand( - new PT::UpdateImagesVariablesCmd(*pano, m_selectedImages, vars) - ); + new PT::UpdateFocalLengthCmd(*pano,m_selectedImages, val) + ); + } } @@ -448,34 +437,9 @@ return; } - // find all lens ids that belong to the selected images - UIntSet imageNrs; - VariableMapVector vars; - - for (UIntSet::const_iterator it=m_selectedImages.begin(); - it != m_selectedImages.end(); - ++it) - { - imageNrs.insert(*it); - //mark also linked images for update - const SrcPanoImage & img=pano->getImage(*it); - if(img.HFOVisLinked()) - for(unsigned int j=0;j<pano->getNrOfImages();j++) - if(j!=(*it)) - if(img.HFOVisLinkedWith(pano->getImage(j))) - imageNrs.insert(j); - //update also hfov, otherwise the focal length is changed - vars.push_back(pano->getImageVariables(*it)); - double new_hfov=calcHFOV(img.getProjection(),img.getExifFocalLength(),val,img.getSize()); - map_get(vars.back(),"v").setValue( new_hfov ); - } - GlobalCmdHist::getInstance().addCommand( - new PT::ChangeImageExifCropFactorCmd( *pano, imageNrs, val) + new PT::UpdateCropFactorCmd(*pano,m_selectedImages,val) ); - GlobalCmdHist::getInstance().addCommand( - new PT::UpdateImagesVariablesCmd(*pano, m_selectedImages, vars) - ); } } @@ -613,6 +577,11 @@ m_selectedLenses.insert(variable_groups->getLenses().getPartNumber(*it)); } DEBUG_DEBUG("selected Images: " << m_selectedImages.size()); + EnableInputs(); +}; + +void LensPanel::EnableInputs() +{ if (m_selectedImages.size() == 0) { // m_editImageNr = UINT_MAX; // m_editLensNr = UINT_MAX; Modified: hugin/trunk/src/hugin1/hugin/LensPanel.h =================================================================== --- hugin/trunk/src/hugin1/hugin/LensPanel.h 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin1/hugin/LensPanel.h 2010-05-10 16:47:52 UTC (rev 5150) @@ -80,6 +80,9 @@ */ void UpdateLensDisplay (); + /** enabled or disable the controls depending on selected images */ + void EnableInputs(); + void EditVigCorr (wxCommandEvent & e); private: Modified: hugin/trunk/src/hugin_base/panodata/Lens.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/Lens.cpp 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin_base/panodata/Lens.cpp 2010-05-10 16:47:52 UTC (rev 5150) @@ -37,8 +37,8 @@ Lens::Lens() - : m_hasExif(false), m_projectionFormat(RECTILINEAR), - m_imageSize(0,0), m_sensorSize(36.0,24.0) + : m_hasExif(false), m_projectionFormat(BaseSrcPanoImage::RECTILINEAR), + m_imageSize(0,0), m_cropFactor(1.0) { fillLensVarMap(variables); } @@ -63,36 +63,7 @@ { double HFOV = const_map_get(variables,"v").getValue(); -#if 0 - if (isLandscape()) { - ssize = m_sensorSize; - } else { - ssize.y = m_sensorSize.x; - ssize.x = m_sensorSize.y; - } -#endif - - switch (m_projectionFormat) - { - case RECTILINEAR: - return (m_sensorSize.x/2.0) / tan(HFOV/180.0*M_PI/2); - break; - case CIRCULAR_FISHEYE: - case FULL_FRAME_FISHEYE: - case FISHEYE_ORTHOGRAPHIC: - case FISHEYE_STEREOGRAPHIC: - case FISHEYE_EQUISOLID: - case PANORAMIC: - case EQUIRECTANGULAR: - // same projection equation for both fisheye types, - // assume equal area projection. - return m_sensorSize.x / (HFOV/180*M_PI); - break; - default: - // TODO: add formulas for other projections - DEBUG_WARN("Focal length calculations only supported with rectilinear and fisheye images"); - return 0; - } + return SrcPanoImage::calcFocalLength(m_projectionFormat,HFOV,getCropFactor(),m_imageSize); } void Lens::setEV(double ev) @@ -100,53 +71,6 @@ map_get(variables, "Eev").setValue(ev); } -void Lens::setFocalLength(double fl) -{ -#if 0 - if (isLandscape()) { - ssize = m_sensorSize; - } else { - ssize.y = m_sensorSize.x; - ssize.x = m_sensorSize.y; - } -#endif - - double hfov=map_get(variables, "v").getValue(); - switch (m_projectionFormat) { - case RECTILINEAR: - hfov = 2*atan((m_sensorSize.x/2.0)/fl) * 180.0/M_PI; - break; - case CIRCULAR_FISHEYE: - case FULL_FRAME_FISHEYE: - hfov = m_sensorSize.x / fl * 180/M_PI; - default: - // TODO: add formulas for other projections - DEBUG_WARN("Focal length calculations only supported with rectilinear and fisheye images"); - } - map_get(variables, "v").setValue(hfov); -} - - -void Lens::setCropFactor(double factor) -{ - // calculate diagonal on our sensor - double d = sqrt(36.0*36.0 + 24.0*24.0) / factor; - - double r = (double)m_imageSize.x / m_imageSize.y; - - // calculate the sensor width and height that fit the ratio - // the ratio is determined by the size of our image. - m_sensorSize.x = d / sqrt(1.0 + 1.0/(r*r)); - m_sensorSize.y = m_sensorSize.x / r; -} - -double Lens::getCropFactor() const -{ - double d2 = m_sensorSize.x*m_sensorSize.x + m_sensorSize.y*m_sensorSize.y; - return sqrt(36.0*36+24*24) / sqrt(d2); -} - - double Lens::getAspectRatio() const { return (double)m_imageSize.x / m_imageSize.y; @@ -162,8 +86,7 @@ void Lens::update(const Lens & l) { m_projectionFormat = l.m_projectionFormat; - m_sensorSize = l.m_sensorSize; - m_imageSize = l.m_imageSize; + m_cropFactor = l.getCropFactor(); m_imageSize = l.m_imageSize; variables = l.variables; } Modified: hugin/trunk/src/hugin_base/panodata/Lens.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/Lens.h 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin_base/panodata/Lens.h 2010-05-10 16:47:52 UTC (rev 5150) @@ -36,29 +36,16 @@ #include <hugin_math/hugin_math.h> #include <panodata/PanoramaVariable.h> +#include <panodata/SrcPanoImage.h> - namespace HuginBase { class IMPEX Lens { public: - /** Lens type - */ - enum LensProjectionFormat { - RECTILINEAR = 0, - PANORAMIC = 1, - CIRCULAR_FISHEYE = 2, - FULL_FRAME_FISHEYE = 3, - EQUIRECTANGULAR = 4, - FISHEYE_ORTHOGRAPHIC = 8, - FISHEYE_STEREOGRAPHIC = 10, - FISHEYE_EQUISOLID = 21 - }; + typedef BaseSrcPanoImage::Projection LensProjectionFormat; - - public: /** construct a new lens. * */ @@ -98,29 +85,14 @@ /** get focal length of lens, it is calculated from the HFOV */ double getFocalLength() const; - /** set focal length, updates HFOV */ - void setFocalLength(double); - /** get crop factor, d35mm/dreal */ - double getCropFactor() const; + double getCropFactor() const + { return m_cropFactor; }; - /** Set the crop factor. - * - * This will recalculate the sensor size. - * - * @param c is the ratio of the sensor diagonals: - * factor = diag35mm / real_diag - */ - void setCropFactor(double c); + /** sets the crop factor */ + void setCropFactor(double newCropFactor) + { m_cropFactor=newCropFactor; }; - /** get sensor dimension */ - hugin_utils::FDiff2D getSensorSize() const - { return m_sensorSize; } - - /** set sensor dimensions. Only square pixels are supported so far.*/ - void setSensorSize(const hugin_utils::FDiff2D & size) - { m_sensorSize = size; } - /** return the sensor ratio (width/height) */ double getAspectRatio() const; @@ -159,7 +131,7 @@ private: LensProjectionFormat m_projectionFormat; vigra::Size2D m_imageSize; - hugin_utils::FDiff2D m_sensorSize; + double m_cropFactor; }; Modified: hugin/trunk/src/hugin_base/panodata/Panorama.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/Panorama.cpp 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin_base/panodata/Panorama.cpp 2010-05-10 16:47:52 UTC (rev 5150) @@ -287,6 +287,49 @@ state.needsOptimization = true; } +void Panorama::UpdateFocalLength(UIntSet imgs, double newFocalLength) +{ + for(UIntSet::const_iterator it=imgs.begin();it!=imgs.end();it++) + { + state.images[*it]->updateFocalLength(newFocalLength); + imageChanged(*it); + }; + //search for images with linked HFOV and mark these also as changed + for(UIntSet::const_iterator it=imgs.begin();it!=imgs.end();it++) + { + SrcPanoImage *img=state.images[*it]; + if(state.images[*it]->HFOVisLinked()) + { + for(unsigned int j=0;j<getNrOfImages();j++) + { + if(*it!=j) + { + if(state.images[*it]->HFOVisLinkedWith(*img)) + { + imageChanged(j); + }; + }; + }; + }; + }; +}; + +void Panorama::UpdateCropFactor(UIntSet imgs, double newCropFactor) +{ + //store list of focal length, so we can keep the focal length unchanged and change hfov instead + std::vector<double> focalLengthVector(getNrOfImages(),0.0); + for(unsigned i=0;i<getNrOfImages();i++) + { + focalLengthVector[i]=state.images[i]->calcFocalLength(state.images[i]->getProjection(), + state.images[i]->getHFOV(),state.images[i]->getExifCropFactor(),state.images[i]->getSize()); + }; + for(UIntSet::const_iterator it=imgs.begin();it!=imgs.end();it++) + { + state.images[*it]->updateCropFactor(focalLengthVector[*it],newCropFactor); + imageChanged(*it); + }; +}; + // What counts as changed in terms of the image variable links? // Should I call imageChanged on every image linked to sourceImg and destImg? // destImg's variable will change value to sourceImg's, so the images linked to Modified: hugin/trunk/src/hugin_base/panodata/Panorama.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/Panorama.h 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin_base/panodata/Panorama.h 2010-05-10 16:47:52 UTC (rev 5150) @@ -384,6 +384,10 @@ */ virtual void updateVariable(unsigned int imgNr, const Variable &var); + /** updates the focal length by changing hfov */ + virtual void UpdateFocalLength(UIntSet imgs, double newFocalLength); + /** updates the crop factor, try to keep focal length constant */ + virtual void UpdateCropFactor(UIntSet imgs, double newCropFactor); /* Link image variable functions. Used to group image variables which * should share the same value. The initial value is the one kept by * the image with number sourceImgNr. Modified: hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp 2010-05-10 16:47:52 UTC (rev 5150) @@ -722,7 +722,25 @@ return sqrt(36.0*36.0 + 24.0*24.0) / diag; } +void SrcPanoImage::updateFocalLength(double newFocalLength) +{ + double newHFOV=calcHFOV(getProjection(),newFocalLength,getExifCropFactor(),getSize()); + if(newHFOV!=0) + { + setHFOV(newHFOV); + }; +}; +void SrcPanoImage::updateCropFactor(double focalLength, double newCropFactor) +{ + double newHFOV=calcHFOV(getProjection(),focalLength,newCropFactor,getSize()); + if(newHFOV!=0) + { + setHFOV(newHFOV); + }; + setExifCropFactor(newCropFactor); +}; + // Convenience functions to work with Exiv2 bool SrcPanoImage::getExiv2Value(Exiv2::ExifData& exifData, std::string keyName, long & value) { Modified: hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h 2010-05-10 16:47:52 UTC (rev 5150) @@ -381,6 +381,11 @@ /** calculate crop factor, given focal length and hfov */ static double calcCropFactor(SrcPanoImage::Projection proj, double hfov, double focalLength, vigra::Size2D imageSize); + /** updates the focal length, changes the hfov to reflect thew newFocalLength */ + void updateFocalLength(double newFocalLength); + /** updates the crop factor, the hfov is calculates so that focal length remains the same */ + void updateCropFactor(double focalLength, double newCropFactor); + /** returns true, if image has masks associated */ bool hasMasks() const; /** returns true, if image has active masks */ Modified: hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.cpp =================================================================== --- hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.cpp 2010-05-09 07:32:32 UTC (rev 5149) +++ hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.cpp 2010-05-10 16:47:52 UTC (rev 5150) @@ -662,28 +662,28 @@ image.dataformat = _RGB; switch (format) { - case Lens::RECTILINEAR: + case BaseSrcPanoImage::RECTILINEAR: image.format = _rectilinear; break; - case Lens::PANORAMIC: + case BaseSrcPanoImage::PANORAMIC: image.format = _panorama; break; - case Lens::CIRCULAR_FISHEYE: + case BaseSrcPanoImage::CIRCULAR_FISHEYE: image.format = _fisheye_circ; break; - case Lens::FULL_FRAME_FISHEYE: + case BaseSrcPanoImage::FULL_FRAME_FISHEYE: image.format = _fisheye_ff; break; - case Lens::EQUIRECTANGULAR: + case BaseSrcPanoImage::EQUIRECTANGULAR: image.format = _equirectangular; break; - case Lens::FISHEYE_ORTHOGRAPHIC: + case BaseSrcPanoImage::FISHEYE_ORTHOGRAPHIC: image.format = _orthographic; break; - case Lens::FISHEYE_STEREOGRAPHIC: + case BaseSrcPanoImage::FISHEYE_STEREOGRAPHIC: image.format = _stereographic; break; - case Lens::FISHEYE_EQUISOLID: + case BaseSrcPanoImage::FISHEYE_EQUISOLID: image.format = _equisolid; break; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |