mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-22 06:45:09 +00:00
114 lines
4.4 KiB
Text
114 lines
4.4 KiB
Text
The [[$RESIZE]] [[Metacommand|metacommand]] determines if a program window can be resized by the user.
|
|
|
|
|
|
{{PageSyntax}}
|
|
: [[$RESIZE]]:{ON|OFF|STRETCH|SMOOTH}
|
|
|
|
|
|
{{PageDescription}}
|
|
* $RESIZE:ON is used to allow the program window to be resized by a program user. Otherwise it cannot be changed.
|
|
* $RESIZE:OFF ('''default''') is used when the program's window size cannot be changed by the user.
|
|
* $RESIZE:STRETCH the screen will be stretched to fit the new window size with a 1 to 1 ratio of width and height.
|
|
* $RESIZE:SMOOTH the screen will be stretched also, but with linear filtering applied to the pixels.
|
|
|
|
|
|
==Availability==
|
|
* '''Version 1.000 and up'''.
|
|
|
|
|
|
{{PageExamples}}
|
|
''Example:'' Resizing a program screen when the user changes it without clearing the entire screen image:
|
|
{{CodeStart}}
|
|
{{Cl|$RESIZE}}:ON
|
|
|
|
{{Cl|SCREEN}} {{Cl|_NEWIMAGE}}(160, 140, 32)
|
|
{{Cl|_DELAY}} 0.1
|
|
{{Cl|_SCREENMOVE}} 20, 20
|
|
{{Cl|_DISPLAY}}
|
|
|
|
' CLEAR _RESIZE FLAG BY READING IT ONCE
|
|
temp& = {{Cl|_RESIZE (function)|_RESIZE}}
|
|
|
|
DO
|
|
|
|
{{Cl|_LIMIT}} 60
|
|
|
|
{{Cl|IF...THEN|IF}} CheckResize({{Cl|_SOURCE}}) = -1 {{Cl|THEN}}
|
|
{{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} 10
|
|
{{Cl|CIRCLE}} ({{Cl|RND}} * {{Cl|_WIDTH (function)|_WIDTH}}(0) - 1, {{Cl|RND}} * {{Cl|_HEIGHT}}(0) - 1), {{Cl|RND}} * 100 + 5, {{Cl|_RGB32}}({{Cl|RND}} * 255, {{Cl|RND}} * 255, {{Cl|RND}} * 255)
|
|
{{Cl|NEXT}}
|
|
{{Cl|ELSE}}
|
|
{{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} 200
|
|
{{Cl|PSET}} ({{Cl|RND}} * {{Cl|_WIDTH (function)|_WIDTH}}(0) - 1, {{Cl|RND}} * {{Cl|_HEIGHT}}(0) - 1), {{Cl|_RGB32}}({{Cl|RND}} * 255, {{Cl|RND}} * 255, {{Cl|RND}} * 255)
|
|
{{Cl|NEXT}}
|
|
{{Cl|END IF}}
|
|
|
|
{{Cl|_DISPLAY}}
|
|
|
|
k& = {{Cl|_KEYHIT}}
|
|
|
|
{{Cl|LOOP}} {{Cl|UNTIL}} k& = 27 {{Cl|OR (boolean)|OR}} k& = 32
|
|
|
|
{{Cl|SYSTEM}}
|
|
|
|
|
|
|
|
' *************************************************************************************************
|
|
' * *
|
|
' * CheckResize: This FUNCTION checks if the user resized the window, and if so, recreates the *
|
|
' * ORIGINAL SCREEN image to the new window size. *
|
|
' * *
|
|
' * Developer Note: You must use $RESIZE:ON, $RESIZE:SMOOTH, or $RESIZE:SMOOTH at *
|
|
' * the beginning of your project for this to work. *
|
|
' * This FUNCTION only works in QB64 version 1.000 and up. *
|
|
' * *
|
|
' *************************************************************************************************
|
|
{{Cl|FUNCTION}} CheckResize (CurrentScreen {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|LONG}})
|
|
|
|
' *** Define local variable for temporary screen
|
|
{{Cl|DIM}} TempScreen {{Cl|AS}} {{Cl|_UNSIGNED}} {{Cl|LONG}}
|
|
|
|
CheckResize = 0
|
|
|
|
' *** Check to see if the user resized the window. If so, change the SCREEN image to the correct size.
|
|
{{Cl|IF...THEN|IF}} {{Cl|_RESIZE (function)|_RESIZE}} {{Cl|THEN}}
|
|
|
|
' *** First, create a copy of the current {{Cl|SCREEN}} image.
|
|
TempScreen = {{Cl|_COPYIMAGE}}(CurrentScreen, 32)
|
|
|
|
' *** Set the {{Cl|SCREEN}} to the copied image, releasing the current SCREEN image.
|
|
{{Cl|SCREEN}} TempScreen
|
|
|
|
' *** Remove ({{Cl|TIMER (statement)|FREE}}) the original {{Cl|SCREEN}} image.
|
|
{{Cl|_FREEIMAGE}} CurrentScreen
|
|
|
|
' *** Create a new "original" {{Cl|SCREEN}} image.
|
|
CurrentScreen = {{Cl|_NEWIMAGE}}({{Cl|_RESIZEWIDTH}}, {{Cl|_RESIZEHEIGHT}}, 32)
|
|
|
|
' *** Set the {{Cl|SCREEN}} to the new "original" image, releasing the copied {{Cl|SCREEN}} image.
|
|
{{Cl|SCREEN}} CurrentScreen
|
|
|
|
' {{Cl|DRAW}} PREVIOUS {{Cl|SCREEN}} ON THE NEW ONE
|
|
{{Cl|_PUTIMAGE}} (0, 0), TempScreen, CurrentScreen
|
|
|
|
{{Cl|_DISPLAY}}
|
|
|
|
' *** Remove ({{Cl|TIMER (statement)|FREE}}) the copied {{Cl|SCREEN}} image.
|
|
{{Cl|_FREEIMAGE}} TempScreen
|
|
|
|
' *** Tell the caller there was a resize
|
|
CheckResize = -1
|
|
|
|
{{Cl|END IF}}
|
|
|
|
|
|
{{Cl|END FUNCTION}}
|
|
{{CodeEnd}}{{small|Code by waltersmind}}
|
|
|
|
|
|
{{PageSeeAlso}}
|
|
* [[_RESIZE]], [[_RESIZE (function)]]
|
|
* [[_RESIZEWIDTH]], [[_RESIZEHEIGHT]] {{text|(functions return the requested dimensions)}}
|
|
|
|
|
|
{{PageNavigation}}
|