ref: 812d84e15bf64b6bdad838401acd8c8bbf25342b
parent: 228a7b0eeda3531eb0bf0efa2211e4532af69681
author: sirjofri <sirjofri@sirjofri.de>
date: Sun Feb 9 10:52:30 EST 2025
proper nate debug output, fixes box child calcsize behavior and image rendering
--- a/n_box.c
+++ b/n_box.c
@@ -15,10 +15,13 @@
GUARD(b);
if (!b->sizetocontent) {
r.max = addpt(r.min, b->size);
+ /* tell child its size (important!) */
+ ncallcalcsize(lgetfirst(&b->child), screen, r);
b->r = r;
return r;
}
if (!lgetfirst(&b->child)) {
+ /* greedy */
b->r = r;
return r;
}
--- a/n_image.c
+++ b/n_image.c
@@ -38,7 +38,7 @@
draw(img, i->r, display->white, nil, ZP);
return;
}
- draw(img, i->r, i->image, nil, i->offset);
+ draw(img, i->r, i->image, nil, i->offset); // ZP=i->offset
}
static void
--- a/nate.c
+++ b/nate.c
@@ -6,6 +6,7 @@
int nateborders = 0;
int natetracehit = 0;
+int natedebugfd = -1;
static Nlist rootchain = { nil };
static Nelem* rootelem = nil;
@@ -197,10 +198,12 @@
assert(nelem);
if (nelem->funcs && nelem->funcs->draw) {
+ if (natedebugfd >= 0)
+ fprint(natedebugfd, "DRAW: %s\n", nelem->type);
or = dst->clipr;
- replclipr(dst, 0, nelem->r);
+ //replclipr(dst, 0, nelem->r);
nelem->funcs->draw(nelem, dst);
- replclipr(dst, 0, or);
+ //replclipr(dst, 0, or);
}
}
--- a/nate.h
+++ b/nate.h
@@ -36,6 +36,7 @@
extern int nateborders;
extern int natetracehit;
+extern int natedebugfd;
struct {
Image *red;
--- a/nate_construct.c
+++ b/nate_construct.c
@@ -115,6 +115,8 @@
nctracehit(Nelem *el, int pt)
{
char *name;
+ if (natedebugfd < 0)
+ return;
if (nctracehitlevel < 0)
return;
if (el->funcs && el->funcs->getname)
@@ -121,7 +123,7 @@
name = el->funcs->getname(el);
else
name = el->name;
- fprint(2, "HIT: %*s%c%s%c %c%s%c\n",
+ fprint(natedebugfd, "HIT: %*s%c%s%c %c%s%c\n",
nctracehitlevel * 3, nctracehitlevel?"↘":"", /* indent */
pt ? '(' : ' ', el->type, pt ? ')' : ' ', /* Nelem type */
name?'\"':' ', name ? name : "", name?'\"':' '); /* name */
--- a/test/ntest.c
+++ b/test/ntest.c
@@ -51,11 +51,12 @@
if (initdraw(nil, nil, "nate test") < 0)
sysfatal("initdraw: %r");
- einit(Emouse);
- nateinit();
-
nateborders = 1;
natetracehit = 1;
+ natedebugfd = 2;
+
+ einit(Emouse);
+ nateinit();
Image* red = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, DRed);
Image* green = allocimage(display, Rect(0, 0, 1, 1), screen->chan, 1, DGreen);
--
⑨