1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-09-09 16:20:18 +00:00
Commit graph

269 commits

Author SHA1 Message Date
Matthew Kilgore
4f5af8888e Fix PAINT when border color is not supplied
The border color parameter to PAINT is optional, but sub_paint was not
handling that case. What it should do in that situation is keep painting
until it finds pixels that are not the same color as the original
starting pixel was. Instead it would simply assume border color was
valid and paint until it finds color zero (the default parameter value
when it's not provided).

This was originally reported in QB64Official/qb64#2, and Walt
(@TheJoyfulProgrammer) fixed it in QB64Official/qb64#38. Functionally
this is the same change, however I'm checking `passed & 4` to see
whether a border color was provided rather than `bordercol == NULL`.
The later has problems if the provided bordercolor is zero, which is
allowed since zero is a valid color. The `passed` argument indicates
which of the function arguments were actually provided in the QB64
source that called PAINT.

Additionally, along with the `while (true)` loop that Walt changed I
went ahead and removed the duplication of the sections for each
direction. We now just use a couple of arrays to determine which
direction we're checking and loop over all 4.
2022-11-08 00:59:12 -05:00
Samuel Gomes
56c7936fb4 Address issues mentioned in #216 2022-10-25 04:24:01 +05:30
Samuel Gomes
6a74b3f487 Replace libqb alert, MessageBox & MessageBox2 with tiny file dialogs 2022-10-24 01:24:57 +05:30
Samuel Gomes
93e58baa1d Common dialogs support 2022-10-23 12:57:02 +05:30
Samuel Gomes
bb8bd56689 Merge branch 'main' of https://github.com/a740g/QB64PE 2022-09-17 08:53:38 +05:30
Samuel Gomes
a100a434e4 Fix #175 2022-09-17 08:53:32 +05:30
Matthew Kilgore
84f1165776 Fix _MOUSEMOVE when window is resized
`sub__mousemove` is trying to use `x_scale`, `y_scale`, `x_offset`, and
`y_offset` to calculate where the mouse should be in the event the
window coordinates are different from the screen coordinates.

Unfortunately, all four of those variables are actually never set in the
program. The real scale values and offsets (in the event of
letterboxing) are stored in `environment_2d__` values. This change
switches `sub__mousemove` to simply use the correct values when
calculating the mouse position.

Because `x_scale` and `y_scale` are not used anywhere else I just
removed them completely. I wanted to remove `x_offset` and `y_offset` as
well but there are a few spots that make use of it. It must be a bug,
since they are never assigned values other than zero, but I'm not sure
if the correct fix for the other locations is to use the
`environment_2d__` value or do nothing, so I'm leaving them for now and
we can address them later.
2022-09-10 15:31:22 -04:00
Matthew Kilgore
f03b55808b Remove DPI Awareness on Windows
DPI Awareness allows a program to tell Windows that it will handle
properly scaling itself for the screen's DPI. Thus when a program is DPI
Aware, it will always see the actual screen size. When a program is not
DPI Aware, then Windows will scale the program according to the
selection by the user, and the reported screen size will match the
scaled size rather than the actual screen size.

Commit 189cdb8e added logic to enable DPI Awareness on Windows, but it
was hidden behind a `WINVER` check. This meant it was not actually in
use because at the time QB64 did not set a `WINVER` high enough to
actually enable that code. As such all Windows versions of QB64
including v2.0.2 were not DPI Aware.

Much later-on, Commit 869e361e declared a `_WIN32_WINNT` of `0x0600`,
which seems to have also declared `WINVER` as the same and thus enabled
the DPI Awareness logic. As a consequence, QB64-PE programs no longer
get scaled even though they don't have a way to acquire the current DPI
to do proper scaling themselves.

Since the behavior change was unintentional and proper language support
is not there, we're considering the addition of DPI Awareness a bug. It
will be added back some time later with more language support to allow
it to be properly used.
2022-09-02 23:50:23 -04:00
Matthew Kilgore
41cc1e6569 Integrate the miniaudio backend into the build
This integrates the miniaudio backend, using a new `DEP_AUDIO_MINIAUDIO`
flag to enable it. This will allow consumers to choose which backend to
use.
2022-08-27 14:27:55 -04:00
Roland Heyder
2ec897b75d Step 10: Update remaining stuff
- checks all remaining occurrences of the term 'qb64', some remain untouched, some are renamed according to context
- also added new logo for README.md
- this step does finalize the 'Phoenix Edition' re-branding
2022-08-12 02:54:12 +02:00
Roland Heyder
96fc1eb3a9 Step 5: Update embedded images in libqb.cpp
- replaced default icon image data, which is used, if _ICON is used w/o parameter, but no $EXEICON is specified either (see also Step 1)
- this step completes icon related changes
2022-08-10 20:02:00 +02:00
Matthew Kilgore
cde7afef30 Use libqb_mutex in libqb.cpp
libqb_mutex can replace the existing Mutex handling we do in libqb.cpp
2022-06-11 22:47:06 -04:00
Matthew Kilgore
f99407f251 Revert existing libqb split 2022-06-11 20:42:23 -04:00
SteveMcNeill
ecfa18a109 change numerics to more descriptive constants 2022-05-17 05:04:41 -04:00
SteveMcNeill
8574c1f921 Change to _screenwidth and _screenheight
Having windows call GetSystemMetrics without relying on glutGet, gets rid of the seg fault that can occur at program start up.  screenicon was restored to it's previous state so that larger issues with it can be addressed at a future date.
2022-05-16 11:37:58 -04:00
SteveMcNeill
acbeca81b9 Fix to _desktopwidth, _desktopheight, _screenicon
Fixes the issue as brought up on the forums here: https://qb64phoenix.com/forum/showthread.php?tid=408

Also added a small set of logic so we don't end up inside an endless loop if the screen is hidden (via _SCREENHIDE), or if it doesn't exist for whatever reason.
2022-05-16 07:55:08 -04:00
Matthew Kilgore
fcec53e55b Fix text wrapping on last column with variable width fonts
Currently there is a bug where if a variable width font is in use and
text printed would exactly fit to the end of the row, it is instead
wrapped and printed on the next line.

Ex. You're printing a character that is 10 pixels wide, starting
from position 90 on an image that is 100 pixels wide. This should fix,
but instead your character will be printed on the next line.

The reason this happens is an off by one error, cursor_x (effectively
the X value passed to LOCATE) is one based even when using a variable
width font where cursor_x represents a pixel location. The location that
check if the next character can fit on the screen never handles the base
one, so it ends up treating the ending Y coordinate as one past where it
will actually end, which makes the code thing the print will go past the
edge of the screen.

To fix we simply subtract one before doing the comparison to give us the
actual ending pixel column.
2022-05-06 17:50:07 -04:00
Matthew Kilgore
1aa8d7a42f Run clang-format on ./internal/c/*cpp files 2022-05-06 13:20:30 -04:00
phillvancejr
8f0c08e2ec Added global scope operator :: to the socket bind call to prevent clashes with <functional> std::bind in some builds 2021-11-01 10:21:16 -04:00
Roland Heyder
c48bf6776e Fixed LOC function for files
Will correctly return zero (0) now for just opened but yet untouched files.
2021-10-22 23:51:48 +02:00
Fellippe Heitor
0fac593dd6 Update libqb.cpp to allow manual compilation in WinXP
Oh, well... there's still life for XP.
2021-10-17 03:56:54 -03:00
FellippeHeitor
56aa5e7e53 Try harder to return window_handle 2021-10-16 23:08:13 -03:00
Roland Heyder
ce3c459dad Implements the _Bin$ function
Usage is analog to the legacy OCT$ and HEX$ functions.
2021-10-14 00:17:35 +02:00
Fellippe Heitor
ab1f20eb3b Allow PRINT to show content in console even without a new line
Closes #74
2021-10-04 00:17:21 -03:00
FellippeHeitor
1a3f3f5ad1 Add binary name to error message dialog; closes #157 2021-09-29 23:25:47 -03:00
Ashish Kushwaha
8e69e8cf3b allow 'move' to treated as 'cycle' for _mouseshow 2021-09-14 19:37:08 +05:30
Ashish Kushwaha
0f1dbed8e3
Merge branch 'QB64Team:development' into development 2021-09-12 19:21:01 +05:30
FellippeHeitor
3e4d1fc430 Merge branch 'development' into var-export 2021-08-18 21:28:50 -03:00
Luke Ceddia
27e4ee4770
Detect non-x86 based architectures 2021-08-18 22:07:40 +10:00
FellippeHeitor
e791ca2001 Ensures _ConsoleTitle has time to do its thing. 2021-08-18 00:26:06 -03:00
FellippeHeitor
744bd19107 Fixes race condition between vWatch and _CONSOLETITLE
It was a love triangle with _WindowHandle in the end, it's complicated.
2021-08-18 00:21:03 -03:00
FellippeHeitor
2af2f4e2a1 Improves handling/signaling of INPUT/LINE INPUT in $DEBUG mode. 2021-08-14 21:28:21 -03:00
FellippeHeitor
8dddefd002 Brings debuggee window to foreground when using INPUT. 2021-08-14 17:04:25 -03:00
FellippeHeitor
c41af6961f Prevents checking _WINDOWHANDLE from halting a $CONSOLE app.
Would happen when in conjunction with $SCREENHIDE.
2021-08-13 00:51:32 -03:00
FellippeHeitor
cca1593f79 Switches focus to IDE automatically when breakpoint is reached.
Windows-only.
2021-08-12 23:00:43 -03:00
FellippeHeitor
0bbc60e73e Allows reading program_stop without using _Exit. 2021-08-04 21:12:33 -03:00
FellippeHeitor
01a3c56685 Allows setting any length string variables from the IDE. 2021-08-03 00:36:21 -03:00
Ashish Kushwaha
7e3a60c50b added 'cycle' style in _mouseshow 2021-07-31 11:22:10 +05:30
Luke Ceddia
1e76f237de
Supress SIGPIPE on tcp send 2021-07-31 00:06:09 +10:00
Fellippe Heitor
7e5710a364 Allows _MK$/_CV to deal with _OFFSET
_UNSIGNED _OFFSET too.
2021-07-28 14:26:32 -03:00
FellippeHeitor
231e28c79b Adds method to allow closing the connection with the IDE.
In order to allow $DEBUG to work with programs that call CLEAR, the connection handle used to connect to the IDE is locked by default and cannot be CLOSEd. With this change, the debuggee itself can now unlock the handle and close the link.
2021-07-22 00:18:34 -03:00
FellippeHeitor
30348dd2db Allows a debuggee to call CLEAR while keeping connected to the IDE. 2021-07-21 23:54:30 -03:00
FellippeHeitor
1fa3781a12 Attempt at fixing ENVIRON for Windows.
'Works on my machine'.
2021-07-17 13:27:35 -03:00
Fellippe Heitor
ee4b611056 Adds _EnvironCount 2021-07-17 12:15:00 -03:00
Luke Ceddia
a866fec7f0
Rewrite ENVIRON 2021-07-17 17:56:42 +10:00
Fellippe Heitor
90461eb226 Fixes ENVIRON$() in *nix systems when passing a string. 2021-07-17 01:04:27 -03:00
Fellippe Heitor
ae887507c2 On error, report back to the IDE. ($DEBUG) 2021-07-16 23:18:46 -03:00
Fellippe Heitor
7b853bf9f2 First attempt at implementing Step. 2021-07-11 12:55:49 -03:00
Fellippe Heitor
b59aa4d7af Begins prototyping a $DEBUG metacommand. 2021-07-09 08:08:49 -03:00
what
c622ae9592
Remove 255 char limit for INPUT
Also affects `LINE INPUT`
2021-07-05 19:39:24 -04:00
Zachary Spriggs
f90a45a2cf Allow $CONSOLE:ONLY programs to return _WINDOWHANDLE
We previously only allowed GUI QB64 programs to return a value in _WINDOWHANDLE. Following Microsoft's recommendation for obtaining a console program's handle, we can now return the handle in a $CONSOLE:ONLY program https://docs.microsoft.com/en-us/troubleshoot/windows-server/performance/obtain-console-window-handle
2021-07-02 11:17:32 -04:00
Zachary Spriggs
e799e79012 Add %TEMP% to _DIR$() folder specifications
Adds the %TEMP% directory to `_DIR$()` folder specifications.
2021-06-21 20:25:21 -04:00
Zachary Spriggs
4a66dabf08 Add Program Files & Program Files (x86) to _DIR$()
This change adds the Program Files and Program Files (x86) folder specifications to the `_DIR$()` function.

`Print _Dir$("program files")
Print _Dir$("program files x86")`
2021-06-21 17:01:23 -04:00
Luke Ceddia
bf32a6a0fc
Explicitly set x87 fpu to extended precision mode 2021-06-17 23:51:08 +10:00
Fellippe Heitor
5e05664896 Removes Sleep(0) from qbs_inkey
Addresses #166
2021-05-24 16:19:55 -03:00
Fellippe Heitor
ec747a53c2
Merge pull request #156 from lstricklan/development
Fix writing to SCRN when opened as a file
2021-03-30 13:49:26 -03:00
Lynn Stricklan
445f11fd4c Update libqb.cpp 2021-03-26 11:51:21 -06:00
Zachary Spriggs
46e24587aa
FreeLibrary in func__newimage
Freeing the runtime linked library in `func__newimage` after the call
2021-03-26 08:34:55 -04:00
Zachary Spriggs
20a61cc474
Fix new bug with _Width and _Height
Where the previous bug would only return the console's image size when an image was passed, the new bug made it only ever return 80 for `_Width` and 25 for `_Height` when it should be returning the console's image size if there is no value passed and it is the `_Source`, which it is if we are in a `$Console:Only`.

Here is a code block that demonstrates the bug being fixed:
```Option _Explicit
$Console
Screen _NewImage(640, 480, 32)
_Dest _Console
Width 120, 5
_Dest 0

Print "Hello world"

Print _DesktopWidth, _DesktopHeight
Dim As Long i: i = _NewImage(1280, 720, 32)
Print _Width, _Height
Print _Width(0), _Height(0)
Print _Width(_Console), _Height(_Console)```
2021-03-24 09:38:44 -04:00
Fellippe Heitor
2a476e19e9
Merge pull request #153 from lstricklan/development
Fixes to libqb.cpp for random file record length and to msbin.c for MBF encoding
2021-03-24 01:28:31 -03:00
Zachary Spriggs
ad3afb56b8
Changed #if blocks to be greater than or equal to Vista version 2021-03-24 00:14:19 -04:00
Zachary Spriggs
c727abd667
Check for XP using WINVER in func__newimage and sub__consolefont
This can re-enable `_ConsoleFont` by checking if the version of Windows is greater than XP. Also, for the DPI awareness.
2021-03-24 00:09:33 -04:00
Lynn Stricklan
87c01d0bed Update libqb.cpp
When opening a file for random access, if the LEN is not supplied, it defaults the length correctly, but does not allocate the buffer correctly. The code should reference the record_length in the file struct.
2021-03-23 13:41:59 -06:00
Lynn Stricklan
69ab2d3327 Revert "Update libqb.cpp"
This reverts commit c38716f3b7.
2021-03-23 13:41:59 -06:00
Lynn Stricklan
ac9664e312 Update libqb.cpp
2 changes here:
line 13062: When opening a file for random access, if the LEN is not supplied, it defaults the length correctly, but does not allocate the buffer correctly.  The code should reference the record_length in the file struct.

Changes in lines 15798-15853:  When printing text to the screen, carriage returns in the text are ignored.  In sub_file_print, the code for printing to the screen is modified to honor carriage returns.
2021-03-23 13:41:58 -06:00
Zachary Spriggs
189cdb8e39
Fix bug with DPI, Width, and Height (Win)
Fixes a bug that would make QB64 return the incorrect size monitor/desktop size when the resolution is scaled. Also, the last fix I added that set `_Source` to `_Console` automatically caused an issue with `_Width` and `_Height`, causing them to return only the console's image dimensions rather than the image that is passed.
2021-03-22 15:51:54 -04:00
Zachary Spriggs
3c58f611a3
Fixes bug that frees console_image handle in Clear
Fixes a bug that would free the console_image handle in the freeallimages() function
2021-03-16 15:34:43 -04:00
Zachary Spriggs
141d0db085
Fixed indentation of new commits 2021-02-24 17:07:02 -05:00
Zachary Spriggs
66ea2b794d
Removed "SPRAY" from _MOUSESHOW
"SPRAY" gives the same result as "CROSSHAIR" and so is unnecessary
2021-02-24 15:42:05 -05:00
Zachary Spriggs
a3141fc425
Adding "WAIT", "HELP", and "SPRAY" to _MOUSESHOW 2021-02-24 15:38:47 -05:00
Fellippe Heitor
0d92432fbf Fixes _SCREENY for the mac. 2021-02-09 13:52:58 -03:00
Fellippe Heitor
37ea325cfa Reenables _SCREENX/SCREENY for macOS only. 2021-02-09 09:08:57 -03:00
Luke Ceddia
bb3f5d3712
Revert "Enables _SCREENX/_SCREENY for macOS/Linux."
This reverts commit d4a3d7f721.
2021-02-09 17:34:10 +11:00
Fellippe Heitor
75642c31dc Merge branch 'development' into IdeTweaks 2021-02-07 22:55:58 -03:00
Roland Heyder
ac33be345d
Allow type symbols in numeric DATA constants.
Done for the sake of retrocompatibility. Although those symbols are simply ignored, as the type is determined by the variable types given at the respective READ statements.
2021-02-07 22:56:08 +01:00
Fellippe Heitor
d4a3d7f721 Enables _SCREENX/_SCREENY for macOS/Linux. 2021-02-07 11:54:52 -03:00
Fellippe Heitor
4824f9c67b Should be the same for Windows. 2021-01-27 22:19:32 -03:00
Fellippe Heitor
e273baa0dd Reset EOF when SEEK is used. 2021-01-27 22:17:26 -03:00
Luke Ceddia
3f2f35b546
Fix some error(7) that should be error(6) 2021-01-24 23:41:55 +11:00
Luke Ceddia
c62568008d
Add _ERRORMESSAGE$ 2021-01-17 23:54:15 +11:00
Luke Ceddia
caa96bd614
Tidy up generation of ansi sequences 2021-01-09 00:07:27 +11:00
Luke Ceddia
9634243b95
Merge branch 'development' into nix-terminal 2021-01-08 23:59:51 +11:00
FellippeHeitor
1d07a3c802 Fixes ENVIRON$() to automatically add CHR$(0) to strings passed.
Closes #79
2020-10-18 01:14:25 -03:00
Luke Ceddia
1fc89fc750 Disable linux clipboard if not in gui mode 2020-07-15 20:36:00 +10:00
SteveMcNeill
5fdcf9f583 Fix to _LOADFONT for Windows
Before we strip off the requirements (like "monospace" and such), we should first see if the font exists on the drive, since we call the routine recursively looking for it.
2020-07-05 09:47:04 -04:00
NEONTEC75
34bac5a168 Added tiling support to PAINT. 2020-05-24 03:53:42 +04:00
Fellippe Heitor
997773a1d1 Fixes startup crash on macOS as described on #32 2020-02-18 10:39:31 -03:00
FellippeHeitor
05fdc4b00e Fixes internal calls to WIDTH after WIDTH for $CONSOLE was added.
Parameter 'int32 passed' moved to last position. Also: fixes RUN to (i) restore VIEW PRINT and (ii) clear keyboard buffers.
2020-02-08 18:03:43 -03:00
Fellippe Heitor
44c80201f2 Gets _DEFLATE$ and _INFLATE$ to work on macOS. 2020-01-18 17:50:24 -03:00
Fellippe Heitor
20b2ec46db Replaces CLS for terminal and enables bg color 2020-01-10 05:59:09 -03:00
Fellippe Heitor
24c2fd8ad8 Adds LOCATE support for *nix terminals 2020-01-10 05:42:22 -03:00
Fellippe Heitor
04d4ad569d Color support for *nix terminals 2020-01-10 05:23:39 -03:00
Fellippe Heitor
bcc05e8b15
Merge pull request #118 from Galleondragon/rename-zlib-folder
Renames zlib's folder so it can be updated without the hassle later on.
2020-01-03 02:46:17 -03:00
FellippeHeitor
8708aa73b0 If it looks stupid but works, is it really stupid? Closes #90 2020-01-03 00:36:14 -03:00
FellippeHeitor
51710ddcd3 Renames zlib's folder so it can be updated without the hassle later on. 2020-01-02 23:00:51 -03:00
FellippeHeitor
7c9eafbadb Replaces _TOGGLE_(KEY)LOCK with _(KEY)LOCK ON/OFF/_TOGGLE. Also:
- Changes CFont to sub__consolefont and func_CInp to func_cinp, in alignment with the rest of libqb/qbx.
- Adds stubs to all new console functionality, so we can still ship for other OSes with no bigger issues.
- Adds new keywords to syntax highlighter.
2020-01-02 19:55:58 -03:00
FellippeHeitor
114bd7b5a8 Adds stubs for _INFLATE$ and DEFLATE$ for OSes other than Windows.
These will return the unchanged text$ passed for now.
2020-01-02 17:35:02 -03:00
flukiluke
fe920f921b
Merge pull request #114 from Galleondragon/add-assert
Adds $ASSERTS, $ASSERTS:CONSOLE and _ASSERT condition[, message$]
2020-01-02 19:55:55 +11:00
flukiluke
37d19a9809
Merge pull request #92 from ghost/x11-clipboard-fix
Fix X11 BadAtom errors that prevent IDE launch
2020-01-02 14:20:22 +11:00
FellippeHeitor
49f265f1c2 Adds $ASSERTS, $ASSERTS:CONSOLE and _ASSERT condition[, message$] 2020-01-01 18:20:30 -03:00