Outptstyle fixedp

This commit is contained in:
Torsten Schulz
2024-03-18 18:29:23 +01:00
parent 359f379b18
commit ba976db321
2 changed files with 51 additions and 16 deletions

View File

@@ -204,4 +204,16 @@ main {
.selectBoxes-drop-down-trigger:hover > .selectBoxes-dropdown { .selectBoxes-drop-down-trigger:hover > .selectBoxes-dropdown {
display: inline-block; display: inline-block;
} }
.output-box-format {
border: 1px solid #999;
padding: 1px 6px;
margin-bottom: 0.2em;
border-radius: 3px;
line-height: 2em;
}
.ouput-box-format-self {
background-color: #eaeaea;
}
.output-box-format-other {
background-color: #fff;
}

View File

@@ -473,20 +473,43 @@ void App::imageUploaded(Wt::WFileUpload *fileWidget, std::shared_ptr<Magick::Blo
Magick::readImages(&originalImages, fileWidget->spoolFileName()); Magick::readImages(&originalImages, fileWidget->spoolFileName());
std::list<Magick::Image> previewList; std::list<Magick::Image> previewList;
std::list<Magick::Image> localList; std::list<Magick::Image> localList;
std::transform(originalImages.begin(), originalImages.end(), std::back_inserter(previewList), [](const Magick::Image& img) { return img; });
std::transform(originalImages.begin(), originalImages.end(), std::back_inserter(localList), [](const Magick::Image& img) { return img; }); // Maximale Größen für Vorschau und lokale Liste festlegen
bool isAnimated = !originalImages.empty() && originalImages.front().scene() > 1; int maxPreviewWidth = 100;
if (isAnimated) { int maxPreviewHeight = 100;
Magick::coalesceImages(&previewList, previewList.begin(), previewList.end()); int maxLocalWidth = 500;
Magick::coalesceImages(&localList, localList.begin(), localList.end()); int maxLocalHeight = 500;
}
auto resize = [](std::string size, std::list<Magick::Image> &imagesList) { // Originalgröße des ersten Bildes erhalten
for (auto &frame : imagesList) { int originalWidth = originalImages.front().columns();
frame.resize(size); int originalHeight = originalImages.front().rows();
// Vorschau- und lokale Größe berechnen
int previewWidth = std::min(originalWidth, maxPreviewWidth);
int previewHeight = std::min(originalHeight, maxPreviewHeight);
int localWidth = std::min(originalWidth, maxLocalWidth);
int localHeight = std::min(originalHeight, maxLocalHeight);
// Größenänderung für alle Frames durchführen
for (const auto& img : originalImages) {
// Größenänderung nur durchführen, wenn das Bild größer als die maximalen Größen ist
if (originalWidth > maxPreviewWidth || originalHeight > maxPreviewHeight) {
Magick::Image resizedPreview = img;
resizedPreview.resize(Magick::Geometry(previewWidth, previewHeight));
previewList.push_back(resizedPreview);
} else {
previewList.push_back(img); // Originalgröße beibehalten
} }
};
resize("100x100^", previewList); if (originalWidth > maxLocalWidth || originalHeight > maxLocalHeight) {
resize("500x500^", localList); Magick::Image resizedLocal = img;
resizedLocal.resize(Magick::Geometry(localWidth, localHeight));
localList.push_back(resizedLocal);
} else {
localList.push_back(img); // Originalgröße beibehalten
}
}
Magick::Blob resizedBlob; Magick::Blob resizedBlob;
Magick::writeImages(previewList.begin(), previewList.end(), &resizedBlob); Magick::writeImages(previewList.begin(), previewList.end(), &resizedBlob);
Magick::writeImages(localList.begin(), localList.end(), &(*localImage)); Magick::writeImages(localList.begin(), localList.end(), &(*localImage));
@@ -504,8 +527,6 @@ void App::imageUploaded(Wt::WFileUpload *fileWidget, std::shared_ptr<Magick::Blo
} }
} }
Magick::Image App::scaleImage(const Magick::Image& originalImage, int maxSize) const { Magick::Image App::scaleImage(const Magick::Image& originalImage, int maxSize) const {
int scale = 100; int scale = 100;
int maxDimension = std::max(originalImage.size().width(), originalImage.size().height()); int maxDimension = std::max(originalImage.size().width(), originalImage.size().height());
@@ -613,6 +634,8 @@ void App::renderChatLine(Wt::Json::Object &line, Wt::Json::Object conversation,
item = new Wt::WText(""); item = new Wt::WText("");
} }
item->setToolTip(line["timestamp"]); item->setToolTip(line["timestamp"]);
item->setStyleClass("output-box-format");
item->addStyleClass(writer == "you" ? "ouput-box-format-self" : "output-box-format-other");
item->setInline(false); item->setInline(false);
} }