mirror of https://gitlab.com/nakst/essence
fix file manager thumbnail view with high dpi
This commit is contained in:
parent
a9a5ecc272
commit
e2130fb3ba
|
@ -690,7 +690,7 @@ int ListItemMessage(EsElement *element, EsMessage *message) {
|
|||
if (thumbnail && thumbnail->bits) {
|
||||
EsRectangle destination = EsPainterBoundsClient(message->painter);
|
||||
EsRectangle source = ES_RECT_2S(thumbnail->width, thumbnail->height);
|
||||
destination = EsRectangleFit(destination, source, false);
|
||||
destination = EsRectangleFit(destination, source, true /* allow scaling up */);
|
||||
// EsDrawBlock(message->painter, EsRectangleAdd(destination, ES_RECT_1(2)), 0x20000000);
|
||||
EsDrawBitmapScaled(message->painter, destination, source, thumbnail->bits, thumbnail->width * 4, 0xFF);
|
||||
return ES_HANDLED;
|
||||
|
|
|
@ -1124,6 +1124,7 @@ IconPackImage *IconPackReadImage(uint32_t id, uint32_t size, int *type) {
|
|||
uint32_t variant = 0;
|
||||
|
||||
while (true) {
|
||||
// Look for a perfect match of size and direction.
|
||||
variant = EsBufferReadInt(&iconManagement.pack);
|
||||
if (!variant) break;
|
||||
if ((variant == size || variant == 1) && !rtl) { found = true; break; }
|
||||
|
@ -1131,6 +1132,7 @@ IconPackImage *IconPackReadImage(uint32_t id, uint32_t size, int *type) {
|
|||
}
|
||||
|
||||
if (!found) {
|
||||
// Look for the smallest bigger size.
|
||||
iconManagement.pack.position = start;
|
||||
|
||||
while (true) {
|
||||
|
@ -1163,11 +1165,21 @@ IconPackImage *IconPackReadImage(uint32_t id, uint32_t size, int *type) {
|
|||
}
|
||||
}
|
||||
|
||||
// skipSizeSearch:;
|
||||
|
||||
if (!found) {
|
||||
// Look for the biggest size.
|
||||
iconManagement.pack.position = start;
|
||||
EsBufferReadInt(&iconManagement.pack);
|
||||
uintptr_t previous = 0;
|
||||
|
||||
while (true) {
|
||||
if (!EsBufferReadInt(&iconManagement.pack) && previous) {
|
||||
iconManagement.pack.position = previous;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
|
||||
previous = iconManagement.pack.position;
|
||||
iconManagement.pack.position = EsBufferReadInt(&iconManagement.pack);
|
||||
}
|
||||
}
|
||||
|
||||
EsBufferReadInt(&iconManagement.pack);
|
||||
|
|
|
@ -203,7 +203,8 @@ typedef struct ThemeMetrics {
|
|||
int16_t maximumWidth, maximumHeight;
|
||||
int16_t gapMajor, gapMinor, gapWrap;
|
||||
uint32_t textColor, selectedBackground, selectedText, iconColor;
|
||||
int8_t textAlign, textSize, fontWeight, iconSize;
|
||||
int8_t textAlign, fontWeight;
|
||||
int16_t textSize, iconSize;
|
||||
bool isItalic, ellipsis, layoutVertical;
|
||||
} ThemeMetrics;
|
||||
|
||||
|
@ -1255,7 +1256,8 @@ struct UIStyle {
|
|||
|
||||
// General information.
|
||||
|
||||
uint8_t textSize, textAlign;
|
||||
uint8_t textAlign;
|
||||
uint16_t textSize;
|
||||
uint32_t textColor;
|
||||
EsFont font;
|
||||
|
||||
|
@ -1874,14 +1876,6 @@ UIStyle *ThemeStyleInitialise(UIStyleKey key) {
|
|||
|
||||
// Apply scaling to the metrics.
|
||||
|
||||
int8_t *scale8[] = {
|
||||
&style->metrics->textSize, &style->metrics->iconSize,
|
||||
};
|
||||
|
||||
for (uintptr_t i = 0; i < sizeof(scale8) / sizeof(scale8[0]); i++) {
|
||||
*(scale8[i]) = *(scale8[i]) * key.scale;
|
||||
}
|
||||
|
||||
int16_t *scale16[] = {
|
||||
&style->metrics->insets.l, &style->metrics->insets.r, &style->metrics->insets.t, &style->metrics->insets.b,
|
||||
&style->metrics->clipInsets.l, &style->metrics->clipInsets.r, &style->metrics->clipInsets.t, &style->metrics->clipInsets.b,
|
||||
|
@ -1890,6 +1884,7 @@ UIStyle *ThemeStyleInitialise(UIStyleKey key) {
|
|||
&style->metrics->preferredWidth, &style->metrics->preferredHeight,
|
||||
&style->metrics->minimumWidth, &style->metrics->minimumHeight,
|
||||
&style->metrics->maximumWidth, &style->metrics->maximumHeight,
|
||||
&style->metrics->textSize, &style->metrics->iconSize,
|
||||
};
|
||||
|
||||
for (uintptr_t i = 0; i < sizeof(scale16) / sizeof(scale16[0]); i++) {
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue