]> git.decadent.org.uk Git - videolink.git/blobdiff - generate_dvd.cpp
Updated for experimental version using XULRunner 1.9.
[videolink.git] / generate_dvd.cpp
index d695c8e2556b2fd03807322eff07d4669997dbb3..d5185c2702e6fa88926800ac62c03429d6df6f86 100644 (file)
@@ -161,12 +161,12 @@ void dvd_generator::generate_menu_vob(unsigned index,
 
     std::string background_name(
        temp_file_name(temp_dir_, "menu-%3d-back.png", 1 + index));
-    std::cout << "saving " << background_name << std::endl;
+    std::cout << "INFO: Saving " << background_name << std::endl;
     background->save(background_name, "png");
 
     std::string highlights_name(
        temp_file_name(temp_dir_, "menu-%3d-links.png", 1 + index));
-    std::cout << "saving " << highlights_name << std::endl;
+    std::cout << "INFO: Saving " << highlights_name << std::endl;
     highlights->save(highlights_name, "png");
 
     std::string spumux_name(
@@ -211,11 +211,15 @@ void dvd_generator::generate_menu_vob(unsigned index,
                }
            }
        }
+       // Pad vertically to even y coordinates since dvdauthor claims
+       // odd values may result in incorrect display.
+       // XXX This may cause overlappping where it wasn't previously
+       // a problem.
        spumux_file << "      <button"
            " x0='" << this_entry.area.left << "'"
-           " y0='" << this_entry.area.top << "'"
+           " y0='" << (this_entry.area.top & ~1) << "'"
            " x1='" << this_entry.area.right << "'"
-           " y1='" << this_entry.area.bottom << "'"
+           " y1='" << ((this_entry.area.bottom + 1) & ~1) << "'"
            " left='" << (i == 0 ? button_count : i) << "'"
            " right='" << 1 + (i + 1) % button_count << "'"
            " up='" << 1 + up_button << "'"
@@ -281,7 +285,7 @@ void dvd_generator::generate_menu_vob(unsigned index,
     const char * argv[] = {
        "/bin/sh", "-c", command.c_str(), 0
     };
-    std::cout << "running " << command << std::endl;
+    std::cout << "INFO: Running " << command << std::endl;
     int command_result;
     Glib::spawn_sync(".",
                     Glib::ArrayHandle<std::string>(
@@ -372,8 +376,9 @@ void dvd_generator::generate(const std::string & output_dir) const
        const unsigned menu_begin = titleset_num * dvdauthor_anonymous_menus_max;
        const unsigned menu_end =
            have_real_menus
-           ? std::min((titleset_num + 1) * dvdauthor_anonymous_menus_max,
-                      menus_.size())
+           ? std::min<unsigned>(
+               (titleset_num + 1) * dvdauthor_anonymous_menus_max,
+               menus_.size())
            : menu_begin + 1;
 
        for (unsigned menu_index = menu_begin;