bugfixes; cleanup theme

This commit is contained in:
nakst 2021-10-07 09:51:52 +01:00
parent b6bc221af2
commit 4ad2395977
6 changed files with 53 additions and 15 deletions

View File

@ -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__TEST_STYLE (ES_STYLE_CAST(1385))
private define ES_STYLE_ACCESS_KEY_HINT (ES_STYLE_CAST(1221)) private define ES_STYLE_ACCESS_KEY_HINT (ES_STYLE_CAST(1221))
private define ES_STYLE_ANNOUNCEMENT (ES_STYLE_CAST(1511)) 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_ITEM (ES_STYLE_CAST(1231))
define ES_STYLE_BUTTON_GROUP_SEPARATOR (ES_STYLE_CAST(1233)) define ES_STYLE_BUTTON_GROUP_SEPARATOR (ES_STYLE_CAST(1233))
private define ES_STYLE_CANVAS_SHADOW (ES_STYLE_CAST(1451)) 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_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)) private define ES_STYLE_CHECKBOX_RADIOBOX (ES_STYLE_CAST(1567))
define ES_STYLE_CLEAR_BACKGROUND (ES_STYLE_CAST(1597)) define ES_STYLE_CLEAR_BACKGROUND (ES_STYLE_CAST(1597))
private define ES_STYLE_COLOR_CHOSEN_POINT (ES_STYLE_CAST(1241)) 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_TEXTBOX_BORDERED_MULTILINE (ES_STYLE_CAST(1399))
define ES_STYLE_PANEL_WINDOW_DIVIDER (ES_STYLE_CAST(1343)) define ES_STYLE_PANEL_WINDOW_DIVIDER (ES_STYLE_CAST(1343))
define ES_STYLE_PANEL_WINDOW_WITH_STATUS_BAR_CONTENT (ES_STYLE_CAST(1483)) 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)) define ES_STYLE_PUSH_BUTTON_DANGEROUS (ES_STYLE_CAST(1345))
private define ES_STYLE_TEXTBOX_INLINE (ES_STYLE_CAST(1477)) private define ES_STYLE_TEXTBOX_INLINE (ES_STYLE_CAST(1477))
private define ES_STYLE_PUSH_BUTTON_NORMAL (ES_STYLE_CAST(1347)) 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_HORIZONTAL (ES_STYLE_CAST(1367))
private define ES_STYLE_SCROLLBAR_THUMB_VERTICAL (ES_STYLE_CAST(1369)) private define ES_STYLE_SCROLLBAR_THUMB_VERTICAL (ES_STYLE_CAST(1369))
private define ES_STYLE_SCROLLBAR_PAD (ES_STYLE_CAST(1371)) 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))

View File

