MCPcopy Create free account
hub / github.com/bluescan/tacentview / DoSaveFiletypeMultiFrame

Method DoSaveFiletypeMultiFrame

Src/OpenSaveDialogs.cpp:563–640  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

561
562
563tString Viewer::DoSaveFiletypeMultiFrame()
564{
565 Config::ProfileData& profile = Config::GetProfileData();
566 tString fileTypeName = profile.SaveFileTypeMultiFrame;
567 tFileType fileType = tGetFileTypeFromName(fileTypeName);
568
569 float itemWidth = Gutil::GetUIParamScaled(160.0f, 2.5f);
570
571 ImGui::SetNextItemWidth(itemWidth);
572 if (ImGui::BeginCombo("File Type", fileTypeName.Chr()))
573 {
574 for (tFileTypes::tFileTypeItem* item = FileTypes_SaveMultiFrame.First(); item; item = item->Next())
575 {
576 tFileType ft = item->FileType;
577 bool selected = (ft == fileType);
578
579 tString ftName = tGetFileTypeName(ft);
580 if (ImGui::Selectable(ftName.Chr(), &selected))
581 profile.SaveFileTypeMultiFrame = ftName;
582
583 if (selected)
584 ImGui::SetItemDefaultFocus();
585 }
586
587 ImGui::EndCombo();
588 }
589 ImGui::SameLine();
590 Gutil::HelpMark("Multi-frame output image format.");
591
592 // There are different options depending on what type you are saving as.
593 fileType = tGetFileTypeFromName(profile.SaveFileTypeMultiFrame);
594 tString extension = tGetExtension(fileType);
595 switch (fileType)
596 {
597 case tFileType::GIF:
598 DoSaveGifOptions(true);
599 break;
600
601 case tFileType::WEBP:
602 // @todo This should be using a standard options call like the GIF type.
603 ImGui::Checkbox("Lossy", &profile.SaveFileWebpLossy);
604 ImGui::SetNextItemWidth(itemWidth);
605 ImGui::SliderFloat("Quality / Compression", &profile.SaveFileWebpQualComp, 0.0f, 100.0f, "%.1f");
606 ImGui::SameLine(); Gutil::ToolTip("Image quality percent if lossy. Image compression strength if not lossy"); ImGui::NewLine();
607 ImGui::SetNextItemWidth(itemWidth);
608 ImGui::SliderInt("Frame Duration", &profile.SaveFileWebpDurMultiFrame, 0, 10000, "%d");
609 ImGui::SameLine(); Gutil::ToolTip("In milliseconds."); ImGui::NewLine();
610 if (ImGui::Button("1.0s")) profile.SaveFileWebpDurMultiFrame = 1000; ImGui::SameLine();
611 if (ImGui::Button("0.5s")) profile.SaveFileWebpDurMultiFrame = 500; ImGui::SameLine();
612 if (ImGui::Button("30fps")) profile.SaveFileWebpDurMultiFrame = 33; ImGui::SameLine();
613 if (ImGui::Button("60fps")) profile.SaveFileWebpDurMultiFrame = 16;
614 break;
615
616 case tFileType::APNG:
617 // @todo This should be using a standard options call like the GIF type.
618 ImGui::SetNextItemWidth(itemWidth);
619 ImGui::SliderInt("Frame Duration", &profile.SaveFileApngDurMultiFrame, 0, 10000, "%d");
620 ImGui::SameLine(); Gutil::ToolTip("In milliseconds."); ImGui::NewLine();

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected