From 4ad239597782db2f023ee8d03b5489bd0b3923e7 Mon Sep 17 00:00:00 2001 From: nakst <> Date: Thu, 7 Oct 2021 09:51:52 +0100 Subject: [PATCH] bugfixes; cleanup theme --- desktop/styles.header | 16 ++++++++-------- ports/bochs/essence.cc | 11 +++++++---- res/Theme Source.dat | Bin 583368 -> 558600 bytes res/Theme.dat | Bin 29880 -> 29936 bytes shared/common.cpp | 6 ++++-- util/designer2.cpp | 35 ++++++++++++++++++++++++++++++++++- 6 files changed, 53 insertions(+), 15 deletions(-) diff --git a/desktop/styles.header b/desktop/styles.header index 0622847..a639fb3 100644 --- a/desktop/styles.header +++ b/desktop/styles.header @@ -1,3 +1,4 @@ +define ES_STYLE_SEPARATOR_HORIZONTAL (ES_STYLE_CAST(1373)) private define ES_STYLE__TEST_STYLE (ES_STYLE_CAST(1385)) private define ES_STYLE_ACCESS_KEY_HINT (ES_STYLE_CAST(1221)) private define ES_STYLE_ANNOUNCEMENT (ES_STYLE_CAST(1511)) @@ -8,7 +9,13 @@ define ES_STYLE_BUTTON_GROUP_CONTAINER (ES_STYLE_CAST(1229)) define ES_STYLE_BUTTON_GROUP_ITEM (ES_STYLE_CAST(1231)) define ES_STYLE_BUTTON_GROUP_SEPARATOR (ES_STYLE_CAST(1233)) private define ES_STYLE_CANVAS_SHADOW (ES_STYLE_CAST(1451)) +private define ES_STYLE_COLOR_HEX_TEXTBOX (ES_STYLE_CAST(1245)) +private define ES_STYLE_TASK_BAR_BAR (ES_STYLE_CAST(1379)) +private define ES_STYLE_SLIDER_TRACK (ES_STYLE_CAST(1601)) private define ES_STYLE_CHECKBOX_NORMAL (ES_STYLE_CAST(1559)) +private define ES_STYLE_SPLIT_BAR_VERTICAL (ES_STYLE_CAST(1377)) +private define ES_STYLE_WINDOW_TAB_CLOSE_BUTTON (ES_STYLE_CAST(1469)) +private define ES_STYLE_SPLIT_BAR_HORIZONTAL (ES_STYLE_CAST(1375)) private define ES_STYLE_CHECKBOX_RADIOBOX (ES_STYLE_CAST(1567)) define ES_STYLE_CLEAR_BACKGROUND (ES_STYLE_CAST(1597)) private define ES_STYLE_COLOR_CHOSEN_POINT (ES_STYLE_CAST(1241)) @@ -86,6 +93,7 @@ define ES_STYLE_PANEL_WINDOW_BACKGROUND (ES_STYLE_CAST(1341)) define ES_STYLE_TEXTBOX_BORDERED_MULTILINE (ES_STYLE_CAST(1399)) define ES_STYLE_PANEL_WINDOW_DIVIDER (ES_STYLE_CAST(1343)) define ES_STYLE_PANEL_WINDOW_WITH_STATUS_BAR_CONTENT (ES_STYLE_CAST(1483)) +private define ES_STYLE_SLIDER_POINT (ES_STYLE_CAST(1607)) define ES_STYLE_PUSH_BUTTON_DANGEROUS (ES_STYLE_CAST(1345)) private define ES_STYLE_TEXTBOX_INLINE (ES_STYLE_CAST(1477)) private define ES_STYLE_PUSH_BUTTON_NORMAL (ES_STYLE_CAST(1347)) @@ -112,11 +120,3 @@ private define ES_STYLE_SCROLLBAR_BAR_VERTICAL (ES_STYLE_CAST(1365)) private define ES_STYLE_SCROLLBAR_THUMB_HORIZONTAL (ES_STYLE_CAST(1367)) private define ES_STYLE_SCROLLBAR_THUMB_VERTICAL (ES_STYLE_CAST(1369)) private define ES_STYLE_SCROLLBAR_PAD (ES_STYLE_CAST(1371)) -define ES_STYLE_SEPARATOR_HORIZONTAL (ES_STYLE_CAST(1373)) -private define ES_STYLE_SLIDER_POINT (ES_STYLE_CAST(1607)) -private define ES_STYLE_SLIDER_TRACK (ES_STYLE_CAST(1601)) -private define ES_STYLE_SPLIT_BAR_HORIZONTAL (ES_STYLE_CAST(1375)) -private define ES_STYLE_WINDOW_TAB_CLOSE_BUTTON (ES_STYLE_CAST(1469)) -private define ES_STYLE_SPLIT_BAR_VERTICAL (ES_STYLE_CAST(1377)) -private define ES_STYLE_TASK_BAR_BAR (ES_STYLE_CAST(1379)) -private define ES_STYLE_COLOR_HEX_TEXTBOX (ES_STYLE_CAST(1245)) diff --git a/ports/bochs/essence.cc b/ports/bochs/essence.cc index a364c3c..e77102e 100644 --- a/ports/bochs/essence.cc +++ b/ports/bochs/essence.cc @@ -196,10 +196,13 @@ int CanvasCallback(EsElement *element, EsMessage *message) { // TODO Is it safe to pass input to Bochs on this thread? if (message->type == ES_MSG_PAINT) { - int ox = message->painter->width / 2 - instance->vmemWidth / 2; - int oy = message->painter->height / 2 - instance->vmemHeight / 2; - EsRectangle bounds = { ox, ox + instance->vmemWidth, oy, oy + instance->vmemHeight }; - EsDrawBitmap(message->painter, bounds, instance->vmem, instance->vmemWidth * 4, 0xFFFF); + EsRectangle bounds = EsPainterBoundsInset(message->painter); + EsRectangle imageBounds = EsRectangleCenter(bounds, ES_RECT_2S(instance->vmemWidth, instance->vmemHeight)); + EsDrawBitmap(message->painter, imageBounds, instance->vmem, instance->vmemWidth * 4, ES_DRAW_BITMAP_OPAQUE); + EsDrawBlock(message->painter, ES_RECT_4(bounds.l, imageBounds.l, bounds.t, bounds.b), 0xFF000000); + EsDrawBlock(message->painter, ES_RECT_4(imageBounds.r, bounds.r, bounds.t, bounds.b), 0xFF000000); + EsDrawBlock(message->painter, ES_RECT_4(imageBounds.l, imageBounds.r, bounds.t, imageBounds.t), 0xFF000000); + EsDrawBlock(message->painter, ES_RECT_4(imageBounds.l, imageBounds.r, imageBounds.b, bounds.b), 0xFF000000); repaintQueued = false; } else if (message->type == ES_MSG_KEY_DOWN) { if (message->keyboard.scancode == ES_SCANCODE_RIGHT_CTRL) { diff --git a/res/Theme Source.dat b/res/Theme Source.dat index 325cad1e27a0e975cdb64f7352fe3194a9210ea4..927e7506590e8dd1680cd40a749c4cfc364c9ab8 100644 GIT binary patch delta 7082 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 MkgGUZKq2$L0W&Wp4*&oF delta 8806 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 diff --git a/res/Theme.dat b/res/Theme.dat index d2cdbbecf301eba128160c0a6cb4b7fbdebae465..e6cc8c13bb6fa70448009a60539965af44bdd399 100644 GIT binary patch delta 6183 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 M8L0xrL1YK~A68$Kg#Z8m delta 6241 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 4) { - _mm_storeu_si128((__m128i *) destination, _mm_loadu_si128((__m128i *) source)); + _mm_storeu_si128((__m128i *) destination, _mm_or_si128(fillAlpha, _mm_loadu_si128((__m128i *) source))); destination += 4; source += 4; j -= 4; } while (j > 0) { - *destination = *source; + *destination = 0xFF000000 | *source; destination++; source++; j--; diff --git a/util/designer2.cpp b/util/designer2.cpp index dfaf357..fb6bd76 100644 --- a/util/designer2.cpp +++ b/util/designer2.cpp @@ -20,6 +20,9 @@ // Prototyping display: previewing state transitions. // TODO Additional features: +// Method to iterate through all the objects that link to selected object. +// Sorted list in ObjectAddInstanceCommand. +// Hide arrows to colors. // Having to link to the end of a conditional object chain is a bit strange. // Output styles.header in order of header ID. // Cleaning up unused objects. @@ -342,6 +345,7 @@ struct Step { struct ExportOffset { uint64_t objectID; + uint64_t styleObjectID; uintptr_t offset; char cPropertyName[PROPERTY_NAME_SIZE]; uint8_t overrideType; @@ -414,6 +418,16 @@ ExportOffset *ExportOffsetFindObject(uint64_t id) { return nullptr; } +ExportOffset *ExportOffsetFindObjectForStyle(uint64_t id, uint64_t style) { + for (uintptr_t i = 0; i < exportOffsets.Length(); i++) { + if (exportOffsets[i].objectID == id && exportOffsets[i].styleObjectID == style) { + return &exportOffsets[i]; + } + } + + return nullptr; +} + ExportOffset *ExportOffsetFindProperty(uint64_t objectID, const char *cPropertyName) { for (uintptr_t i = 0; i < exportOffsets.Length(); i++) { if (exportOffsets[i].objectID == objectID @@ -1433,6 +1447,18 @@ void InspectorPopulate() { UIParentPush(inspector); Object *object = ObjectFind(selectedObjectID); + size_t referenceCount = 0; + + if (object) { + for (uintptr_t i = 0; i < objects.Length(); i++) { + for (uintptr_t j = 0; j < objects[i].properties.Length(); j++) { + if (objects[i].properties[j].type == PROP_OBJECT + && objects[i].properties[j].object == object->id) { + referenceCount++; + } + } + } + } if (object && object->type != OBJ_INSTANCE) { UIPanelCreate(0, UI_ELEMENT_PARENT_PUSH | UI_PANEL_BORDER | UI_PANEL_MEDIUM_SPACING | UI_PANEL_EXPAND); @@ -1444,6 +1470,8 @@ void InspectorPopulate() { UIButtonCreate(0, UI_BUTTON_SMALL, "Auto", -1)->invoke = InspectorAutoNameObject; UIButtonCreate(0, UI_BUTTON_SMALL, "Rename", -1)->invoke = InspectorRenameObject; UIParentPop(); + snprintf(buffer, sizeof(buffer), "%ld references", referenceCount); + UILabelCreate(0, 0, buffer, -1); bool inheritWithAnimation = object->type == OBJ_VAR_TEXT_STYLE || object->type == OBJ_LAYER_BOX || object->type == OBJ_LAYER_TEXT || object->type == OBJ_LAYER_PATH @@ -3122,6 +3150,8 @@ void Export() { continue; } + uint64_t styleObjectID = object->id; + Object *metrics = PropertyFindOrInheritReadObject(object, "metrics"); Object *textStyle = PropertyFindOrInheritReadObject(object, "textStyle"); Object *appearance = PropertyFindOrInheritReadObject(object, "appearance"); @@ -3208,6 +3238,7 @@ void Export() { if (!layerObject) continue; ExportOffset exportOffset = {}; + exportOffset.styleObjectID = styleObjectID; exportOffset.objectID = layerObject->id; exportOffset.offset = ftell(output); exportOffsets.Add(exportOffset); @@ -3271,6 +3302,8 @@ void Export() { continue; } + uint64_t styleObjectID = object->id; + ExportOffset exportOffset = {}; exportOffset.objectID = object->id; exportOffset.offset = ftell(output); @@ -3292,7 +3325,7 @@ void Export() { Property *layerProperty = PropertyFind(appearance, cPropertyName, PROP_OBJECT); Object *layerObject = ObjectFind(layerProperty ? layerProperty->object : 0); if (!layerObject) continue; - uint32_t exportOffset = ExportOffsetFindObject(layerObject->id)->offset; + uint32_t exportOffset = ExportOffsetFindObjectForStyle(layerObject->id, styleObjectID)->offset; fwrite(&exportOffset, 1, sizeof(exportOffset), output); } }