@ -196,10 +196,13 @@ int CanvasCallback(EsElement *element, EsMessage *message) {
// TODO Is it safe to pass input to Bochs on this thread? // TODO Is it safe to pass input to Bochs on this thread?
if (message->type == ES_MSG_PAINT) { if (message->type == ES_MSG_PAINT) {
int ox = message->painter->width / 2 - instance->vmemWidth / 2; EsRectangle bounds = EsPainterBoundsInset(message->painter);
int oy = message->painter->height / 2 - instance->vmemHeight / 2; EsRectangle imageBounds = EsRectangleCenter(bounds, ES_RECT_2S(instance->vmemWidth, instance->vmemHeight));
EsRectangle bounds = { ox, ox + instance->vmemWidth, oy, oy + instance->vmemHeight }; EsDrawBitmap(message->painter, imageBounds, instance->vmem, instance->vmemWidth * 4, ES_DRAW_BITMAP_OPAQUE);
EsDrawBitmap(message->painter, bounds, instance->vmem, instance->vmemWidth * 4, 0xFFFF); 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; repaintQueued = false;
} else if (message->type == ES_MSG_KEY_DOWN) { } else if (message->type == ES_MSG_KEY_DOWN) {
if (message->keyboard.scancode == ES_SCANCODE_RIGHT_CTRL) { if (message->keyboard.scancode == ES_SCANCODE_RIGHT_CTRL) {

Binary file not shown.

Binary file not shown.

View File

@ -365,15 +365,17 @@ void EsDrawBitmap(EsPainter *painter, EsRectangle region, uint32_t *sourceBits,
j--; j--;
} }
} else if (mode == ES_DRAW_BITMAP_OPAQUE) { } else if (mode == ES_DRAW_BITMAP_OPAQUE) {
__m128i fillAlpha = _mm_set1_epi32(0xFF000000);
while (j >= 4) { while (j >= 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; destination += 4;
source += 4; source += 4;
j -= 4; j -= 4;
} }
while (j > 0) { while (j > 0) {
*destination = *source; *destination = 0xFF000000 | *source;
destination++; destination++;
source++; source++;
j--; j--;

View File

@ -20,6 +20,9 @@
// Prototyping display: previewing state transitions. // Prototyping display: previewing state transitions.
// TODO Additional features: // 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. // Having to link to the end of a conditional object chain is a bit strange.
// Output styles.header in order of header ID. // Output styles.header in order of header ID.
// Cleaning up unused objects. // Cleaning up unused objects.
@ -342,6 +345,7 @@ struct Step {
struct ExportOffset { struct ExportOffset {
uint64_t objectID; uint64_t objectID;
uint64_t styleObjectID;
uintptr_t offset; uintptr_t offset;
char cPropertyName[PROPERTY_NAME_SIZE]; char cPropertyName[PROPERTY_NAME_SIZE];
uint8_t overrideType; uint8_t overrideType;
@ -414,6 +418,16 @@ ExportOffset *ExportOffsetFindObject(uint64_t id) {
return nullptr; 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) { ExportOffset *ExportOffsetFindProperty(uint64_t objectID, const char *cPropertyName) {
for (uintptr_t i = 0; i < exportOffsets.Length(); i++) { for (uintptr_t i = 0; i < exportOffsets.Length(); i++) {
if (exportOffsets[i].objectID == objectID if (exportOffsets[i].objectID == objectID
@ -1433,6 +1447,18 @@ void InspectorPopulate() {
UIParentPush(inspector); UIParentPush(inspector);
Object *object = ObjectFind(selectedObjectID); 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) { if (object && object->type != OBJ_INSTANCE) {
UIPanelCreate(0, UI_ELEMENT_PARENT_PUSH | UI_PANEL_BORDER | UI_PANEL_MEDIUM_SPACING | UI_PANEL_EXPAND); 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, "Auto", -1)->invoke = InspectorAutoNameObject;
UIButtonCreate(0, UI_BUTTON_SMALL, "Rename", -1)->invoke = InspectorRenameObject; UIButtonCreate(0, UI_BUTTON_SMALL, "Rename", -1)->invoke = InspectorRenameObject;
UIParentPop(); UIParentPop();
snprintf(buffer, sizeof(buffer), "%ld references", referenceCount);
UILabelCreate(0, 0, buffer, -1);
bool inheritWithAnimation = object->type == OBJ_VAR_TEXT_STYLE bool inheritWithAnimation = object->type == OBJ_VAR_TEXT_STYLE
|| object->type == OBJ_LAYER_BOX || object->type == OBJ_LAYER_TEXT || object->type == OBJ_LAYER_PATH || object->type == OBJ_LAYER_BOX || object->type == OBJ_LAYER_TEXT || object->type == OBJ_LAYER_PATH
@ -3122,6 +3150,8 @@ void Export() {
continue; continue;
} }
uint64_t styleObjectID = object->id;
Object *metrics = PropertyFindOrInheritReadObject(object, "metrics"); Object *metrics = PropertyFindOrInheritReadObject(object, "metrics");
Object *textStyle = PropertyFindOrInheritReadObject(object, "textStyle"); Object *textStyle = PropertyFindOrInheritReadObject(object, "textStyle");
Object *appearance = PropertyFindOrInheritReadObject(object, "appearance"); Object *appearance = PropertyFindOrInheritReadObject(object, "appearance");
@ -3208,6 +3238,7 @@ void Export() {
if (!layerObject) continue; if (!layerObject) continue;
ExportOffset exportOffset = {}; ExportOffset exportOffset = {};
exportOffset.styleObjectID = styleObjectID;
exportOffset.objectID = layerObject->id; exportOffset.objectID = layerObject->id;
exportOffset.offset = ftell(output); exportOffset.offset = ftell(output);
exportOffsets.Add(exportOffset); exportOffsets.Add(exportOffset);
@ -3271,6 +3302,8 @@ void Export() {
continue; continue;
} }
uint64_t styleObjectID = object->id;
ExportOffset exportOffset = {}; ExportOffset exportOffset = {};
exportOffset.objectID = object->id; exportOffset.objectID = object->id;
exportOffset.offset = ftell(output); exportOffset.offset = ftell(output);
@ -3292,7 +3325,7 @@ void Export() {
Property *layerProperty = PropertyFind(appearance, cPropertyName, PROP_OBJECT); Property *layerProperty = PropertyFind(appearance, cPropertyName, PROP_OBJECT);
Object *layerObject = ObjectFind(layerProperty ? layerProperty->object : 0); Object *layerObject = ObjectFind(layerProperty ? layerProperty->object : 0);
if (!layerObject) continue; if (!layerObject) continue;
uint32_t exportOffset = ExportOffsetFindObject(layerObject->id)->offset; uint32_t exportOffset = ExportOffsetFindObjectForStyle(layerObject->id, styleObjectID)->offset;
fwrite(&exportOffset, 1, sizeof(exportOffset), output); fwrite(&exportOffset, 1, sizeof(exportOffset), output);
} }
} }