Code archives/Graphics/Text box WRAP

This code has been declared by its author to be Public Domain code.

Download source code

Text box WRAP by skn32002
This is a something i made a while back, it was my first ever usefull thing made in blitz,.. so it is still a little buggy perhaps. It allows Text to be wraped, listed, scrolled. You can have multiple lists, wraps. Each line can be made up od any RGB colors. only requires implimentation of 5 functions, and your setup :)

dont blame me, this was an early development
AppTitle "Text Box function version 2"
Graphics 640,480,32,1
;||  Title: TEXT BOX function Version 2
;||  Written by: Jonahtan Pittock (skn3)
;||   www.skn3.com


;This is a text box function. It     
;Requires no external graphics files, and      
;You can customize its every feature.            
;You can have as many text            
;box's as you want, just               
;remeber memory factor               
;Each text entry is stored as            
;a type instance and can have custom          
;colors. Written by me free for you ......           
;www.acoders.com |-| skn3.acoders.com 

Type scrollbar
	Field ID$
	Field wtext$
	Field mode$                                                
	Field x                          
	Field y                          
	Field width                      
	Field height
	
	Field ent 
	Field top_arrow                  
	Field bottom_arrow 
	                     
	Field font
	Field font_colorR				 
	Field font_colorG				 
	Field font_colorB
	
	Field line_ColorR                
	Field line_ColorG                
	Field line_ColorB  
	              
	Field window_colorR              
	Field window_colorG              
	Field window_colorB  
	            
	Field scroll_bar_colorR          
	Field scroll_bar_colorG          
	Field scroll_bar_colorB  
	        
	Field scroll_button_colorR       
	Field scroll_button_colorG       
	Field scroll_button_colorB    
	
	Field lines_width
	Field lines_height					 
	Field line_index
	Field line_top
	Field lines_Xpointer
	Field lines_Ypointer
	Field lines_start
	Field lines_text$
	Field lines_scan
	
	Field lines_temp$
	Field lines_tempR				 
	Field lines_tempG				 
	Field lines_tempB
	Field lines_color_count
	                                  
	Field lines_flag				 
	Field lines_add_flag			 
	Field lines_next				 			 				 
                 
	Field sbar_bar_y#
	Field sbar_tempy
	Field sbar_height#
	Field sbar_bar_height#
	Field sbar_lines_total
	Field sbar_flag
	Field sbar_move_flag
	Field sbar_move_amount
End Type


;*************************************************************************************************************************************************
;* --->Adding a window																											       *
;* each window must be created in order of how you want them drawn																	 *
;* for example, if you want a chat window ontop of a names list window,													            	 *
;* create the names list window, then the chat window																				 *
;*																																	 *
;* add_window(x,y,width,height,ID,mode,fontsize,font,borderR,borderG,borderB,windowR,windowG,windowB,scrollbarR,scrollbarG,scrollbarB,buttonR,buttonG,buttonB) *
;* 																																	 *
;* The ID parameter is very important, because when you want to re-render it, or add text 											 *
;* you must give the Function the name of the window you are wanting to update, and this is the ID.                                              *
;* IMPORTANT!!!                                                                                                                                  *
;* 	dont call any window "global" as this is used by the function                                                                                *
;*  dont change any of the windows parameters once it has been created! (this will result in unusual text wraps and other strange effects)	 *
;* 																																	 *
;* MODES																															 *
;* "wrap" - this will wrap the text , if a sentance is too long then it will carry it on to the next line							 *
;* "nowrap" - this will write the text regardless of the width of your window, so if the text is too long it will be cut off (NOT WORKING!)				 *
;*************************************************************************************************************************************************
add_window(10,10,500,400,"window","wrap",17,"arial",255,255,255,255,255,255,0,0,0,0,0,0,50,50,50)



