From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 32387 invoked from network); 22 Oct 2022 18:23:06 -0000 Received: from 9front.inri.net (168.235.81.73) by inbox.vuxu.org with ESMTPUTF8; 22 Oct 2022 18:23:06 -0000 Received: from mimir.eigenstate.org ([206.124.132.107]) by 9front; Sat Oct 22 14:21:40 -0400 2022 Received: from stockyard ( [172.102.12.72]) by mimir.eigenstate.org (OpenSMTPD) with ESMTPSA id 956dc792 (TLSv1.2:ECDHE-RSA-AES256-SHA:256:NO) for <9front@9front.org>; Sat, 22 Oct 2022 11:21:39 -0700 (PDT) Message-ID: <3A50E8E5B8D51491A6E410FCE21A491F@eigenstate.org> To: 9front@9front.org Date: Sat, 22 Oct 2022 14:21:36 -0400 From: ori@eigenstate.org In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: open-source core ActivityPub over ACPI element-based hosting API-aware control Subject: Re: [9front] [PATCH] plot: fix disc and circle operations Reply-To: 9front@9front.org Precedence: bulk gmail's web interfaces replaces tabs with spaces, so this patch will not apply; can you resend as an attachment? Quoth an2qzavok : > Discs and circles were drawn on screen directly and later erased by > offscreen buffer. > This change puts them in line with other operations, which draw to > offscreen first and to screen when necessary > > diff dfee08d50df674cd76f74320bc9c8bc6a4a95f1e uncommitted > --- a/sys/src/cmd/plot/libplot/circ.c > +++ b/sys/src/cmd/plot/libplot/circ.c > @@ -8,5 +8,5 @@ > rad=SCR(-r); > else > rad=SCR(r); > - ellipse(screen, p, rad, rad, 0, getcolor(e1->foregr), ZP); > + m_circ(p, rad, e1->foregr); > } > --- a/sys/src/cmd/plot/libplot/disk.c > +++ b/sys/src/cmd/plot/libplot/disk.c > @@ -8,5 +8,5 @@ > rad=SCR(-r); > else > rad=SCR(r); > - fillellipse(screen, p, rad, rad, getcolor(e1->foregr), ZP); > + m_disc(p, rad, e1->foregr); > } > --- a/sys/src/cmd/plot/libplot/machdep.c > +++ b/sys/src/cmd/plot/libplot/machdep.c > @@ -34,6 +34,29 @@ > if(offscreen != screen && !buffer) > draw(screen, xlr(Rect(x0, y0, x1+1, y1+1)), getcolor(c), nil, ZP); > } > + > +/* > + * Draw circle at point p with radius rad in color c > + */ > +void > +m_circ(Point p, int rad, int c) > +{ > + ellipse(offscreen, p, rad, rad, 0, getcolor(c), ZP); > + if (offscreen != screen && !buffer) > + ellipse(screen, p, rad, rad, 0, getcolor(c), ZP); > +} > + > +/* > + * Draw disc (filled circle) at point p with radius rad in color c > + */ > +void > +m_disc(Point p, int rad, int c) > +{ > + fillellipse(offscreen, p, rad, rad, getcolor(c), ZP); > + if (offscreen != screen && !buffer) > + fillellipse(screen, p, rad, rad, getcolor(c), ZP); > +} > + > /* > * Draw text between pointers p and q with first character centered at x, y. > * Use color c. Centered if cen is non-zero, right-justified if > right is non-zero. > --- a/sys/src/cmd/plot/libplot/mplot.h > +++ b/sys/src/cmd/plot/libplot/mplot.h > @@ -36,6 +36,8 @@ > */ > #include "../plot.h" > void m_clrwin(int, int, int, int, int); > +void m_circ(Point, int, int); > +void m_disc(Point, int, int); > void m_finish(void); > void m_initialize(char *); > int m_text(int, int, char *, char *, int, int, int);