Testing QBJS tags - Printable Version +- QB64 Phoenix Edition (https://staging.qb64phoenix.com) +-- Forum: QB64 Rising (https://staging.qb64phoenix.com/forumdisplay.php?fid=1) +--- Forum: QBJS, BAM, and Other BASICs (https://staging.qb64phoenix.com/forumdisplay.php?fid=50) +--- Thread: Testing QBJS tags (/showthread.php?tid=1734) Pages:
1
2
|
Testing QBJS tags - bplus - 06-05-2023 [qbjs]'Option _Explicit '_Title "Tessellation 4" ' b+ 2023-05-19 ' Inspired by Charlie's BAM example ' https(colon)//staging.qb64phoenix.com/showthread.php?tid=1646&pid=15772#pid15772 ' b+ 2023-05-09 - Tiling with a pattern ' Tessellation 2 will try color filled with more background black. ' Tessellation 3 Charlie mentions a mirror image for interesting tessellating, ' lets try mirroring both x and y axis. ' ' Tessellation 4 ' Use b key to toggle between ' 1. 3 color tessellation ' 2. 4 color tessellation ' and use c key to toggle between ' 1. a random set of colors ' 2. contrast (a red, a green, a blue and 4th is white) ' 'DefLng A-Z Randomize Timer Screen _NewImage(800, 600, 32) ' full rgb range here _ScreenMove 250, 50 Dim Shared Pix ' Pix is number of pixels to Tile side Dim Shared Scale ' Change a pixel to a bigger square block for not so subtle patterns Dim Shared Tile ' Handle that stores Tile Image in memory to call up with _PutImage Dim Shared B ' Toggle color mode from 3 to 4 and back Dim Shared C ' Toggle Contrast set and Random set of colors ReDim Shared Pal(1 To 4) As _Unsigned Long ' palette to hold 3 or 4 colors Dim K$, t$ Do K$ = InKey$ If K$ = "b" Then B = 1 - B ' toggle coloring mode on a b keypress If K$ = "c" Then C = 1 - C ' toggle coloring mode on a b keypress ' update the title according current b and c toggles If B Then t$ = "4" Else t$ = "3" If C Then t$ = t$ + " Contrasted Colors" Else t$ = t$ + " Random Colors" _Title t$ + ">>> use b to toggle 3|4 colors, c to toggle random|contrast, any other for next screen" MakePalette ' 3 or 4 random colors according to b MakeTile ' create a new random tiling pattern Tessellate ' tile the screen with it _PrintString (740, 580), "ZZZ..." ' Show user we are sleeping awaiting a key press Sleep Loop Until _KeyDown(27) ' quit when detect escape key on sleep Sub MakePalette Dim As Long n, i If B Then n = 4 Else n = 3 ReDim Pal(1 To n) As _Unsigned Long For i = 1 To n If C Then If B Then If i = 4 Then Pal(i) = C3~&(999) Else Pal(i) = C3~&(10 ^ (i - 1) * Int(Rnd * 10)) Else Pal(i) = C3~&(10 ^ (i - 1) * Int(Rnd * 10)) End If Else Pal(i) = C3~&(Int(Rnd * 1000)) End If Next End Sub Sub MakeTile ' make a random tile to Tesselate according to B Mode coloring Pix = Int(Rnd * 9) + 4 ' sets tile size pix X pix or a 4X4 to 12X12 Tile coloring Scale = Int(Rnd * 6) + 4 ' to change pixels to square blocks If Tile Then _FreeImage Tile ' throw old image away Tile = _NewImage(2 * Scale * Pix - 1, 2 * Scale * Pix - 1) ' make new one _Dest Tile ' draw in the memory area Tile not on screen Dim As Long y, x, q For y = 0 To Scale * Pix Step Scale For x = 0 To Scale * Pix Step Scale If B Then q = Int(Rnd * 4) + 1 Else q = Int(Rnd * 3) + 1 Line (x, y)-Step(Scale, Scale), Pal(q), BF ' this should be integer since Tile is Line (2 * Scale * Pix - x - 1, y)-Step(Scale, Scale), Pal(q), BF Line (x, 2 * Scale * Pix - y - 1)-Step(Scale, Scale), Pal(q), BF Line (2 * Scale * Pix - x - 1, 2 * Scale * Pix - y - 1)-Step(Scale, Scale), Pal(q), BF Next Next _Dest 0 End Sub Sub Tessellate ' just covering the screen with our Tile Dim As Long y, x For y = 0 To _Height Step 2 * Scale * Pix For x = 0 To _Width Step 2 * Scale * Pix _PutImage (x, y)-Step(2 * Scale * Pix, 2 * Scale * Pix), Tile, 0 Next Next End Sub Function C3~& (n) ' New (even less typing!) New Color System 1000 colors with up to 3 digits Dim s3$, r As Long, g As Long, b As Long s3$ = Right$("000" + LTrim$(Str$(n)), 3) r = Val(Mid$(s3$, 1, 1)) If r Then r = 28 * r + 3 g = Val(Mid$(s3$, 2, 1)) If g Then g = 28 * g + 3 b = Val(Mid$(s3$, 3, 1)) If b Then b = 28 * b + 3 C3~& = _RGB32(r, g, b) End Function[/qbjs] So what am I doing wrong? RE: Testing QBJS tags - grymmjack - 06-05-2023 @bplus it does not work like a [code] or [qb] block. It works as a youtube like share. Like you have to go to qbjs.org, write something, then share it with the share link like this: I will update the announcement post to reflect this.
RE: Testing QBJS tags - bplus - 06-05-2023 OK but I still can't get the darned thing to work in QBJS. Is it that Functions can't return unsigned long colors? I have one called C3~& that is supposed to return an _RGB32 color Also I don't see Shared as keyword in QBJS so rewrite the code adding all the variables as parameters to subs and functions what a pain! RE: Testing QBJS tags - dbox - 06-05-2023 (06-05-2023, 07:35 PM)bplus Wrote: OK but I still can't get the darned thing to work in QBJS.Hey @bplus! Looks like _PutImage is not handling the Step option as expected. I made a minor change to use a non-step version. Is this more what you expected? RE: Testing QBJS tags - dbox - 06-05-2023 (06-05-2023, 07:35 PM)bplus Wrote: Also I don't see Shared as keyword in QBJS so rewrite the code adding all the variables as parameters to subs and functions what a pain! Shared is supported. RE: Testing QBJS tags - bplus - 06-05-2023 Yeah, that's it! Thanks! So not Step in _PutImage. Surely it works in Line? RE: Testing QBJS tags - dbox - 06-05-2023 (06-05-2023, 08:00 PM)bplus Wrote: Yeah, that's it! Thanks! Yes, Step works in Line. I'll put a fix for step in _PutImage on the list for the 0.8 release. RE: Testing QBJS tags - mnrvovrfc - 06-05-2023 It would be nice if it worked more like the first post of this thread, instead of the base-64 continent I found after purposely hitting "Reply" button on post #4. That's before the first post could be edited. I understand the technical workings about QBJS for security reasons and stuff. RE: Testing QBJS tags - dbox - 06-05-2023 This is a test to see if forum attachments can be used in combination with the qbjs tag: Nope, doesn't work... nothing to see here Working now... The first example is loaded from the attached program.bas: The second example is loaded from the attached custom-font.zip: grymmjack's edit tests below: attachment insert into post button bbcode nested inside qbjs bbcode: [qbjs]attachment=1875[/qbjs] qbjs bbcode original from qbjs.org share (with code arg): qbjs BASIC code wrapped in bbcode: [qbjs] PRINT "Nested code is wrapped by qbjs bbcode" [/qbjs] RE: Testing QBJS tags - bplus - 06-06-2023 Custom font demo fixed for QB64pe run anyway. |