;*********************************************************************************************
;* --->Adding text to a speciffic window                                                     *
;* To add text to a speciffic window, you need to surply a string,ID, and red,green,and blue *
;* parameters. Each text added can have a seperate color. 									 *
;* The ID must be the nameID of one of the windows   										 *
;*																							 *
;* add_text(string$,windowID$)														 *
;* 																						     *
;* --->Adding text to all windows															 *
;* to add text to all windows with 1 function call, simply replace the windowID 		     *
;* with the word "global"																     *
;*																							 *
;* add_text(string$,"global")															 *
;*																							 *
;* IMPORTANT !!																				 *
;* when you add text, you must then render_window for it to update the totals otherwise		 *
;* scrolling will not work properly	
;To use colors simply add in your string  "[c]RGB TEXT_GOES_HERE[c]														 *
;*********************************************************************************************
add_text("written","global")
add_text("In 2001","global")
add_text("testing testing testing testing testing testing [c]255,0,0 Apocalyptic [c] [c]60,60,255 Coders [c] [c]0,255,0 testing again[c]","global")
add_text("www.acoders.com","global")
add_text("[c]255,0,0 RED[c][c]0,255,0 GREEN[c][c]0,0,255 BLUE[c][c]80,80,80 This is a long test line so i can fully test the test wrap feature, lets hope it works now. Thank you for viewing my text box object, please give feedback and send bug reports to[c][c]0,255,255 skn3_skn3@yahoo.com[c]","global")
add_text("line 1","global")
add_text("line 2","global")
add_text("line 3","global")
add_text("line 4","global")
add_text("[c]255,0,0 RED[c][c]0,255,0 GREEN[c][c]0,0,255 BLUE[c][c]80,80,80 This is a long test line so i can fully test the test wrap feature, lets hope it works now. Thank you for viewing my text box object, please give feedback and send bug reports to[c][c]0,255,255 skn3_skn3@yahoo.com[c]","global")
add_text("line 5","global")
add_text("line 6","global")
add_text("line 7","global")
add_text("line 8","global")
add_text("[c]255,0,0 RED[c][c]0,255,0 GREEN[c][c]0,0,255 BLUE[c][c]80,80,80 This is a long test line so i can fully test the test wrap feature, lets hope it works now. Thank you for viewing my text box object, please give feedback and send bug reports to[c][c]0,255,255 skn3_skn3@yahoo.com[c]","global")
add_text("line 9","global")
add_text("line 10","global")
add_text("line 11","global")
add_text("line 12","global")
add_text("line 13","global")
add_text("line 14","global")
add_text("[c]255,0,0 RED[c][c]0,255,0 GREEN[c][c]0,0,255 BLUE[c][c]80,80,80 This is a long test line so i can fully test the test wrap feature, lets hope it works now. Thank you for viewing my text box object, please give feedback and send bug reports to[c][c]0,255,255 skn3_skn3@yahoo.com[c]","global")
add_text("line 15","global")
add_text("line 16","global")
add_text("line 17","global")
add_text("line 18","global")
add_text("[c]255,0,0 RED[c][c]0,255,0 GREEN[c][c]0,0,255 BLUE[c][c]80,80,80 This is a long test line so i can fully test the test wrap feature, lets hope it works now. Thank you for viewing my text box object, please give feedback and send bug reports to[c][c]0,255,255 skn3_skn3@yahoo.com[c]","global")


;****************************************************************
;* RENDER WINDOW												*
;* Rendering a window will not draw it to screen, instead it 	*
;* renders on the backbuffer into its own image entity,			*
;* And restores the BackBuffer, And which buffer you were using	*
;* before you called it to render. 								*
;* 																*
;* --->Rendering a specific window								*
;* much like the add_text function, you suply the windowID of 	*
;* the window you wish to render								*
;*																*
;* render_window(windowID$)										*
;*																*
;* --->rendering all windows in 1 function call					*
;* again like the add_text function just replace the windowID 	*
;* with "global"												*
;*																*
;* render_window("global")										*
;****************************************************************

;****************************************************************
;* DRAW WINDOW											    	*
;* The draw window function draws the window to your current 	*
;* buffer.                                           			*
;* You must render_window before you draw it otherwise you wont	*
;* see any graphics displayed. 							    	*
;* 																*
;* --->drawing a specific window								*
;* much like the add_text function, you suply the windowID of 	*
;* the window you wish to draw  								*
;*																*
;* draw_window(windowID$)										*
;*																*
;* --->drawing all windows in 1 function call					*
;* again like the add_text function just replace the windowID 	*
;* with "global"												*
;*																*
;* draw_window("global")										*
;****************************************************************
;main loop
While Not KeyDown(1)
	SetBuffer BackBuffer() 
	Cls
	render_window("window")
	draw_window("window")
	Rect MouseX(),MouseY(),20,20
	Flip
Wend



