# Description of Changes This pull request includes several updates to the Docker configuration and Java application UI scaling. The changes enhance environment variable management, dependency installation, and UI responsiveness to different screen sizes. ### Docker Configuration Updates: * Added new environment variables `STIRLING_PDF_DESKTOP_UI`, `PYTHONPATH`, `UNO_PATH`, and `URE_BOOTSTRAP` to `Dockerfile` and `Dockerfile.fat` to improve the configuration and integration of the LibreOffice environment. [[1]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557L38-R46) [[2]](diffhunk://#diff-571631582b988e88c52c86960cc083b0b8fa63cf88f056f26e9e684195221c27L40-R49) * Updated the `CMD` instruction in `Dockerfile` and `Dockerfile.fat` to run both the Java application and `unoserver` simultaneously. [[1]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557L87-R96) [[2]](diffhunk://#diff-571631582b988e88c52c86960cc083b0b8fa63cf88f056f26e9e684195221c27L87-R100) * Modified the `RUN` instruction to include additional Python dependencies and setup a virtual environment. [[1]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557L68-R81) [[2]](diffhunk://#diff-571631582b988e88c52c86960cc083b0b8fa63cf88f056f26e9e684195221c27R72-R86) ### Workflow Enhancements: * Added `STIRLING_PDF_DESKTOP_UI` environment variable to the GitHub Actions workflows (`PR-Demo-Comment.yml` and `push-docker.yml`) to ensure consistent environment settings. [[1]](diffhunk://#diff-145fe5c0ed8c24e4673c9ad39800dd171a2d0a2e8050497cff980fc7e3a3df0dR106) [[2]](diffhunk://#diff-76056236de05155107f6a660f1e3956059e37338011b8f0e72188afcb9b17b6fR41) ### Java Application UI Scaling: * Introduced `UIScaling` utility to dynamically adjust the size of UI components based on screen resolution in `DesktopBrowser` and `LoadingWindow` classes. [[1]](diffhunk://#diff-dff83b0fe53cba8ee80dc8cee96b9c2bfec612ec1f2c636ebdf22dedb36671e8L218-R219) [[2]](diffhunk://#diff-dff83b0fe53cba8ee80dc8cee96b9c2bfec612ec1f2c636ebdf22dedb36671e8L267-R270) [[3]](diffhunk://#diff-3e287daf297213b698b3c94d6e6ed4aae139d570ba6b115da459d72b5c36c42fL44-R64) [[4]](diffhunk://#diff-3e287daf297213b698b3c94d6e6ed4aae139d570ba6b115da459d72b5c36c42fL86-R102) * Improved the loading of icons by using the `UIScaling` utility for better visual quality. --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details. --------- Co-authored-by: pixeebot[bot] <104101892+pixeebot[bot]@users.noreply.github.com> Co-authored-by: a <a>
68 lines
2.3 KiB
Java
68 lines
2.3 KiB
Java
package stirling.software.SPDF.utils;
|
|
|
|
import java.awt.*;
|
|
|
|
import javax.swing.*;
|
|
|
|
public class UIScaling {
|
|
private static final double BASE_RESOLUTION_WIDTH = 1920.0;
|
|
private static final double BASE_RESOLUTION_HEIGHT = 1080.0;
|
|
|
|
public static double getWidthScaleFactor() {
|
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
|
return screenSize.getWidth() / BASE_RESOLUTION_WIDTH;
|
|
}
|
|
|
|
public static double getHeightScaleFactor() {
|
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
|
return screenSize.getHeight() / BASE_RESOLUTION_HEIGHT;
|
|
}
|
|
|
|
public static int scaleWidth(int value) {
|
|
return (int) Math.round(value * getWidthScaleFactor());
|
|
}
|
|
|
|
public static int scaleHeight(int value) {
|
|
return (int) Math.round(value * getHeightScaleFactor());
|
|
}
|
|
|
|
public static Dimension scale(Dimension dim) {
|
|
return new Dimension(scaleWidth(dim.width), scaleHeight(dim.height));
|
|
}
|
|
|
|
public static Insets scale(Insets insets) {
|
|
return new Insets(
|
|
scaleHeight(insets.top),
|
|
scaleWidth(insets.left),
|
|
scaleHeight(insets.bottom),
|
|
scaleWidth(insets.right));
|
|
}
|
|
|
|
public static Font scaleFont(Font font) {
|
|
// For fonts, we'll use the smaller scale factor to ensure readability
|
|
double scaleFactor = Math.min(getWidthScaleFactor(), getHeightScaleFactor());
|
|
return font.deriveFont((float) (font.getSize() * scaleFactor));
|
|
}
|
|
|
|
// Utility method for aspect ratio aware icon scaling
|
|
public static Image scaleIcon(Image icon, int targetWidth, int targetHeight) {
|
|
if (icon == null) return null;
|
|
|
|
double widthScale = getWidthScaleFactor();
|
|
double heightScale = getHeightScaleFactor();
|
|
|
|
int scaledWidth = (int) Math.round(targetWidth * widthScale);
|
|
int scaledHeight = (int) Math.round(targetHeight * heightScale);
|
|
|
|
// Maintain aspect ratio for icons
|
|
double aspectRatio = (double) icon.getWidth(null) / icon.getHeight(null);
|
|
if (scaledWidth / scaledHeight > aspectRatio) {
|
|
scaledWidth = (int) (scaledHeight * aspectRatio);
|
|
} else {
|
|
scaledHeight = (int) (scaledWidth / aspectRatio);
|
|
}
|
|
|
|
return icon.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH);
|
|
}
|
|
}
|