Example

Character Data Tools

7

SP4CEBAR 2022-11-09 20:49 (Edited)

read what's new in this version

This library includes tools for transforming pixels in characters, and tools for drawing shapes.

All character transformations are performed directly on the data (without any transcoding) for optimal speed

these tools will only perform character transformations on single characters (8x8 pixels)

'S U B P R O G R A M S   I N   T H I S   L I B R A R Y
'- CHARACTERS
'  - A_CHAR(C,A)           : GET THE ADDRESS (A) OF CHARACTER (C)
'  - W_CHAR(C,BMAP())      : SET ALL PIXELS OF CHARACTER (C) TO AN 8X8 PIXEL ARRAY (BMAP())
'  - R_CHAR(C,BMAP())      : GET AN 8X8 PIXEL ARRAY (BMAP()) OF ALL PIXELS IN CHARACTER (C)
'  - W_PIXEL(C,IX,IY,V)    : SET THE PIXEL (IX,IY) OF CHARACTER (C) TO COLOR V
'  - R_PIXEL(C,IX,IY,V)    : GET THE COLOR (V) OF CHARACTER (C) AT PIXEL (IX,IY)
'  - DISP_BMP(X0,Y0,IMG()) : DISPLAY THE 8X8 PIXEL ARRAY (IMG()) AT CELL (X0,Y0)
'- CHARACTER TRANSFORMATIONS
'  - CHAR_SHIFT_X(C,V)          : SHIFT CHARACTER (C) HORIZONTALLY BY (V) PIXELS
'  - CHAR_SHIFT_Y(C,V)          : SHIFT CHARACTER (C) VERTICALLY   BY (V) PIXELS
'  - CHAR_FLIP_X(C)             : FLIP  CHARACTER (C) HORIZONTALLY
'  - CHAR_FLIP_Y(C)             : FLIP  CHARACTER (C) VERTICALLY
'  - CHAR_FLIP_DL(C)            : FLIP  CHARACTER (C) DIAGONALLY LEFT-UP
'  - CHAR_FLIP_DR(C)            : FLIP  CHARACTER (C) DIAGONALLY RIGHT-UP
'  - CHAR_ROT_R(C)              : ROTATE CHARACTER (C) CLOCKWISE
'  - CHAR_ROT_L(C)              : ROTATE CHARACTER (C) ANTI-CLOCKWISE
'- MATRIX
'  - MATRIX_TRANSFORM(C0,C1,A,  : SHIFT(DX,DY), SCALE(S), AND ROTATE(A) AROUND PIVOT(PX,PY)
'    S,PX,PY,DX,DY)             : SOURCE CHARACTER (C0) TO TARGET CHARACTER (C1)
'- PIXEL COPY
'  - COPYO3(X0,Y0,X1,Y1,X2,Y2,  : LIKE BG COPY BUT COPIES PIXELS FROM X0 Y0, X1 Y1 TO X2 Y2
'    C0,C1)                     : WITH CHARACTER OFFSETS C0 FOR X0,Y0,X1,Y1 AND C1 FOR X2,Y2
'  - OVERLAY2(A0,C0,C1)         : OVERLAYS PIXEL BYTES (C0,C1) ON ADDRESS (A0)'S PIXELS
'- CORE ALGORITHMS AND FUNNY BUGS
'  - CHAR_TRANSFORMER_A(C,T0,T1): THE CORE OF DIAGONAL FLIP AND CHARACTER ROTATION
'  - CHAR_TRANSFORMER_B(C,T0,T1): DOES THE SAME AS THE PREVIOUS, BUT IT WORKS DIFFERENTLY
'  - CHAR_SHIFT_Y_C(C,V)        : "CHAR_SHIFT_Y" BUT THE PALLETTE INVERTS (FUNNY BUG)
'  - CCOP6O(C0,C22,X22,Y22,W,H,CXXX0,CY0,CXXX1,CY1) : THE CORE OF "COPYO3"
'- POINTS AND SHAPES
'  - VIEW_CHARACTERS(X,Y,C0,C1) : PRINT THE CHARACTERS (C0 TO C1) AT CELL (X,Y)
'  - PLOT(X,Y,C)                : PLOT A POINT AT PIXEL (X,Y) WITH COLOR (C (0-3))
'  - PLOT_FASTER(X,Y,C0,C1)     : LIKE PLOT BUT THE TWO C BITS HAVE A VARIABLE EACH (C0,C1)
'  - LINE(X1,Y1,X2,Y2,C)        : DRAW A LINE FROM (X1,Y1) TO (X2,Y2) WITH COLOR (C (0-3))
'  - LINE_SEGMENTED(X1,Y1,X2,Y2,C)  LIKE LINE BUT DRAWS HORIZONTAL SEGMENTS WHERE POSSIBLE
'  - CIRCLE(X1,Y1,X2,Y2,C)      : DRAW A CIRCLE    IN (X1,Y1) (X2,Y2) WITH COLOR (C (0-3))
'  - CIRCLE_SOLID(CX,CY,R,C)    : SOLID CIRCLE:CENTER (CX,CY) RADIUS (R)   COLOR (C (0-3))
'  - BOX(X1,Y1,X2,Y2,C)         : DRAW A BOX       IN (X1,Y1) (X2,Y2) WITH COLOR (C (0-3))
'  - BAR(X1,Y1,X2,Y2,C)         : DRAW A SOLID BAR IN (X1,Y1) (X2,Y2) WITH COLOR (C (0-3))
'  - MANHATTAN(X,Y,R,C)         : DRAW A SOLID DIAMOND AT (X,Y) WITH COLOR (C) AND SIZE (R)
'  - TRIANGLE(X0,Y0,X1,Y1,X2,Y2,C) DRAW A SOLID TRIANGLE (X0,Y0)(X1,Y1)(X2,Y2) WITH COLOR C
'  - SUB HLINE(X0,Y,X1,C)       : DRAW A HORISZONTAL LINE FROM (X0,Y) TO (X1,Y) WITH COLOR C
'  - SUB HLINE_FASTER(X0,Y,X1,C0,C1,C0L,C1L): LIKE HLINE BUT YOU NEED TO DEFINE:
'    - C0=C MOD 2
'    - C1=C\2
'    - C0L=C0*255
'    - C1L=C1*255


Timo 2022-11-10 17:30

Just watching the example animations is super enjoyable :)


SP4CEBAR 2022-11-11 16:15

Thank you :D


J.Koher 2022-11-24 17:46

Very nice!


SP4CEBAR 2022-12-09 15:39 (Edited)

Update:


SP4CEBAR 2023-01-10 12:33 (Edited)

Update:


SP4CEBAR 2023-01-16 10:43 (Edited)

Update:


Log in to reply.