Function add_window(w_x,w_y,w_width,w_height,w_ID$,w_mode$,w_fsize,w_font$,fcolR,fcolG,fcolB,w_lcolR,w_lcolG,w_lcolB,w_wcolR,w_wcolG,w_wcolB,w_sbcolR,w_sbcolG,w_sbcolB,w_bcolR,w_bcolG,w_bcolB)
	obj.scrollbar=New scrollbar
	obj\ID$=w_ID$
	obj\mode$=w_mode$
	obj\x=w_x
	obj\y=w_y
	obj\width=w_width-20
	obj\height=w_height
	obj\font=LoadFont(w_font$,w_fsize,False,False,False)
	SetFont obj\font
	obj\lines_height=obj\height/FontHeight()
	obj\ent=CreateImage(obj\width+20,obj\height)
	obj\line_top=1
	obj\font_colorR=fcolR
	obj\font_colorG=fcolG
	obj\font_colorB=fcolB
	obj\line_colorR=w_lcolR
	obj\line_colorG=w_lcolG
	obj\line_colorB=w_lcolB
	obj\window_colorR=w_wcolR
	obj\window_colorG=w_wcolG
	obj\window_colorB=w_wcolB
	obj\scroll_bar_colorR=w_sbcolR
	obj\scroll_bar_colorG=w_sbcolG
	obj\scroll_bar_colorB=w_sbcolB
	obj\scroll_button_colorR=w_bcolR
	obj\scroll_button_colorG=w_bcolG
	obj\scroll_button_colorB=w_bcolB
	obj\sbar_height#=obj\height-42
	obj\sbar_bar_y#=obj\y+21
	obj\sbar_flag=False
	;create arrows
	Cls
	Color obj\scroll_button_colorR,obj\scroll_button_colorG,obj\scroll_button_colorB
	Rect 0,0,9,9
	Color obj\line_colorR,obj\line_colorG,obj\line_colorB
	For xbot=0 To 8 Step 1
	Line 4,0,xbot,8
	Next
	obj\top_arrow=CreateImage(9,9)
	GrabImage obj\top_arrow,0,0
	Cls
	Color obj\scroll_button_colorR,obj\scroll_button_colorG,obj\scroll_button_colorB
	Rect 0,0,9,9
	Color obj\line_colorR,obj\line_colorG,obj\line_colorB
	For xbot=0 To 8 Step 1
	Line 4,8,xbot,0
	Next
	obj\bottom_arrow=CreateImage(9,9)
	GrabImage obj\bottom_arrow,0,0
	Cls
End Function


Function add_text(word$,which$)
	word$=Replace$ (word$,"[c]",Chr$(2))
	For obj.scrollbar=Each scrollbar
		If which$ = "global" Then
		obj\wtext$=obj\wtext$+word$+Chr$(1)
		Else If which$ <> "global" And obj\ID$=which$ Then
			obj\wtext$=obj\wtext$+word$+Chr$(1)
		End If
	Next	 	
End Function

Function render_window(which$)
	temp_buffer=GraphicsBuffer()
	SetBuffer BackBuffer()
	temp_buffer_image=CreateImage(GraphicsWidth(),GraphicsHeight())
	GrabImage temp_buffer_image,0,0 
	Cls 
	For obj.scrollbar=Each scrollbar
	If obj\ID$=which$ Or which$="global" Then
		;draw window bg 
		Color obj\window_colorR,obj\window_colorG,obj\window_colorB
		Rect obj\x+1,obj\y+1,obj\width-2,obj\height-2,1
		
		;***************
		;* render-text *
		;***************
			SetFont obj\font
			;reset window values for text parse
			obj\lines_start=1
			obj\line_index=1
			obj\lines_flag=0
			obj\lines_scan=1
			obj\lines_Ypointer=1
			obj\sbar_lines_total=0
			;get to point in text to read from
			If obj\line_top = 1 Then 
				obj\line_index=1
				obj\lines_start=1
				obj\lines_scan=0
			End If
			;render
			Repeat
				obj\lines_text$=""
				obj\lines_Xpointer=1
				obj\lines_add_flag=False
				obj\lines_next=False
				Repeat 
					obj\lines_temp$=Mid$(obj\wtext$,obj\lines_start,1)
					;add current character of text to temp buffer if it isn't a hidden character
					If obj\lines_temp$ <> Chr$(2) And obj\lines_temp$ <> Chr$(1) Then
						obj\lines_text$=obj\lines_text$+obj\lines_temp$
						obj\lines_start=obj\lines_start+1
						obj\lines_temp$=""
					EndIf
					;line break picked up
					If obj\lines_temp$ = Chr$(1) Then
						obj\lines_next=True
						obj\lines_add_flag=True
						obj\lines_start=obj\lines_start+1
						obj\lines_next=True
					End If
					;turn off text custom color, if parser reaches a hidden character 
					If obj\lines_flag=2 And obj\lines_temp$=Chr$(2) Then
						obj\lines_start=obj\lines_start+1
						obj\lines_flag=1
						obj\lines_add_flag=True
						obj\lines_temp$=""
					End If
					;turn on color mode and get color from text
					If obj\lines_flag=0 And obj\lines_temp$=Chr$(2) Then
						obj\lines_flag=3
						obj\lines_add_flag=True
						obj\lines_temp$=""
						If Len(obj\lines_text$)>0 Then
							Color obj\font_colorR,obj\font_colorG,obj\font_colorB
							obj\lines_start=obj\lines_start+1
						Else
							obj\lines_start=obj\lines_start+1
						End If
						;get RED
						Repeat
							obj\lines_temp$=Mid$(obj\wtext$,obj\lines_start,1)
							If obj\lines_temp$<>"," Then
								obj\lines_color_count=obj\lines_color_count+1
								obj\lines_start=obj\lines_start+1
							Else
								obj\lines_tempR=Mid$(obj\wtext$,(obj\lines_start-obj\lines_color_count),obj\lines_color_count)
								obj\lines_start=obj\lines_start+1
								obj\lines_color_count=0
							End If
							If obj\lines_color_count=3 Then
								obj\lines_tempR=Mid$(obj\wtext$,(obj\lines_start-obj\lines_color_count),obj\lines_color_count)
								obj\lines_start=obj\lines_start+1
								obj\lines_color_count=0
								obj\lines_temp$=","
							End If								
						Until obj\lines_temp$=","
						;get GREEN
						Repeat 
							obj\lines_temp$=Mid$(obj\wtext$,obj\lines_start,1)
							If obj\lines_temp$<>"," Then
								obj\lines_color_count=obj\lines_color_count+1
								obj\lines_start=obj\lines_start+1
							Else
								obj\lines_tempG=Mid$(obj\wtext$,(obj\lines_start-obj\lines_color_count),obj\lines_color_count)
								obj\lines_start=obj\lines_start+1
								obj\lines_color_count=0
							End If
							If obj\lines_color_count=3 Then
								obj\lines_tempG=Mid$(obj\wtext$,(obj\lines_start-obj\lines_color_count),obj\lines_color_count)
								obj\lines_start=obj\lines_start+1
								obj\lines_color_count=0
								obj\lines_temp$=","
							End If
						Until obj\lines_temp$=","
						;get BLUE
						If Mid$(obj\wtext$,obj\lines_start,3) <10 Then
							obj\lines_tempB=Mid$(obj\wtext$,obj\lines_start,1)
							obj\lines_start=obj\lines_start+1
						Else If Mid$(obj\wtext$,obj\lines_start,3) <100
							obj\lines_tempB=Mid$(obj\wtext$,obj\lines_start,2)
							obj\lines_start=obj\lines_start+2
						Else
							obj\lines_tempB=Mid$(obj\wtext$,obj\lines_start,3)
							obj\lines_start=obj\lines_start+3
						End If
					End If
				;render mode
				If obj\lines_scan=0
					;check if text is wider than width and wrap (only if wrap mode is on)
					If (obj\lines_Xpointer+StringWidth(obj\lines_text$)>=(obj\width-21)) Then
						obj\lines_add_flag=False
						t_len=Len(obj\lines_text$)
							For t_cut=t_len To 1 Step-1
							obj\lines_temp$=Mid$(obj\lines_text$,t_cut,1)
							If obj\lines_temp$=" " Then
								obj\lines_start=obj\lines_start-(Len(obj\lines_text$)-Len(Mid$(obj\lines_text$,1,t_cut)))
								obj\lines_text$=Mid$(obj\lines_text$,1,t_cut)
								obj\lines_add_flag=True
								obj\lines_next=True
								Exit
							End If
							If t_cut=1 Then
								obj\lines_text$=Left$(obj\lines_text$,(Len(obj\lines_text$)-1))
								obj\lines_add_flag=True
								obj\lines_start=obj\lines_start-1
								obj\lines_next=True
								Exit
							End If
							Next  
					End If
					;add current text buffer if color mode is just turned on 
					If obj\lines_add_flag=True And obj\lines_flag=3 Then
						Color obj\font_colorR,obj\font_colorG,obj\font_colorB
						Text (obj\x+3)+obj\lines_Xpointer,(obj\y+3)+((obj\lines_Ypointer-1)*FontHeight()),obj\lines_text$
						obj\lines_Xpointer=obj\lines_Xpointer+StringWidth(obj\lines_text$)
						obj\lines_text$=""
						obj\lines_add_flag=False
						obj\lines_flag=2
					End If
					;add text in buffer if color mode is continued
					If obj\lines_add_flag=True And obj\lines_flag=2 Then
						Color obj\lines_tempR,obj\lines_tempG,obj\lines_tempB
						;Color 255,255,255
						Text (obj\x+3)+obj\lines_Xpointer,(obj\y+3)+((obj\lines_Ypointer-1)*FontHeight()),obj\lines_text$
						obj\lines_Xpointer=obj\lines_Xpointer+StringWidth(obj\lines_text$)
						obj\lines_text$=""
						obj\lines_add_flag=False
					End If 
					;add text in buffer if color mode is finished
					If obj\lines_add_flag=True And obj\lines_flag=1 Then
						Color obj\lines_tempR,obj\lines_tempG,obj\lines_tempB
						;Color 255,255,255
						Text (obj\x+3)+obj\lines_Xpointer,(obj\y+3)+((obj\lines_Ypointer-1)*FontHeight()),obj\lines_text$
						obj\lines_Xpointer=obj\lines_Xpointer+StringWidth(obj\lines_text$)
						obj\lines_text$=""
						obj\lines_add_flag=False
						obj\lines_flag=0
					End If
					;add text in buffer if color mode or finish color is off
					If obj\lines_add_flag=True And obj\lines_flag=0 Then
						Color obj\font_colorR,obj\font_colorG,obj\font_colorB
						Text (obj\x+3)+obj\lines_Xpointer,(obj\y+3)+((obj\lines_Ypointer-1)*FontHeight()),obj\lines_text$
						obj\lines_Xpointer=obj\lines_Xpointer+StringWidth(obj\lines_text$)
						obj\lines_text$=""
						obj\lines_add_flag=False
					End If
				;scan mode
				Else
					;check if text is wider than width and wrap (only if wrap mode is on)
					If (obj\lines_Xpointer+StringWidth(obj\lines_text$)>=(obj\width-21)) Then
						obj\lines_add_flag=False
						t_len=Len(obj\lines_text$)
							For t_cut=t_len To 1 Step-1
							obj\lines_temp$=Mid$(obj\lines_text$,t_cut,1)
							If obj\lines_temp$=" " Then
								obj\lines_start=obj\lines_start-(Len(obj\lines_text$)-Len(Mid$(obj\lines_text$,1,t_cut)))
								obj\lines_text$=Mid$(obj\lines_text$,1,t_cut)
								obj\lines_add_flag=True
								obj\lines_next=True
								Exit
							End If
							If t_cut=1 Then
								obj\lines_text$=Left$(obj\lines_text$,(Len(obj\lines_text$)-1))
								obj\lines_add_flag=True
								obj\lines_start=obj\lines_start-1
								obj\lines_next=True
								Exit
							End If
							Next  
					End If
					;add current text buffer if color mode is just turned on 
					If obj\lines_add_flag=True And obj\lines_flag=3 Then
						obj\lines_Xpointer=obj\lines_Xpointer+StringWidth(obj\lines_text$)
						obj\lines_text$=""
						obj\lines_add_flag=False
						obj\lines_flag=2
					End If
					;add text in buffer if color mode is continued
					If obj\lines_add_flag=True And obj\lines_flag=2 Then
						obj\lines_Xpointer=obj\lines_Xpointer+StringWidth(obj\lines_text$)
						obj\lines_text$=""
						obj\lines_add_flag=False
					End If 
					;add text in buffer if color mode is finished
					If obj\lines_add_flag=True And obj\lines_flag=1 Then
						obj\lines_Xpointer=obj\lines_Xpointer+StringWidth(obj\lines_text$)
						obj\lines_text$=""
						obj\lines_add_flag=False
						obj\lines_flag=0
					End If
					;add text in buffer if color mode or finish color is off
					If obj\lines_add_flag=True And obj\lines_flag=0 Then
						obj\lines_Xpointer=obj\lines_Xpointer+StringWidth(obj\lines_text$)
						obj\lines_text$=""
						obj\lines_add_flag=False
					End If
				End If

				Until obj\lines_next=True
				If obj\lines_scan=0 Then
					obj\lines_Ypointer=obj\lines_Ypointer+1
				End If
				If obj\lines_scan=1 And obj\line_index=obj\line_top Then
					obj\lines_scan=0
				Else If obj\lines_scan=0 And obj\line_index >= (obj\line_top+obj\lines_height)
					obj\lines_scan=2
				End If
				obj\sbar_lines_total=obj\sbar_lines_total+1
				obj\lines_next=False
				obj\line_index=obj\line_index+1
			Until obj\lines_start >= Len(obj\wtext$)
		;draw scrollbar bg
		Color obj\scroll_bar_colorR,obj\scroll_bar_colorG,obj\scroll_bar_colorB
		Rect obj\x+obj\width,obj\y+1,18,obj\height-2,1
		;draw buttons
		Color obj\scroll_button_colorR,obj\scroll_button_colorG,obj\scroll_button_colorB
		Rect obj\x+obj\width,obj\y+1,18,18,1
		Rect obj\x+obj\width,obj\y+obj\height-19,18,18,1
		
		
		;scrollbars
		If obj\sbar_lines_total > obj\lines_height Then
			obj\sbar_bar_height#=(obj\sbar_height#/obj\sbar_lines_total*obj\lines_height)
			Rect obj\x+obj\width,obj\sbar_bar_y#-5,21,obj\sbar_bar_height#+10
		End If
		;mouse clicked on bar gizmo
		If obj\sbar_flag=False And MouseDown(1) And RectsOverlap(MouseX(),MouseY(),1,1,obj\x+obj\width,obj\sbar_bar_y#-5,21,obj\sbar_bar_height#+10) Then 
			obj\sbar_flag=True
			obj\sbar_tempy=MouseY()
		End If
		If obj\sbar_flag=True And MouseDown(1) Then
			If MouseY() >= obj\sbar_tempy Then
				obj\sbar_move_flag=False
				obj\sbar_move_amount=MouseYSpeed()/(obj\sbar_height#/obj\sbar_lines_total)
			End If
			If MouseY() <= obj\sbar_tempy Then
				obj\sbar_move_flag=True
				obj\sbar_move_amount=(MouseYSpeed()*-1)/(obj\sbar_height#/obj\sbar_lines_total)
			End If
			While obj\sbar_move_amount > 0
				If obj\sbar_move_flag=False And obj\line_top <= (obj\sbar_lines_total-obj\lines_height) Then
					obj\line_top=obj\line_top+1
					obj\sbar_bar_y#=obj\sbar_bar_y#+(obj\sbar_height#/obj\sbar_lines_total)
				End If
				If obj\sbar_move_flag=True And obj\line_top > obj\sbar_move_amount Then
					obj\line_top=obj\line_top-1
					obj\sbar_bar_y#=obj\sbar_bar_y#-(obj\sbar_height#/obj\sbar_lines_total)	
				End If
				obj\sbar_move_amount=obj\sbar_move_amount-1
			Wend
			obj\sbar_move_amount=0
			obj\sbar_tempy=MouseY()
		Else 
			obj\sbar_flag=False
		End If
		
		
		;draw borders
		Color obj\line_colorR,obj\line_colorG,obj\line_colorB
		Rect obj\x,obj\y,obj\width,obj\height,0
		Rect obj\x+obj\width-1,obj\y,21,obj\height,0
		Rect obj\x+obj\width-1,obj\y,21,21,0
		Rect obj\x+obj\width-1,obj\y+obj\height-21,21,21,0
		;draw arrows
		DrawBlock obj\top_arrow,obj\x+obj\width+5,obj\y+6 
		DrawBlock obj\bottom_arrow,obj\x+obj\width+5,obj\y+obj\height-14
		;save window into image
		GrabImage obj\ent,obj\x,obj\y
		Cls
	End If
	Next
	DrawBlock temp_buffer_image,0,0
	FreeImage temp_buffer_image
	SetBuffer temp_buffer
End Function

Function draw_window(which$)
	If which$ = "global" Then
		For obj.scrollbar=Each scrollbar
			DrawBlock obj\ent,obj\x,obj\y
		Next
	Else 
		For obj.scrollbar=Each scrollbar
			If obj\ID$=which$ Then
				DrawBlock obj\ent,obj\x,obj\y
			End If
		Next
	End If
End Function

Comments

None.

Code Archives Forum