Create text fast and smooth...

Just starting out? Need help? Post your questions and find answers here.
User avatar
Michael Vogel
Addict
Addict
Posts: 2677
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Create text fast and smooth...

Post by Michael Vogel »

I want a nice list where all elements should be done by using different font sizes and I have to keep in mind that things like resorting, adding/removing elements should be done quickly.
I thought creating alpha images for each element would be a good idea, this allows to show different background colors for each elements (when hovering, for the cursor, etc.)

Redrawing the whole list would take very long when I use DrawAlphaImage, so for elements without special background color I just use DrawImage (which is around 5 times faster here). BUT now I would need to create a text which looks smooth for both drawing modes, with alpha and without. Any ideas?

You can see my different approaches in the CreateReportEntryImage procedure where I tried different drawing modes...

Code: Select all

; Define

	EnableExplicit

	Enumeration
		#FontTitle
		#FontTitleSelected
		#FontInfo
	EndEnumeration

	#MaxReportEntries=500;	500 x 60 Pixel = 32000 Pixel
	#Entries=500

	Enumeration
		#ReportContainer
		#ReportImage
		#ReportRedraw
		#ReportTemplate
		#ReportEntries
		#ReportEntriesEnd=#ReportEntries+#MaxReportEntries
	EndEnumeration

	LoadFont(#FontTitle,"Segoe UI",20)
	LoadFont(#FontTitleSelected,"Segoe UI",20)
	LoadFont(#FontInfo,"Segoe UI",11)

	Structure StatusType
		Hover.i
		Active.i
	EndStructure

	Enumeration
		#ColBackground
		#ColCursor
		#ColHover
		#ColHoverAndCursor
		#ColTitle
		#ColInfo1
		#ColInfo2
		#ColLine
		#ColTable
	EndEnumeration

	Structure ListImageGadgetOptions
		LineCount.i
		LineHeight.i
		LineWidth.i
		Space.i
		WinWidth.i
		WinHeight.i
		IconWidth.i
		IconHeight.i
		IconPos.i
		TitleFont.i
		TitleFont_.i
		InfoFont.i
		TitlePos.i
		InfoPos.i
		Color.i [#ColTable]
		ColorCursor.i
		ColorHover.i
		ColorTitle.i
		ColorInfo1.i
		ColorInfo2.i
		ColorSelectedText.i
		ColorLine.i
	EndStructure

	Structure ListImageGadgetItem
		Gadget.i
		State.i
		Title.s
		Info1.s
		Info2.s
		Image.i
		BackgroundImage.i
		BackgroundImageGadget.i
		ImageGadget.i
	EndStructure

	Global NewList ListImageGadgetItem.ListImageGadgetItem()
	Global Options.ListImageGadgetOptions
	Global State.StatusType

	With Options
		\LineCount=	0
		\LineHeight=	60
		\LineWidth=	540
		\Space=		10
		\IconWidth=	60
		\IconHeight=	50
		\IconPos=	(\LineHeight-\IconHeight)>>1
		\TitleFont=	FontID(#FontTitle)
		\TitleFont_=	FontID(#FontTitleSelected)
		\InfoFont=	FontID(#FontInfo)
		\InfoPos=	Options\LineHeight-26
		\Color[#ColBackground]=	#White
		\Color[#ColCursor]=		$F3CC90
		\Color[#ColHover]=		$FFE4BC
		\Color[#ColHoverAndCursor]=	$E2B979
		\Color[#ColTitle]=		$602000
		\Color[#ColInfo1]=		$604020
		\Color[#ColInfo2]=		$604020
		\Color[#ColLine]=			$F6E0BE
	EndWith

	#Undefined=		-1
	#DrawOpaque=	$FF000000

; EndDefine
Macro RedrawEntry(n,alpha)

	alpha=0
	If n=State\Active
		alpha|1
	EndIf
	If n=State\Hover
		alpha|2
	EndIf
	If alpha
		Box(0,n*Options\LineHeight,Options\LineWidth,Options\LineHeight,Options\Color[alpha])
		DrawAlphaImage(ImageID(#ReportEntries+n),0,n*Options\LineHeight)
	Else
		DrawImage(ImageID(#ReportEntries+n),0,n*Options\LineHeight)
	EndIf

EndMacro
Procedure SmoothDraw(x,y,color,null)

	x=color>>24
	ProcedureReturn (255-x)*$10101 | (x<<24)
	ProcedureReturn ((color&$ff0000)<<8)|color
	ProcedureReturn x<<24|((255-x)*(color&$FF)>>8)*$10101

EndProcedure
Procedure CreateReportEntryImage(n)

	CopyImage(#ReportTemplate,#ReportEntries+n)
	StartDrawing(ImageOutput(#ReportEntries+n))

	DrawingMode(#PB_2DDrawing_AlphaBlend)
	DrawingMode(#PB_2DDrawing_Transparent)
	DrawingMode(#PB_2DDrawing_AlphaBlend)
	;DrawingMode(#PB_2DDrawing_CustomFilter)
	CustomFilterCallback(@SmoothDraw())

	DrawingFont(Options\TitleFont_)
	DrawText(Options\IconWidth+Options\Space<<1,Options\TitlePos,"Document File "+Str(n+1),Options\ColorSelectedText|#DrawOpaque,#White)
	DrawingFont(Options\InfoFont)
	DrawText(Options\IconWidth+Options\Space<<1,Options\InfoPos,"Information for Document...",Options\ColorSelectedText|#DrawOpaque,#White)
	n=Random(100000)
	DrawText(Options\LineWidth-Options\Space-TextWidth(Str(n)),Options\InfoPos,Str(n),Options\ColorSelectedText|#DrawOpaque,#White)
	StopDrawing()

EndProcedure
Procedure RedrawReportEntry(n)

	Protected alpha

	StartDrawing(CanvasOutput(#ReportImage))
	RedrawEntry(n,alpha)
	StopDrawing()

EndProcedure
Procedure RedrawReportEntries()

	Protected i,z

	Protected watch=ElapsedMilliseconds()

	State\Active=#Undefined
	State\Hover=#Undefined

	StartDrawing(CanvasOutput(#ReportImage))
	Box(0,0,OutputWidth(),OutputHeight(),#White)
	While i<#Entries
		RedrawEntry(i,z)
		i+1
	Wend
	StopDrawing()

	Debug ElapsedMilliseconds()-watch

EndProcedure
Procedure ReportInitialization()

	Protected z

	ResizeGadget(#ReportImage,#PB_Ignore,#PB_Ignore,#PB_Ignore,Options\LineHeight*#Entries)
	SetGadgetAttribute(#ReportContainer,#PB_ScrollArea3D_InnerHeight,Options\LineHeight*#Entries)

	CreateImage(#ReportTemplate,Options\LineWidth,Options\LineHeight,32)
	StartDrawing(ImageOutput(#ReportTemplate))
	DrawingMode(#PB_2DDrawing_AllChannels)
	Box(0,0,OutputWidth(),OutputHeight(),Options\Color[#ColBackground])
	StopDrawing()

	While z<#Entries
		CreateReportEntryImage(z)
		z+1
	Wend

EndProcedure

OpenWindow(0,0,0,600,440,"-*-",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowColor(0,Options\Color[#ColBackground])

ScrollAreaGadget(#ReportContainer,10,10,Options\LineWidth+28,380,Options\LineWidth,Options\LineHeight*8,Options\LineHeight,#PB_ScrollArea_BorderLess)
CanvasGadget(#ReportImage,0,0,Options\LineWidth,Options\LineHeight*8)
CloseGadgetList()
SetGadgetColor(#ReportContainer,#PB_Gadget_BackColor,Options\Color[#ColBackground])

ReportInitialization()
RedrawReportEntries()
ButtonGadget(#ReportRedraw,10,400, 580,30,"Redraw")

Define n.i,event.i

AddKeyboardShortcut(0,#PB_Shortcut_Return,2)
AddKeyboardShortcut(0,#PB_Shortcut_Escape,666)

Repeat
	Event = WaitWindowEvent()
	Select Event
	Case #PB_Event_CloseWindow
		End
	Case #PB_Event_Gadget,#PB_Event_Menu
		Select EventGadget()
		Case #ReportImage
			Select EventType()
			Case #PB_EventType_LeftButtonDown
				n=GetGadgetAttribute(#ReportImage,#PB_Canvas_MouseY)/Options\LineHeight
				If n<>State\Active
					Swap n,State\Active
					RedrawReportEntry(n)
					RedrawReportEntry(State\Active)
				EndIf

			Case #PB_EventType_MouseMove
				n=GetGadgetAttribute(#ReportImage,#PB_Canvas_MouseY)/Options\LineHeight
				If n<>State\Hover
					Swap n,State\Hover
					RedrawReportEntry(n)
					RedrawReportEntry(State\Hover)
				EndIf
			Case #PB_EventType_MouseEnter
			Case #PB_EventType_MouseLeave
				n=State\Hover
				State\Hover=#Undefined
				RedrawReportEntry(n)
			EndSelect

		Case #ReportContainer
			Debug "¯\/¯"

		Case #ReportRedraw
			If GetKeyState_(#VK_SHIFT)&128
				Options\Color[#ColBackground]=Random(#White)|$C0C0C0
				ReportInitialization()
			EndIf
			RedrawReportEntries()
			Debug "[_]"
		Case 666
			End
		EndSelect
	EndSelect
ForEver

When the following changes are done, the program produces a clean text - but it takes endless before everything has been drawn... :cry:

Code: Select all

Procedure Smoothy(x,y,null,color)
	
	ProcedureReturn ((255-(color&$FF)>>1)<<24)|color
	
EndProcedure

Procedure CreateReportEntryImage(n)

	CopyImage(#ReportTemplate,#ReportEntries+n)
	StartDrawing(ImageOutput(#ReportEntries+n))

	DrawingMode(#PB_2DDrawing_Transparent)
	;DrawingMode(#PB_2DDrawing_Transparent|#PB_2DDrawing_AlphaBlend)
	;DrawingMode(#PB_2DDrawing_AlphaBlend)

	DrawingFont(Options\TitleFont_)
	DrawText(Options\IconWidth+Options\Space<<1,Options\TitlePos,"Document File "+Str(n+1),Options\ColorSelectedText|#DrawOpaque,#White)
	DrawingFont(Options\InfoFont)
	DrawText(Options\IconWidth+Options\Space<<1,Options\InfoPos,"Information for Document...",Options\ColorSelectedText|#DrawOpaque,#White)
	n=Random(100000)
	DrawText(Options\LineWidth-Options\Space-TextWidth(Str(n)),Options\InfoPos,Str(n),Options\ColorSelectedText|#DrawOpaque,#White)
	
	DrawingMode(#PB_2DDrawing_CustomFilter)
	CustomFilterCallback(@Smoothy())
	Box(0,0,Options\LineWidth,Options\LineHeight)
	StopDrawing()

EndProcedure
User avatar
idle
Always Here
Always Here
Posts: 5096
Joined: Fri Sep 21, 2007 5:52 am
Location: New Zealand

Re: Create text fast and smooth...

Post by idle »

make a glyph cache perhaps.
viewtopic.php?f=12&t=45669
Windows 11, Manjaro, Raspberry Pi OS
Image
User avatar
Michael Vogel
Addict
Addict
Posts: 2677
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Re: Create text fast and smooth...

Post by Michael Vogel »

Idle, this will take a while for further investigations (needs some idle time) :wink:

Meantime I also checked vector drawing which is quite fast and doesn't look that bad - but also not that perfect. For the following code I get a different quality for the fast DrawImage (for the list in general) and DrawAlphaImage (when hovering/selecting an item):

Code: Select all

              DrawImage    DrawAlphaImage
Custom Mode     +++          --
Alpha Mode      --           +++
Transparent     ++           ---
Vector 1        +            -
Vector 2        -            +
Here's the test source code:

Code: Select all

; Define

	EnableExplicit

	Enumeration
		#FontTitle
		#FontTitleSelected
		#FontInfo
	EndEnumeration

	#MaxReportEntries=500;   500 x 60 Pixel = 32000 Pixel
	#Entries=500

	Enumeration
		#ReportContainer
		#ReportImage
		#ReportRedraw
		#ReportTemplate
		#ReportEntries
		#ReportEntriesEnd=#ReportEntries+#MaxReportEntries
	EndEnumeration

	LoadFont(#FontTitle,"Segoe UI",20,#PB_Font_HighQuality)
	LoadFont(#FontTitleSelected,"Segoe UI",20)
	LoadFont(#FontInfo,"Segoe UI",11)

	Structure StatusType
		Hover.i
		Active.i
	EndStructure

	Enumeration
		#ColBackground
		#ColCursor
		#ColHover
		#ColHoverAndCursor
		#ColTitle
		#ColInfo1
		#ColInfo2
		#ColLine
		#ColTable
	EndEnumeration

	Structure ListImageGadgetOptions
		LineCount.i
		LineHeight.i
		LineWidth.i
		Space.i
		WinWidth.i
		WinHeight.i
		IconWidth.i
		IconHeight.i
		IconPos.i
		TitleFont.i
		TitleFont_.i
		InfoFont.i
		TitlePos.i
		InfoPos.i
		Color.i [#ColTable]
		ColorCursor.i
		ColorHover.i
		ColorTitle.i
		ColorInfo1.i
		ColorInfo2.i
		ColorSelectedText.i
		ColorLine.i
	EndStructure

	Structure ListImageGadgetItem
		Gadget.i
		State.i
		Title.s
		Info1.s
		Info2.s
		Image.i
		BackgroundImage.i
		BackgroundImageGadget.i
		ImageGadget.i
	EndStructure

	Global NewList ListImageGadgetItem.ListImageGadgetItem()
	Global Options.ListImageGadgetOptions
	Global State.StatusType

	With Options
		\LineCount=   0
		\LineHeight=   60
		\LineWidth=   540
		\Space=      10
		\IconWidth=   60
		\IconHeight=   50
		\IconPos=   (\LineHeight-\IconHeight)>>1
		\TitleFont=   FontID(#FontTitle)
		\TitleFont_=   FontID(#FontTitleSelected)
		\InfoFont=   FontID(#FontInfo)
		\InfoPos=   Options\LineHeight-26
		\Color[#ColBackground]=   #White
		\Color[#ColCursor]=      $F3CC90
		\Color[#ColHover]=      $FFE4BC
		\Color[#ColHoverAndCursor]=   $E2B979
		\Color[#ColTitle]=      $602000
		\Color[#ColInfo1]=      $604020
		\Color[#ColInfo2]=      $604020
		\Color[#ColLine]=         $F6E0BE
	EndWith

	#Undefined=      -1
	#DrawOpaque=   $FF000000

	Global Dim Timer(5)

; EndDefine
Macro RedrawEntry(n,alpha)

	alpha=0
	If n=State\Active
		alpha|1
	EndIf
	If n=State\Hover
		alpha|2
	EndIf
	If alpha
		Box(0,n*Options\LineHeight,Options\LineWidth,Options\LineHeight,Options\Color[alpha])
		DrawAlphaImage(ImageID(#ReportEntries+n),0,n*Options\LineHeight)
	Else
		DrawImage(ImageID(#ReportEntries+n),0,n*Options\LineHeight)
	EndIf

EndMacro
Procedure SmoothDraw(x,y,color,null)

	x=color>>24
	ProcedureReturn (255-x)*$10101 | (x<<24)
	ProcedureReturn ((color&$ff0000)<<8)|color
	ProcedureReturn x<<24|((255-x)*(color&$FF)>>8)*$10101

EndProcedure
Procedure CreateReportEntryImage(n)

	Protected t
	Protected z.s

	CopyImage(#ReportTemplate,#ReportEntries+n)

	t=n%5
	z=Str(Timer(t))+"ms"
	Select t

	Case 0
		timer(t)-ElapsedMilliseconds()
		StartDrawing(ImageOutput(#ReportEntries+n))
		DrawingMode(#PB_2DDrawing_CustomFilter)
		CustomFilterCallback(@SmoothDraw())

		DrawingFont(Options\TitleFont_)
		DrawText(Options\IconWidth+Options\Space*2,Options\TitlePos,"Document File "+Str(n+1),Options\Color[#ColTitle]|#DrawOpaque,#White)
		DrawingFont(Options\InfoFont)
		DrawText(Options\IconWidth+Options\Space*2,Options\InfoPos,"Information - Text in Customer Mode",Options\Color[#ColInfo1]|#DrawOpaque,#White)
		DrawText(Options\LineWidth-Options\Space-TextWidth(z),Options\InfoPos,z,Options\Color[#ColInfo2]|#DrawOpaque,#White)
		StopDrawing()
		timer(t)+ElapsedMilliseconds()

	Case 1
		timer(t)-ElapsedMilliseconds()
		StartDrawing(ImageOutput(#ReportEntries+n))
		DrawingMode(#PB_2DDrawing_AlphaBlend)

		DrawingFont(Options\TitleFont_)
		DrawText(Options\IconWidth+Options\Space*2,Options\TitlePos,"Document File "+Str(n+1),Options\Color[#ColTitle]|#DrawOpaque,#White)
		DrawingFont(Options\InfoFont)
		DrawText(Options\IconWidth+Options\Space*2,Options\InfoPos,"Information - Text in Alpha Blend Mode",Options\Color[#ColInfo1]|#DrawOpaque,#White)
		DrawText(Options\LineWidth-Options\Space-TextWidth(z),Options\InfoPos,z,Options\Color[#ColInfo2]|#DrawOpaque,#White)
		StopDrawing()
		timer(t)+ElapsedMilliseconds()

	Case 2
		timer(t)-ElapsedMilliseconds()
		StartDrawing(ImageOutput(#ReportEntries+n))
		DrawingMode(#PB_2DDrawing_Transparent)

		DrawingFont(Options\TitleFont_)
		DrawText(Options\IconWidth+Options\Space*2,Options\TitlePos,"Document File "+Str(n+1),Options\Color[#ColTitle]|#DrawOpaque,#White)
		DrawingFont(Options\InfoFont)
		DrawText(Options\IconWidth+Options\Space*2,Options\InfoPos,"Information - Text in Transparent Mode",Options\Color[#ColInfo1]|#DrawOpaque,#White)
		DrawText(Options\LineWidth-Options\Space-TextWidth(z),Options\InfoPos,z,Options\Color[#ColInfo2]|#DrawOpaque,#White)
		StopDrawing()
		timer(t)+ElapsedMilliseconds()

	Case 3

		timer(t)-ElapsedMilliseconds()
		StartVectorDrawing(ImageVectorOutput(#ReportEntries+n))
		VectorFont(Options\TitleFont_)

		MovePathCursor(Options\IconWidth+Options\Space*2,Options\TitlePos)
		VectorSourceColor(Options\Color[#ColTitle]|#DrawOpaque)
		DrawVectorText("Document File "+Str(n+1))
		VectorFont(Options\InfoFont)
		MovePathCursor(Options\IconWidth+Options\Space*2,Options\InfoPos)
		VectorSourceColor(Options\Color[#ColInfo1]|#DrawOpaque)
		DrawVectorText("Information - Text in Vector Mode (Drawing)")
		MovePathCursor(Options\LineWidth-Options\Space-VectorTextWidth(z),Options\InfoPos)
		VectorSourceColor(Options\Color[#ColInfo2]|#DrawOpaque)
		DrawVectorText(z)
		StopVectorDrawing()
		timer(t)+ElapsedMilliseconds()

	Case 4

		timer(t)-ElapsedMilliseconds()
		StartVectorDrawing(ImageVectorOutput(#ReportEntries+n))
		VectorFont(Options\TitleFont_)

		MovePathCursor(Options\IconWidth+Options\Space*2,Options\TitlePos)
		VectorSourceColor(Options\Color[#ColTitle]|#DrawOpaque)
		AddPathText("Document File "+Str(n+1))
		StrokePath(0.0001,#PB_Path_Preserve)
		FillPath()
		VectorFont(Options\InfoFont)
		MovePathCursor(Options\IconWidth+Options\Space*2,Options\InfoPos)
		VectorSourceColor(Options\Color[#ColInfo1]|#DrawOpaque)
		AddPathText("Information - Text in Vector Mode (Fill & Stroke)")
		StrokePath(0.0001,#PB_Path_Preserve)
		FillPath()
		MovePathCursor(Options\LineWidth-Options\Space-VectorTextWidth(z),Options\InfoPos)
		VectorSourceColor(Options\Color[#ColInfo2]|#DrawOpaque)
		AddPathText(z)
		StrokePath(0.0001,#PB_Path_Preserve)
		FillPath()
		StopVectorDrawing()
		timer(t)+ElapsedMilliseconds()

	EndSelect

EndProcedure
Procedure RedrawReportEntry(n)

	Protected alpha

	StartDrawing(CanvasOutput(#ReportImage))
	RedrawEntry(n,alpha)
	StopDrawing()

EndProcedure
Procedure RedrawReportEntries()

	Protected i,z

	Protected watch=ElapsedMilliseconds()

	State\Active=#Undefined
	State\Hover=#Undefined

	StartDrawing(CanvasOutput(#ReportImage))
	Box(0,0,OutputWidth(),OutputHeight(),#White)
	While i<#Entries
		RedrawEntry(i,z)
		i+1
	Wend
	StopDrawing()

	Debug "Redrawing in "+Str(ElapsedMilliseconds()-watch)+"ms"

EndProcedure
Procedure ReportInitialization()

	Protected z

	ResizeGadget(#ReportImage,#PB_Ignore,#PB_Ignore,#PB_Ignore,Options\LineHeight*#Entries)
	SetGadgetAttribute(#ReportContainer,#PB_ScrollArea3D_InnerHeight,Options\LineHeight*#Entries)

	CreateImage(#ReportTemplate,Options\LineWidth,Options\LineHeight,32)
	StartDrawing(ImageOutput(#ReportTemplate))
	DrawingMode(#PB_2DDrawing_AllChannels)
	Box(0,0,OutputWidth(),OutputHeight(),Options\Color[#ColBackground])
	StopDrawing()

	While z<#Entries
		CreateReportEntryImage(z)
		z+1
	Wend

EndProcedure

OpenWindow(0,0,0,600,440,"-*-",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowColor(0,Options\Color[#ColBackground])

ScrollAreaGadget(#ReportContainer,10,10,Options\LineWidth+28,380,Options\LineWidth,Options\LineHeight*8,Options\LineHeight,#PB_ScrollArea_BorderLess)
CanvasGadget(#ReportImage,0,0,Options\LineWidth,Options\LineHeight*8)
CloseGadgetList()
SetGadgetColor(#ReportContainer,#PB_Gadget_BackColor,Options\Color[#ColBackground])

ReportInitialization()
RedrawReportEntries()
ButtonGadget(#ReportRedraw,10,400, 580,30,"Redraw")

Define n.i,event.i

AddKeyboardShortcut(0,#PB_Shortcut_Return,2)
AddKeyboardShortcut(0,#PB_Shortcut_Escape,666)

Repeat
	Event = WaitWindowEvent()
	Select Event
	Case #PB_Event_CloseWindow
		End
	Case #PB_Event_Gadget,#PB_Event_Menu
		Select EventGadget()
		Case #ReportImage
			Select EventType()
			Case #PB_EventType_LeftButtonDown
				n=GetGadgetAttribute(#ReportImage,#PB_Canvas_MouseY)/Options\LineHeight
				If n<>State\Active
					Swap n,State\Active
					RedrawReportEntry(n)
					RedrawReportEntry(State\Active)
				EndIf

			Case #PB_EventType_MouseMove
				n=GetGadgetAttribute(#ReportImage,#PB_Canvas_MouseY)/Options\LineHeight
				If n<>State\Hover
					Swap n,State\Hover
					RedrawReportEntry(n)
					RedrawReportEntry(State\Hover)
				EndIf
			Case #PB_EventType_MouseEnter
			Case #PB_EventType_MouseLeave
				n=State\Hover
				State\Hover=#Undefined
				RedrawReportEntry(n)
			EndSelect

		Case #ReportContainer
			Debug "¯\/¯"

		Case #ReportRedraw
			If GetKeyState_(#VK_SHIFT)&128
				Options\Color[#ColBackground]=Random(#White)|$C0C0C0
				ReportInitialization()
			EndIf
			RedrawReportEntries()
			Debug "[_]"
		Case 666
			End
		EndSelect
	EndSelect
ForEver
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4663
Joined: Sun Apr 12, 2009 6:27 am

Re: Create text fast and smooth...

Post by RASHAD »

Hi MV
For adding and removing use List() instead of Dynamic Array()
I hope it will satisfy your needs :)
You can adapt it as you like

Code: Select all

Global hbrush1,hbrush2,hbrush3
Global Dim f.s(20),Dim s.s(20)

hbrush1 = CreateSolidBrush_(GetSysColor_(#COLOR_HIGHLIGHT))
hbrush2 = CreateSolidBrush_($94EBFE)
hbrush3 = CreateSolidBrush_($ECFBFE)

For i = 0 To 10
  f(i) = "Document File "+Str(i)
Next

For i = 0 To 10
  s(i) = "Just for MV "+Str(i)
Next

Procedure winCB(hWnd,uMsg,wParam,lParam)
  Select uMsg
    Case #WM_DRAWITEM
      *lpdis.DRAWITEMSTRUCT = lParam           
      If *lpdis\itemState & #ODS_SELECTED
        FillRect_(*lpdis\hdc,*lpdis\rcItem,hbrush1)
        InflateRect_(*lpdis\rcItem,-1,-1)
        DrawFocusRect_(*lpdis\hdc,*lpdis\rcItem)
        InflateRect_(*lpdis\rcItem,1,1)
        SetTextColor_(*lpdis\hdc,GetSysColor_(#COLOR_HIGHLIGHTTEXT))
      Else
        If *lpdis\itemID & 1 = 1
          FillRect_(*lpdis\hdc, *lpdis\rcItem,hbrush2)
          SetTextColor_(*lpdis\hdc,$3A43FE)
        Else
          FillRect_(*lpdis\hdc, *lpdis\rcItem,hbrush3)
          SetTextColor_(*lpdis\hdc,$FD683C)
        EndIf
      EndIf     
      SetBkMode_(*lpdis\hdc,#TRANSPARENT)
      *lpdis\rcItem\left +5
      *lpdis\rcItem\top + 5     
      SelectObject_(*lpdis\hdc,FontID(0))
      DrawText_(*lpdis\hdc,f(*lpdis\itemID),-1,*lpdis\rcItem, #DT_SINGLELINE)
      SelectObject_(*lpdis\hdc,FontID(1))     
      *lpdis\rcItem\top + 40 
      DrawText_(*lpdis\hdc,s(*lpdis\itemID),-1,*lpdis\rcItem, #DT_SINGLELINE)
      ProcedureReturn #True
  EndSelect   
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

LoadFont(0,"Georgia",24)
LoadFont(1,"Tahoma",14)
OpenWindow(0,0,0,600,400,"ListBox Viewer",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0,10,10,580,380,#LBS_OWNERDRAWFIXED)
SendMessage_(GadgetID(0),#LB_SETITEMHEIGHT,0,80)

For i=0 To 20
  AddGadgetItem(0,-1,"")
Next

SetWindowCallback(@winCB())

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Quit = 1
     
  EndSelect
Until Quit = 1
DeleteObject_(hbrush1)
DeleteObject_(hbrush2)
DeleteObject_(hbrush3)
Egypt my love
User avatar
Michael Vogel
Addict
Addict
Posts: 2677
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Re: Create text fast and smooth...

Post by Michael Vogel »

Not bad, Rashad :wink:

Seems to be the best solution, just one additional question: do you know if lines could be drawn without creating brushes each time?

I tried with LineTo_(*lpdis\hDC,...) as FillRect needs a lot of adjustments for the rectangle coordinates...

Code: Select all

; Define

	Global hbrush1,hbrush2,hbrush3
	Global Dim f.s(20),Dim s.s(20),Dim x.s(20)
	Global Dim xlen.i(20)

	hbrush1 = CreateSolidBrush_(GetSysColor_(#COLOR_HIGHLIGHT))
	hbrush2 = CreateSolidBrush_($94EBFE)
	hbrush3 = CreateSolidBrush_($ECFBFE)

	Global Dim IconHandle(1)

	LoadFont(0,"Segoe UI Semibold",20)
	LoadFont(1,"Segoe UI",14)

	CreateImage(0,1,1)
	StartDrawing(ImageOutput(0))
	DrawingFont(FontID(1))
	For i=0 To 10
		f(i) = "Document File "+Str(i)
		s(i) = "Just for MV "+Str(i)
		x(i) = RSet("*",Random(10),"*")
		xlen(i)=TextWidth(x(i))
	Next i
	StopDrawing()

	IconHandle(0)=CatchImage(0,?Icon2)
	IconHandle(1)=CatchImage(1,?Icon1)


	DataSection
		Icon1:
Data.q $3030000100010000,$25A8002000010000,$28000000160000,$60000000300000,$2000010000,$25800000,0,0,0,0,0,0,0,$BFDF40BFBFDF0000,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF
Data.q $BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$10EFEFF740BF,0,0,0,0,0,0,0,0,$EFF7000000000000,$809F6060B010EF,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$389CFF000080FF00,$28D7D7EBC738,0,0,0,0,0,0,0,$389C000000000000,$80FF000080C738,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$E7F3EF101088FF00,$18E7,0,0,0,0,0,0,$80689797CB0000,$A7D3FF080884FF00,$FFFFFFFFFFFFFFA7,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$2090FFBFBFDFFFFF,$58ACFF000080FF20,$A758,0,0,0,0,0,0,$80AF5050A80000,$FFFFFF6868B4FF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$A7D3FFFFFFFFFFFF,$1088FF000080FFA7,$EF10,0,0,0,0,0,0,$80D72828940000,$FFFFFF9797CBFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$D7EBFFFFFFFFFFFF,$80FF000080FFD7
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $7FBFFFBFBFDFFFFF,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$6FB7FF7F7FBFFF7F,$80FF000080FF6F,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$48A4FFEFEFF7FFFF,$80FF000080FF48,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF6060B0FFFF,$2E99FF000080FF00,$68B8FF6262B5FF2E,$68B8FF6868B8FF68,$68B8FF6868B8FF68,$80FF0D0D87FF68,$43A1FF000080FF00,$BC43,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$D7EBFFFFFFFFFFFF,$80FF000080FFD7,$D0F0FF8888C9FF00,$D0F0FFD0D0F0FFD0,$D0F0FFD0D0F0FFD0,$4EAAFFD0D0F0FFD0,$80FF000080FF4E,$C03F3F9FFF00,0,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$97CBFFFFFFFFFFFF,$148BFF000080FF97,$D0F0FFD0D0F0FF14,$D0F0FFD0D0F0FFD0,$D0F0FFD0D0F0FFD0,$80FF4E4EAAFFD0,$3F9FFF000080FF00,$C03F,0,0,0,0,0
Data.q 0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$D0F0FFD0D0F0FF34,$D0F0FFD0D0F0FFD0,$4EAAFFD0D0F0FFD0,$80FF000080FF4E
Data.q $C03F3F9FFF00,0,0,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$D0F0FFD0D0F0FF34,$D0F0FFD0D0F0FFD0,$80FF4E4EAAFFD0
Data.q $3F9FFF000080FF00,$C03F,0,0,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$D0F0FFD0D0F0FF34,$4EAAFFD0D0F0FFD0
Data.q $80FF000080FF4E,$C03F3F9FFF00,0,0,0,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$D0F0FFD0D0F0FF34,$80FF4E4EAAFFD0
Data.q $3F9FFF000080FF00,$C03F,0,0,0,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$4EAAFFD0D0F0FF34,$80FF000080FF4E
Data.q $C03F3F9FFF00,0,0,0,0,0,0,0,0,0,0,$80CF3030980000,$FFFFFF8F8FC7FF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$80FF4E4EAAFF34,$3F9FFF000080FF00,$C03F
Data.q 0,0,0,0,0,0,0,0,0,0,$80976868B40000,$FFFFFF4040A0FF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$80FF000080FF7F,$80FF000080FF00,$C03F3F9FFF00,0,0,0,0,0,0,0,0,0,0
Data.q 0,$8038C7C7E30000,$48A4FF000080FF00,$BFDFFF9F9FCFFF48,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$5FAFFFBFBFDFFFBF,$80FF000080FF5F,$3F9FFF000080FF00,$C03F,0,0,0,0,0,0,0,0,0,0,0,$8FC7000000000000,$80FF000080708F
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$C03F3F9FFF00,0,0,0,0,0,0,0,0,0,0,0,0,0,$50A848B7B7DB0000,$80E718188CAF50,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$43A1FF000080FF00,$BC43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$E0FF000000000000,$FF0000FF030000,$FF0000FF000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE0000FF000000,$FE0000FF010000,$FE0000FF030000,$FE0000FF070000,$FE0000FF0F0000
Data.q $FE0000FF1F0000,$FE0000FF3F0000,$FE0000FF7F0000,$FE0000FFFF0000,$FF0000FFFF0100,$80FF0000FFFF0300,$FFFF0000FFFF0700,$FFFFFFFF

Icon2:
Data.q $3030000100010000,$25A8002000010000,$28000000160000,$60000000300000,$2000010000,$25800000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$87C3000000000000,$80D72828947887
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00
Data.q $80FF000080FF00,$80FF000080FF00,$68B4EF101088FF00,$10EFEFF79768,0,$80A75858AC0000,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$E7F3E718188CFF00,$A7D30000000018E7,$80FF00008058A7,$BFDFFF7878BCFF00,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF
Data.q $BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF
Data.q $BFDFFFBFBFDFFFBF,$188CFFA7A7D3FFBF,$50A8FF000080FF18,$50A800000000AF50,$58ACFF000080AF50,$FFFFFFFFFFFFFF58,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$AFD7FFFFFFFFFFFF,$80FF000080FFAF,$289408F7F7FBFF00,$9FCFFF000080D728,$FFFFFFFFFFFFFF9F
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$EFF7FFFFFFFFFFFF,$80FF000080FFEF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$D7EBFFFFFFFFFFFF,$80FF000080FFD7,$209010EFEFF7FF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$50A8FFF7F7FBFFFF,$2090FF000080FF50,$209000000000DF20,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$40A0FF7070B8FFFF,$40A0FF4040A0FF40,$40A0FF4040A0FF40,$40A0FF4040A0FF40,$40A0FF4040A0FF40,$40A0FF4040A0FF40
Data.q $40A0FF4040A0FF40,$40A0FF4040A0FF40,$40A0FF4040A0FF40,$40A0FF4040A0FF40,$80FF000080FF40,$B7DBFF000080FF00,$20900000000048B7,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$60B0FFFFFFFFFFFF,$80FF000080FF60,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$1088FF000080FF00,$609F9FCFEF10,$2090000000000000,$BFDFFF000080DF20
Data.q $FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF6060B0FFFF,$60B0FF000080FF00,$7FBF807F7FBF9F60,$7FBF807F7FBF807F,$7FBF807F7FBF807F,$7FBF807F7FBF807F
Data.q $7FBF807F7FBF807F,$7FBF807F7FBF807F,$7FBF807F7FBF807F,$7FBF807F7FBF807F,$7FBF807F7FBF807F,$E7F340BFBFDF807F,$18E7,$3098000000000000,$8FC7FF000080CF30,$FFFFFFFFFFFFFF8F,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$60B0FFFFFFFFFFFF,$80FF000080FF60,$807F7FBFFF00,0,0,0,0,0,0,0,0,0,0,0,$68B4000000000000,$3098FF0000809768,$FFFFFFF7F7FBFF30,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $80FF6060B0FFFF,$7FBFFF000080FF00,$807F,0,0,0,0,0,0,0,0,0,0,0,$D7EB000000000000,$80F708088428D7,$70B8FF202090FF00,$7FBFFF7F7FBFFF70,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$50A8FF7F7FBFFF7F,$80FF000080FF50,$807F7FBFFF00
Data.q 0,0,0,0,0,0,0,0,0,0,0,0,0,$108850AFAFD70000,$80FF000080EF10,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$7FBFFF000080FF00,$807F,0,0,0,0,0,0,0,0,0,0,0,0,0,$E7F3000000000000,$58AC807F7FBF18E7,$40A0BF4040A0A758
Data.q $40A0BF4040A0BF40,$40A0BF4040A0BF40,$40A0BF4040A0BF40,$40A0BF4040A0BF40,$40A0BF4040A0BF40,$40A0BF4040A0BF40,$788787C3BF40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data.q 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$FFFF000000000000,$FFFF0000FFFFFFFF,$FFFF0000FFFFFFFF,$C00000FFFFFFFF,$80000003000000,$1000000,$1000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$1000000,$1000000,$3000000,$7000000,$FFFFFF00,$FFFFFF01,$800000FFFFFF03
Data.q $C00000FFFFFF07,$FFFF0000FFFFFF0F,$FFFF0000FFFFFFFF,$FFFF0000FFFFFFFF,$FFFFFFFF
	EndDataSection

; EndDefine


Procedure winCB(hWnd,uMsg,wParam,lParam)

	Select uMsg

	Case #WM_DRAWITEM
		*lpdis.DRAWITEMSTRUCT = lParam
		If *lpdis\itemState & #ODS_SELECTED
			FillRect_(*lpdis\hdc,*lpdis\rcItem,hbrush1)
			InflateRect_(*lpdis\rcItem,-1,-1)
			DrawFocusRect_(*lpdis\hdc,*lpdis\rcItem)
			InflateRect_(*lpdis\rcItem,1,1)
			SetTextColor_(*lpdis\hdc,GetSysColor_(#COLOR_HIGHLIGHTTEXT))
		Else
			If 0;*lpdis\itemID & 1 = 1
				FillRect_(*lpdis\hdc, *lpdis\rcItem,hbrush2)
				SetTextColor_(*lpdis\hdc,$3A43FE)
			Else
				FillRect_(*lpdis\hdc, *lpdis\rcItem,hbrush3)
				SetTextColor_(*lpdis\hdc,$FD683C)
			EndIf
		EndIf

		;SelectObject_(*lpdis\hDC,hbrush3)
		;MoveToEx_(*lpdis\hDC,0,*lpdis\rcItem\bottom-1,#Null)
		;LineTo_(*lpdis\hDC,*lpdis\rcItem\right,*lpdis\rcItem\bottom-1)

		wParam=*lpdis\rcItem\top
		*lpdis\rcItem\bottom-1
		*lpdis\rcItem\top=*lpdis\rcItem\bottom
		*lpdis\rcItem\bottom+1
		FillRect_(*lpdis\hdc,*lpdis\rcItem,hbrush1)
		*lpdis\rcItem\top=wParam

		SetBkMode_(*lpdis\hdc,#TRANSPARENT)

		DrawIconEx_(*lpdis\hDC,*lpdis\rcItem\left+10,*lpdis\rcItem\top+6,IconHandle(Bool(s(*lpdis\itemID))),48,48,0,0,#DI_NORMAL)
		*lpdis\rcItem\left+80
		*lpdis\rcItem\top-2
		SelectObject_(*lpdis\hdc,FontID(0))
		DrawText_(*lpdis\hdc,f(*lpdis\itemID),-1,*lpdis\rcItem,#DT_SINGLELINE)
		SelectObject_(*lpdis\hdc,FontID(1))
		*lpdis\rcItem\top+34
		DrawText_(*lpdis\hdc,s(*lpdis\itemID),-1,*lpdis\rcItem, #DT_SINGLELINE)
		*lpdis\rcItem\left+460-xlen(*lpdis\itemID)
		DrawText_(*lpdis\hdc,x(*lpdis\itemID),-1,*lpdis\rcItem, #DT_SINGLELINE)

		ProcedureReturn #True
	EndSelect

	ProcedureReturn #PB_ProcessPureBasicEvents

EndProcedure

OpenWindow(0,0,0,600,400,"ListBox Viewer",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0,10,10,580,380,#LBS_OWNERDRAWFIXED)
SendMessage_(GadgetID(0),#LB_SETITEMHEIGHT,0,64)

SetActiveGadget(0)
For i=0 To 20
	AddGadgetItem(0,-1,"")
Next

SetWindowCallback(@winCB())

Repeat
	Select WaitWindowEvent()
	Case #PB_Event_CloseWindow
		Quit = 1
	EndSelect
Until Quit = 1

DeleteObject_(hbrush1)
DeleteObject_(hbrush2)
DeleteObject_(hbrush3)
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4663
Joined: Sun Apr 12, 2009 6:27 am

Re: Create text fast and smooth...

Post by RASHAD »

Hi MV
The Brushes only created ONCE not every time

Code: Select all

; Define
  #LB_ITEMFROMPOINT = $1A9
  
   Global hbrush1,hbrush2,hbrush3 , penl_1
   Global Dim f.s(20),Dim s.s(20),Dim x.s(20)
   Global Dim xlen.i(20)

   hbrush1 = CreateSolidBrush_(GetSysColor_(#COLOR_HIGHLIGHT))
   hbrush2 = CreateSolidBrush_($94EBFE)
   hbrush3 = CreateSolidBrush_($ECFBFE)
   penl_1  = CreatePen_(#PS_SOLID, 1, $0000FF)

   Global Dim IconHandle(1)

   LoadFont(0,"Segoe UI Semibold",20)
   LoadFont(1,"Segoe UI",14)

   CreateImage(0,1,1)
   StartDrawing(ImageOutput(0))
   DrawingFont(FontID(1))
   For i=0 To 10
      f(i) = "Document File "+Str(i)
      s(i) = "Just for MV "+Str(i)
      x(i) = RSet("*",Random(10),"*")
      xlen(i)=TextWidth(x(i))
   Next i
   StopDrawing()

   IconHandle(0)=CatchImage(0,?Icon2)
   IconHandle(1)=CatchImage(1,?Icon1)


   DataSection
      Icon1:
Data.q $3030000100010000,$25A8002000010000,$28000000160000,$60000000300000,$2000010000,$25800000,0,0,0,0,0,0,0,$BFDF40BFBFDF0000,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF
Data.q $BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$BFDF40BFBFDF40BF,$10EFEFF740BF,0,0,0,0,0,0,0,0,$EFF7000000000000,$809F6060B010EF,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$389CFF000080FF00,$28D7D7EBC738,0,0,0,0,0,0,0,$389C000000000000,$80FF000080C738,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$E7F3EF101088FF00,$18E7,0,0,0,0,0,0,$80689797CB0000,$A7D3FF080884FF00,$FFFFFFFFFFFFFFA7,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$2090FFBFBFDFFFFF,$58ACFF000080FF20,$A758,0,0,0,0,0,0,$80AF5050A80000,$FFFFFF6868B4FF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$A7D3FFFFFFFFFFFF,$1088FF000080FFA7,$EF10,0,0,0,0,0,0,$80D72828940000,$FFFFFF9797CBFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$D7EBFFFFFFFFFFFF,$80FF000080FFD7
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF
Data.q $FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$DFEFFFFFFFFFFFFF,$80FF000080FFDF,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $7FBFFFBFBFDFFFFF,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$6FB7FF7F7FBFFF7F,$80FF000080FF6F,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$48A4FFEFEFF7FFFF,$80FF000080FF48,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$FF00,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF6060B0FFFF,$2E99FF000080FF00,$68B8FF6262B5FF2E,$68B8FF6868B8FF68,$68B8FF6868B8FF68,$80FF0D0D87FF68,$43A1FF000080FF00,$BC43,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$D7EBFFFFFFFFFFFF,$80FF000080FFD7,$D0F0FF8888C9FF00,$D0F0FFD0D0F0FFD0,$D0F0FFD0D0F0FFD0,$4EAAFFD0D0F0FFD0,$80FF000080FF4E,$C03F3F9FFF00,0,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$97CBFFFFFFFFFFFF,$148BFF000080FF97,$D0F0FFD0D0F0FF14,$D0F0FFD0D0F0FFD0,$D0F0FFD0D0F0FFD0,$80FF4E4EAAFFD0,$3F9FFF000080FF00,$C03F,0,0,0,0,0
Data.q 0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$D0F0FFD0D0F0FF34,$D0F0FFD0D0F0FFD0,$4EAAFFD0D0F0FFD0,$80FF000080FF4E
Data.q $C03F3F9FFF00,0,0,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$D0F0FFD0D0F0FF34,$D0F0FFD0D0F0FFD0,$80FF4E4EAAFFD0
Data.q $3F9FFF000080FF00,$C03F,0,0,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$D0F0FFD0D0F0FF34,$4EAAFFD0D0F0FFD0
Data.q $80FF000080FF4E,$C03F3F9FFF00,0,0,0,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$D0F0FFD0D0F0FF34,$80FF4E4EAAFFD0
Data.q $3F9FFF000080FF00,$C03F,0,0,0,0,0,0,0,0,0,$80DF2020900000,$FFFFFF9F9FCFFF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$4EAAFFD0D0F0FF34,$80FF000080FF4E
Data.q $C03F3F9FFF00,0,0,0,0,0,0,0,0,0,0,$80CF3030980000,$FFFFFF8F8FC7FF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$349CFF000080FF7F,$80FF4E4EAAFF34,$3F9FFF000080FF00,$C03F
Data.q 0,0,0,0,0,0,0,0,0,0,$80976868B40000,$FFFFFF4040A0FF00,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$7FBFFFFFFFFFFFFF,$80FF000080FF7F,$80FF000080FF00,$C03F3F9FFF00,0,0,0,0,0,0,0,0,0,0
Data.q 0,$8038C7C7E30000,$48A4FF000080FF00,$BFDFFF9F9FCFFF48,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$5FAFFFBFBFDFFFBF,$80FF000080FF5F,$3F9FFF000080FF00,$C03F,0,0,0,0,0,0,0,0,0,0,0,$8FC7000000000000,$80FF000080708F
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$C03F3F9FFF00,0,0,0,0,0,0,0,0,0,0,0,0,0,$50A848B7B7DB0000,$80E718188CAF50,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$43A1FF000080FF00,$BC43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$E0FF000000000000,$FF0000FF030000,$FF0000FF000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE0000FF000000,$FE0000FF010000,$FE0000FF030000,$FE0000FF070000,$FE0000FF0F0000
Data.q $FE0000FF1F0000,$FE0000FF3F0000,$FE0000FF7F0000,$FE0000FFFF0000,$FF0000FFFF0100,$80FF0000FFFF0300,$FFFF0000FFFF0700,$FFFFFFFF

Icon2:
Data.q $3030000100010000,$25A8002000010000,$28000000160000,$60000000300000,$2000010000,$25800000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$87C3000000000000,$80D72828947887
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00
Data.q $80FF000080FF00,$80FF000080FF00,$68B4EF101088FF00,$10EFEFF79768,0,$80A75858AC0000,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00
Data.q $80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$E7F3E718188CFF00,$A7D30000000018E7,$80FF00008058A7,$BFDFFF7878BCFF00,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF
Data.q $BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF,$BFDFFFBFBFDFFFBF
Data.q $BFDFFFBFBFDFFFBF,$188CFFA7A7D3FFBF,$50A8FF000080FF18,$50A800000000AF50,$58ACFF000080AF50,$FFFFFFFFFFFFFF58,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$AFD7FFFFFFFFFFFF,$80FF000080FFAF,$289408F7F7FBFF00,$9FCFFF000080D728,$FFFFFFFFFFFFFF9F
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$EFF7FFFFFFFFFFFF,$80FF000080FFEF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF
Data.q $209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF000080FFFF,$209020DFDFEFFF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$D7EBFFFFFFFFFFFF,$80FF000080FFD7,$209010EFEFF7FF00,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$50A8FFF7F7FBFFFF,$2090FF000080FF50,$209000000000DF20,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$40A0FF7070B8FFFF,$40A0FF4040A0FF40,$40A0FF4040A0FF40,$40A0FF4040A0FF40,$40A0FF4040A0FF40,$40A0FF4040A0FF40
Data.q $40A0FF4040A0FF40,$40A0FF4040A0FF40,$40A0FF4040A0FF40,$40A0FF4040A0FF40,$80FF000080FF40,$B7DBFF000080FF00,$20900000000048B7,$BFDFFF000080DF20,$FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$60B0FFFFFFFFFFFF,$80FF000080FF60,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$1088FF000080FF00,$609F9FCFEF10,$2090000000000000,$BFDFFF000080DF20
Data.q $FFFFFFFFFFFFFFBF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$80FF6060B0FFFF,$60B0FF000080FF00,$7FBF807F7FBF9F60,$7FBF807F7FBF807F,$7FBF807F7FBF807F,$7FBF807F7FBF807F
Data.q $7FBF807F7FBF807F,$7FBF807F7FBF807F,$7FBF807F7FBF807F,$7FBF807F7FBF807F,$7FBF807F7FBF807F,$E7F340BFBFDF807F,$18E7,$3098000000000000,$8FC7FF000080CF30,$FFFFFFFFFFFFFF8F,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $FFFFFFFFFFFFFFFF,$60B0FFFFFFFFFFFF,$80FF000080FF60,$807F7FBFFF00,0,0,0,0,0,0,0,0,0,0,0,$68B4000000000000,$3098FF0000809768,$FFFFFFF7F7FBFF30,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
Data.q $80FF6060B0FFFF,$7FBFFF000080FF00,$807F,0,0,0,0,0,0,0,0,0,0,0,$D7EB000000000000,$80F708088428D7,$70B8FF202090FF00,$7FBFFF7F7FBFFF70,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$7FBFFF7F7FBFFF7F,$50A8FF7F7FBFFF7F,$80FF000080FF50,$807F7FBFFF00
Data.q 0,0,0,0,0,0,0,0,0,0,0,0,0,$108850AFAFD70000,$80FF000080EF10,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$80FF000080FF00,$7FBFFF000080FF00,$807F,0,0,0,0,0,0,0,0,0,0,0,0,0,$E7F3000000000000,$58AC807F7FBF18E7,$40A0BF4040A0A758
Data.q $40A0BF4040A0BF40,$40A0BF4040A0BF40,$40A0BF4040A0BF40,$40A0BF4040A0BF40,$40A0BF4040A0BF40,$40A0BF4040A0BF40,$788787C3BF40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data.q 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$FFFF000000000000,$FFFF0000FFFFFFFF,$FFFF0000FFFFFFFF,$C00000FFFFFFFF,$80000003000000,$1000000,$1000000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$1000000,$1000000,$3000000,$7000000,$FFFFFF00,$FFFFFF01,$800000FFFFFF03
Data.q $C00000FFFFFF07,$FFFF0000FFFFFF0F,$FFFF0000FFFFFFFF,$FFFF0000FFFFFFFF,$FFFFFFFF
   EndDataSection

; EndDefine


Procedure winCB(hWnd,uMsg,wParam,lParam)

  Select uMsg
        
   Case #WM_DRAWITEM
      *lpdis.DRAWITEMSTRUCT = lParam
      If *lpdis\itemState & #ODS_SELECTED
         FillRect_(*lpdis\hdc,*lpdis\rcItem,hbrush1)
         InflateRect_(*lpdis\rcItem,-1,-1)
         DrawFocusRect_(*lpdis\hdc,*lpdis\rcItem)
         InflateRect_(*lpdis\rcItem,1,1)
         SetTextColor_(*lpdis\hdc,GetSysColor_(#COLOR_HIGHLIGHTTEXT))
      Else
         If 0;*lpdis\itemID & 1 = 1
            FillRect_(*lpdis\hdc, *lpdis\rcItem,hbrush2)
            SetTextColor_(*lpdis\hdc,$3A43FE)
         Else
            FillRect_(*lpdis\hdc, *lpdis\rcItem,hbrush3)
            SetTextColor_(*lpdis\hdc,$FD683C)
         EndIf
      EndIf

 

      wParam=*lpdis\rcItem\top
      *lpdis\rcItem\bottom-1
      *lpdis\rcItem\top=*lpdis\rcItem\bottom
      *lpdis\rcItem\bottom+1
      FillRect_(*lpdis\hdc,*lpdis\rcItem,hbrush1)
      *lpdis\rcItem\top=wParam

      SetBkMode_(*lpdis\hdc,#TRANSPARENT)

      DrawIconEx_(*lpdis\hDC,*lpdis\rcItem\left+10,*lpdis\rcItem\top+6,IconHandle(Bool(s(*lpdis\itemID))),48,48,0,0,#DI_NORMAL)
      *lpdis\rcItem\left+80
      *lpdis\rcItem\top-2
      SelectObject_(*lpdis\hdc,FontID(0))
      DrawText_(*lpdis\hdc,f(*lpdis\itemID),-1,*lpdis\rcItem,#DT_SINGLELINE)
      SelectObject_(*lpdis\hdc,FontID(1))
      *lpdis\rcItem\top+34
      DrawText_(*lpdis\hdc,s(*lpdis\itemID),-1,*lpdis\rcItem, #DT_SINGLELINE)
      *lpdis\rcItem\left+460-xlen(*lpdis\itemID)
      DrawText_(*lpdis\hdc,x(*lpdis\itemID),-1,*lpdis\rcItem, #DT_SINGLELINE)
      SelectObject_(*lpdis\hDC, penl_1)
      MoveToEx_(*lpdis\hDC,0,*lpdis\rcItem\bottom-1,#Null)
      LineTo_(*lpdis\hDC,*lpdis\rcItem\right,*lpdis\rcItem\bottom-1)

      ProcedureReturn #True
   EndSelect

   ProcedureReturn #PB_ProcessPureBasicEvents

EndProcedure

OpenWindow(0,0,0,600,400,"ListBox Viewer",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0,10,10,580,380,#LBS_OWNERDRAWFIXED )
SendMessage_(GadgetID(0),#LB_SETITEMHEIGHT,0,64)

SetActiveGadget(0)
For i=0 To 20
   AddGadgetItem(0,-1,"")
Next

SetWindowCallback(@winCB())
index = 10000
Repeat
   Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Quit = 1
      
    Case #WM_MOUSEMOVE
      GetCursorPos_(p.POINT)
      ScreenToClient_ (GadgetID(0), @p)
      index = SendMessage_(GadgetID(0),#LB_ITEMFROMPOINT,0,p\y<<16+p\x)
      If index <> oldindex 
        SetGadgetState(0,index)
      EndIf
      oldindex = index
   EndSelect
Until Quit = 1

DeleteObject_(hbrush1)
DeleteObject_(hbrush2)
DeleteObject_(hbrush3)
DeleteObject_(penl_1)
Edit : Added tracking items
Last edited by RASHAD on Sat Dec 07, 2019 7:04 pm, edited 2 times in total.
Egypt my love
User avatar
Michael Vogel
Addict
Addict
Posts: 2677
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Re: Create text fast and smooth...

Post by Michael Vogel »

Rashad, do you see the line between the items? I did it with rectangle now, don't think it is very clever. But LineTo_ has no brush parameter, so I thought I need to define it each time.

Tried also to do something like a hover effect, but stopped that because of flickering to much :mrgreen:

Code: Select all

; Define

	Structure ReportDocumentType
		Filepath.s;				Dateipfad
		Filename.s;				Dateiname
		Filesize.q;				Dateigröße
		Filetitle.s;				normalized Title
		Filecomment.s ;			Information
		Fileinfo.s;				additional Info
		Fileinfolen.i;				Text length
		Filetype.i;				Doc/Xls/Pdf/...
		AuthorHours.i;
		AuthorDate.i;
		ModifyDate.i;
	EndStructure

	Global xDocsCounter=18
	Global Dim xDocs.ReportDocumentType(0);		Dateiliste

	Enumeration
		#BrushBackground
		#BrushHover
		#BrushSelection
		;#BrushTitle
		;#BrushText
		#BrushLine
	EndEnumeration

	Global Dim Brush(#BrushLine)
	Brush(#BrushBackground)=CreateSolidBrush_(#White); GetSysColor_(#COLOR_HIGHLIGHT)
	Brush(#BrushHover)=		CreateSolidBrush_($FCFFC5)
	Brush(#BrushSelection)=	CreateSolidBrush_($FBFF9D)
	;Brush(#BrushTitle)=		CreateSolidBrush_($725743)
	;Brush(#BrushText)=		CreateSolidBrush_($89705C)
	Brush(#BrushLine)=		CreateSolidBrush_($D4D0B1)

	Enumeration
		#ColorTitle
		#ColorText
	EndEnumeration

	Global Dim Color(#ColorText)
	Color(#ColorTitle)=		$725743
	Brush(#ColorText)=		$89705C

	LoadFont(0,"Segoe UI Semibold",20)
	LoadFont(1,"Segoe UI",14)

	Enumeration
		#IconDirectory
		#IconDocument
		#IconPdf
		#IconUnknown
		#IconDummy
	EndEnumeration


	Global Dim IconHandle(#IconUnknown)

	IconHandle(#IconDirectory)=	CatchImage(#IconDirectory,?IconDir)
	IconHandle(#IconDocument)=	CatchImage(#IconDocument,?IconDoc)
	IconHandle(#IconPdf)=		CatchImage(#IconPdf,?IconPdf)
	IconHandle(#IconUnknown)=	CatchImage(#IconUnknown,?IconUnknown)
	
	CreateImage(#IconDummy,1,1)
	StartDrawing(ImageOutput(#IconDummy))
	DrawingFont(FontID(1))
	ReDim xDocs(xDocsCounter)
	For i=0 To xDocsCounter
		With xDocs(i)
			\Filename=		"Document File "+Str(i)
			\Filecomment=	"Just for MV "+Str(i)
			\Fileinfo=		RSet("*",Random(10),"*")
			\Fileinfolen=		TextWidth(\Fileinfo)
			\Filetype=		Random(9) : If \Filetype>#IconUnknown : \Filetype=#IconDocument : EndIf
		EndWith

	Next i
	StopDrawing()


	DataSection
		IconDir:
		Data.q $3030000100010000,$EA8000800010000,$28000000160000,$60000000300000,$800010000,$9000000,$100000000000000,$1000000,$F87000000800000,$1E8F0018188C000F,$2D9600202090001E,$3B9D00303098002D,$49A4004040A0003B,$56AB005050A80049,$60B0005858AC0056,$70B8006F6FB70060,$7FBF007878BC0070
		Data.q $8FC7008686C3007F,$9BCD009191C8008F,$A5D2009F9FCF009B,$BEDE00AFAFD700A5,$EFF700D7D7EB00BE,$F7F7FB00EF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		Data.q 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$FFFFFF0000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$101010101010A00,$101010101010101,$101010101010101,$101010101010101,$101010101010101,$1500000000180401,$101010101010101,$101010101010101,$101010101010101
		Data.q $101010101010101,$101010101010101,$100000006010101,$1A1A1A1A1A1A1101,$1A1A1A1A1A1A1A1A,$1A1A1A1A1A1A1A1A,$1A1A1A1A1A1A1A1A,$1A1A1A1A1A1A1A1A,$11300130104181A,$FFFFFFFFFFFFFF0D,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10A00010119FFFF,$FFFFFFFFFFFFFF17
		Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1080001011CFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A
		Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A
		Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A
		Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A
		Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A
		Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$108000101FFFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1080001011BFFFF,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1080008010B1DFF,$FFFFFFFFFFFFFF1A
		Data.q $FFFFFFFFFFFFFFFF,$90910FFFFFFFFFF,$909090909090909,$909090909090909,$108000001010109,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$101010EFFFFFFFF,$101010101010101,$101010101010101,$108000000040101,$FFFFFFFFFFFFFF1A,$FFFFFFFFFFFFFFFF,$1A1701010EFFFFFF,$1A1A1A1A1A1A1A1A,$1A1A1A1A1A1A1A1A
		Data.q $10B00000000001A,$FFFFFFFFFFFFFF14,$FFFFFFFFFFFFFFFF,$1A01010EFFFF,0,0,$118000000000000,$FFFFFFFFFFFF1D07,$FFFFFFFFFFFFFFFF,$1A01010EFF,0,0,$200000000000000,$1111111111100501,$1111111111111111,$1A01010B,0,0,0,$101010101010104,$101010101010101,$1A0101,0,0,0,$F0F0F0F0F151A00
		Data.q $F0F0F0F0F0F0F0F,$F,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$FFFF000000000000,$FFFF0000FFFFFFFF,$FFFF0000FFFFFFFF,$E00000FFFFFFFF,$80000007000000,$80000003000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000
		Data.q $1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$3000000,$7000000,$1F000000,$FFFFFF00,$800000FFFFFF01,$C00000FFFFFF03,$E00000FFFFFF07,$FFFF0000FFFFFF1F,$FFFF0000FFFFFFFF
		Data.q $FFFF0000FFFFFFFF,$FFFFFFFF

		IconDoc:
		Data.q $3030000100010000,$EA8000800010000,$28000000160000,$60000000300000,$800010000,$9000000,$100000000000000,$1000000,$6060004C4C4C0000,$80007474740060,$D87000808840000,$1E8F0014148B000D,$2D9600202090001E,$349C002E2E99002D,$40A0003B3B9D0034,$4EAA004848A40040,$5FAF005656AB004E
		Data.q $62B5006262B0005F,$6EB6006868B40062,$74B9006868B8006E,$8888007F7FBF0074,$97B1009C9C9C0088,$B0B000AEAEAE0097,$8FC7008686C300B0,$91C8008888C9008F,$9BCD009797CB0091,$A6D2009F9FCF009B,$C2C200BFBFDF00A6,$D8D800D1D1D100C2,$DFEF00D7D7EB00D8,$E3E300D0D0F000DF,$EBEBEB00E3,0
		Data.q 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$FFFFFF0000,0,0,0,0,0,0,$2400000000000000,$404040404040404
		Data.q $404040404040404,$404040404040404,$1304040404,0,$413000000000000,$404040404040404,$404040404040404,$404040404040404,$80404040404,0,$504000000000000,$FFFFFFFFFFFFFF26,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$22040927FFFFFF,0,$15041F0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$80426FFFFFFFF,0,$22040F0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$4042BFFFFFFFF,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FF2E2E2E2E2E2E2E,$FFFFFFFFFFFFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$28FFFFFFFFFFFFFF,$1B1A1A2828282A28
		Data.q $FFFFFFFFFFFF2A28,$4042CFFFFFFFF,0,$24040D0000000000,$281BFFFFFFFFFFFF,$1BFFFFFFFFFFFFFF,$FFFFFFFF2F1A0101,$4042CFFFFFFFF,0,$24040D0000000000,$FF1B1EFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFF2F02012828,$4042CFFFFFFFF,0,$24040D0000000000,$FF2802FFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFF030103FFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FF1A01FFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFF2A010128FFFF,$4042CFFFFFFFF,0,$24040D0000000000,$1A0102FFFFFFFFFF,$FFFFFFFFFFFFFF2A,$FFFF1B0101FFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$30128FFFFFFFFFF,$FFFFFFFFFFFFFF28
		Data.q $FFFF1A0101FFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFF1A0101FFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FF281B1A1A1B28FF,$FFFF1A0103FFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$1EFFFFFFFFFFFFFF,$1B2828281A010102
		Data.q $FFFF1E011A2F1B1E,$4042CFFFFFFFF,0,$24040D0000000000,$11AFFFFFFFFFFFF,$FFFFFFFFFF2F1A01,$FFFF280103282EFF,$4042CFFFFFFFF,0,$24040D0000000000,$1011AFFFFFFFFFF,$FFFFFFFFFFFFFF1A,$FFFF280128FFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$301012AFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFF1E03FFFFFFFF
		Data.q $4042CFFFFFFFF,0,$24040D0000000000,$2F01011AFFFFFFFF,$FFFFFFFFFFFFFFFF,$FF2A012FFFFFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FF030102FFFFFFFF,$FFFFFFFFFFFFFFFF,$FF1E2AFFFFFFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FF1B0101FFFFFFFF,$28282FFFFFFFFFFF,$FFFFFFFF2F1B1B1E
		Data.q $4042CFFFFFFFF,0,$24040D0000000000,$FF280101FFFFFFFF,$FF2F0228FFFFFFFF,$FFFFFF1E0128FFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FF280102FFFFFFFF,$FFFF1E012AFFFFFF,$FFFF28011BFFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FF28011BFFFFFFFF,$FFFF28011AFFFFFF,$FFFF03012AFFFFFF
		Data.q $4042CFFFFFFFF,0,$24040D0000000000,$FF1B012AFFFFFFFF,$FFFF1A011AFFFFFF,$FFFF0101FFFFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$FF021AFFFFFFFFFF,$2F0201022FFFFFFF,$FFFF0101FFFFFFFF,$4042CFFFFFFFF,0,$24040D0000000000,$28022FFFFFFFFFFF,$FF2F282FFFFFFFFF,$FFFF1A012AFFFFFF
		Data.q $4042CFFFFFFFF,0,$24040D0000000000,$32FFFFFFFFFFFFF,$FFFFFFFFFFFFFF2F,$191919191C02FFFF,$4041519191919,0,$24040D0000000000,$2FFFFFFFFFFFFFFF,$FFFFFFFFFFFF291B,$4040404040F1DFF,$4040404040404,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$28FFFFFF28282AFF,$1717130B04041303,$18040405171717
		Data.q 0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$2A2828282EFFFFFF,$2D2D2D2D2104042B,$150404102D2D,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$2D2D2D2D2D070422,$150404102D,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$2D2D2D2D2D0C0419,$15040410,0,$24040D0000000000
		Data.q $FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$102D2D2D2D0C0419,$150404,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$4102D2D2D0C0419,$1504,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$404102D2D0C0419,$15,0,$24040D0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $150404102D0C0419,0,0,$2004110000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$150404100C0419,0,0,$E04260000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$150404040419,0,0,$404000000000000,$272727272727240F,$2727272727272727,$1504040412,0,0,$400000000000000,$404040404040404
		Data.q $404040404040404,$15040404,0,0,0,$404040404040A1F,$404040404040404,$180404,0,0,0,0,0,0,0,$FFFF000000000000,$80FF0000FFFFFFFF,$FF0000FF010000,$FF0000FF000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
		Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
		Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE0000FF000000,$FE0000FF010000,$FE0000FF030000,$FE0000FF070000,$FE0000FF0F0000,$FE0000FF1F0000,$FE0000FF3F0000,$FE0000FF7F0000,$FF0000FFFF0000
		Data.q $80FF0000FFFF0100,$C0FF0000FFFF0300,$FFFF0000FFFF0700,$FFFFFFFF

		IconPdf:
		Data.q $3030000100010000,$EA8000800010000,$28000000160000,$60000000300000,$800010000,$9000000,$100000000000000,$1000000,$884000000800000,$1E8F0014148B0008,$2D9600202090001E,$349C002E2E99002D,$40A0003B3B9D0034,$4EAA004848A40040,$5FAF005656AB004E,$68B4006262B0005F,$74B9006868B80068
		Data.q $1919007F7FBF0074,$1E1E00EA1A1A00E6,$272700FA1F1F00F6,$343400EC282800EA,$2A2A00EF373700E6,$2C2C00FE202000F6,$3A3A00F5383800FC,$505000EC444400FD,$464600EB525200E7,$545400FD484800F5,$616100FD565600F5,$707000FC656500F1,$737300F57F7F00F1,$8FC7008686C300FE,$91C8008888C9008F
		Data.q $A6D2009B9BCD0091,$8B8B00BFBFDF00A6,$808000F28C8C00EF,$9A9A00FC8E8E00F8,$A8A800FD9C9C00F6,$B7B700FDAAAA00F6,$D7EB00FDB8B800F8,$D0F000DFDFEF00D7,$C5C500F7C5C500D0,$EFF700FDD4D400F9,$F0F000FDE2E200EF,$FE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		Data.q 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$FFFFFF0000,0,0,0,0,0,0,$3100000000000000,$101010101010101,$101010101010101,$101010101010101,$F01010101,0,$10F000000000000,$101010101010101
		Data.q $101010101010101,$101010101010101,$40101010101,0,$201000000000000,$FFFFFFFFFFFFFF32,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$30010533FFFFFF,0,$10012D0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$40132FFFFFFFF,0,$30010B0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$1013EFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFF43271D2CFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFF431E25391DFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FF451E25452027FF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FF251E45252546FF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$371739272946FFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$1E25273BFFFFFFFF,$FFFFFFFFFFFFFF45
		Data.q $FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$163D46FFFFFFFFFF,$FFFFFFFFFFFF4529,$FFFFFFFFFFFFFFFF,$1013FFF464242,0,$3101090000000000,$37FFFFFFFFFFFFFF,$FFFFFF4236241F16,$15213845FFFFFFFF,$1013FFF232114,0,$3101090000000000,$46FFFFFFFFFFFFFF,$2B2616243743261C
		Data.q $3C2A18152A45423B,$1013FFF35FFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$2B3C46FFFF421639,$352A211515151526,$1013FFF1A1A23,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$46FFFFFFFF261FFF,$3535353A42281524,$1013FFF463C35,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$2446FFFF42163BFF
		Data.q $FFFFFFFFFFFF3C19,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$1524FFFF261FFFFF,$FFFFFFFFFFFFFF42,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$38153543153BFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FF2315261BFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FF42151535FFFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFF231545FFFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFF35153CFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFF231435FFFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFF232123FFFFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFF352B14FFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFF38381446FFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFF41421442FFFF,$FFFFFFFFFFFFFFFF,$1013FFFFFFFFF,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FF4335411442FFFF
		Data.q $1313131333FFFFFF,$1011013131313,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FF4522341445FFFF,$1010101010BFFFF,$1010101010101,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFF432241FFFFFF,$11110F070101FFFF,$12010102111111,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $404040402F01013E,$1001010C4040,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$4040404040030130,$1001010C40,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$4040404040080113,$1001010C,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$C40404040080113
		Data.q $100101,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10C404040080113,$1001,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1010C4040080113,$10,0,$3101090000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1001010C40080113,0,0,$2E010D0000000000,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$1001010C080113,0,0,$A01320000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$100101010113,0,0,$101000000000000,$333333333333310B,$3333333333333333,$100101010E,0,0,$100000000000000,$101010101010101,$101010101010101,$10010101,0,0,0,$10101010101062D,$101010101010101
		Data.q $120101,0,0,0,0,0,0,0,$FFFF000000000000,$80FF0000FFFFFFFF,$FF0000FF010000,$FF0000FF000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
		Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
		Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE0000FF000000,$FE0000FF010000,$FE0000FF030000,$FE0000FF070000,$FE0000FF0F0000,$FE0000FF1F0000,$FE0000FF3F0000,$FE0000FF7F0000,$FF0000FFFF0000,$80FF0000FFFF0100,$C0FF0000FFFF0300,$FFFF0000FFFF0700,$FFFFFFFF


		IconUnknown:
		Data.q $3030000100010000,$EA8000800010000,$28000000160000,$60000000300000,$800010000,$9000000,$100000000000000,$1000000,$884000000800000,$148B000D0D870008,$2090001E1E8F0014,$2E99002D2D960020,$3B9D0034349C002E,$48A4004040A0003B,$56AB004E4EAA0048,$62B0005F5FAF0056,$68B4006262B50062
		Data.q $68B8006E6EB60068,$7FBF007474B90068,$8FC7008686C3007F,$91C8008888C9008F,$9BCD009797CB0091,$A6D2009F9FCF009B,$D7EB00BFBFDF00A6,$D0F000DFDFEF00D7,$EFEFF700D0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
		Data.q 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,$FFFFFF0000,0,0,0,0,0,0,$1C00000000000000,$101010101010101,$101010101010101,$101010101010101,$1001010101,0,$110000000000000,$101010101010101,$101010101010101
		Data.q $101010101010101,$50101010101,0,$201000000000000,$FFFFFFFFFFFFFF1E,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1A01061FFFFFFF,0,$1201170000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$5011EFFFFFFFF,0,$1A010C0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $10120FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10121FFFFFFFF,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$161616161FFFFFFF
		Data.q $1011216161616,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1010101010C23FF,$1010101010101,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$14141008010110FF,$15010102141414,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$2222222219010120
		Data.q $1201010D2222,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$222222222204011A,$1201010D22,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$2222222222090116,$1201010D,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$D22222222090116,$120101,0
		Data.q $1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$10D222222090116,$1201,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1010D2222090116,$12,0,$1C010A0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$1201010D22090116,0,0,$18010E0000000000,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$1201010D090116,0,0,$B011E0000000000,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$120101010116,0,0,$101000000000000,$1F1F1F1F1F1F1C0C,$1F1F1F1F1F1F1F1F,$120101010F,0,0,$100000000000000,$101010101010101,$101010101010101,$12010101,0,0,0,$101010101010717,$101010101010101
		Data.q $150101,0,0,0,0,0,0,0,$FFFF000000000000,$80FF0000FFFFFFFF,$FF0000FF010000,$FF0000FF000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
		Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
		Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE0000FF000000,$FE0000FF010000,$FE0000FF030000,$FE0000FF070000,$FE0000FF0F0000,$FE0000FF1F0000,$FE0000FF3F0000,$FE0000FF7F0000,$FF0000FFFF0000,$80FF0000FFFF0100,$C0FF0000FFFF0300,$FFFF0000FFFF0700,$FFFFFFFF
	EndDataSection

; EndDefine

Global update

Procedure winCB(hWnd,uMsg,wParam,lParam)

	Select uMsg

	Case #WM_DRAWITEM
		;Debug ElapsedMilliseconds()
		*lpdis.DRAWITEMSTRUCT = lParam

		If *lpdis\itemID<xDocsCounter
			With xDocs(*lpdis\itemID)

				If *lpdis\itemState & #ODS_SELECTED
					FillRect_(*lpdis\hdc,*lpdis\rcItem,Brush(#BrushSelection))
					InflateRect_(*lpdis\rcItem,-1,-1)
					DrawFocusRect_(*lpdis\hdc,*lpdis\rcItem)
					InflateRect_(*lpdis\rcItem,1,1)
					SetTextColor_(*lpdis\hdc,GetSysColor_(#COLOR_HIGHLIGHTTEXT))
				Else
					If *lpdis\itemID=update
						FillRect_(*lpdis\hdc, *lpdis\rcItem,Brush(#BrushHover))
					Else
						FillRect_(*lpdis\hdc, *lpdis\rcItem,Brush(#BrushBackground))
						SetTextColor_(*lpdis\hdc,$FD683C)
					EndIf
				EndIf

				;SelectObject_(*lpdis\hDC,hbrush3)
				;MoveToEx_(*lpdis\hDC,0,*lpdis\rcItem\bottom-1,#Null)
				;LineTo_(*lpdis\hDC,*lpdis\rcItem\right,*lpdis\rcItem\bottom-1)

				wParam=*lpdis\rcItem\top
				*lpdis\rcItem\bottom-1
				*lpdis\rcItem\top=*lpdis\rcItem\bottom
				*lpdis\rcItem\bottom+1
				FillRect_(*lpdis\hdc,*lpdis\rcItem,Brush(#BrushLine))
				*lpdis\rcItem\top=wParam

				SetBkMode_(*lpdis\hdc,#TRANSPARENT)

				DrawIconEx_(*lpdis\hDC,*lpdis\rcItem\left+10,*lpdis\rcItem\top+6,IconHandle(\Filetype),48,48,0,0,#DI_NORMAL)
				*lpdis\rcItem\left+80
				*lpdis\rcItem\top-2
				SelectObject_(*lpdis\hdc,FontID(0))
				SetTextColor_(*lpdis\hdc,Color(#ColorTitle))
				DrawText_(*lpdis\hdc,\Filename,-1,*lpdis\rcItem,#DT_SINGLELINE)
				SelectObject_(*lpdis\hdc,FontID(1))
				*lpdis\rcItem\top+34
				SetTextColor_(*lpdis\hdc,Color(#ColorText))
				DrawText_(*lpdis\hdc,\Filecomment,-1,*lpdis\rcItem, #DT_SINGLELINE)
				*lpdis\rcItem\left+460-\Fileinfolen
				DrawText_(*lpdis\hdc,\Fileinfo,-1,*lpdis\rcItem, #DT_SINGLELINE)

			EndWith
		EndIf

		ProcedureReturn #True
	EndSelect

	ProcedureReturn #PB_ProcessPureBasicEvents

EndProcedure

OpenWindow(0,0,0,600,400,"ListBox Viewer",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListViewGadget(0,10,10,580,380,#LBS_OWNERDRAWFIXED)
SendMessage_(GadgetID(0),#LB_SETITEMHEIGHT,0,64)

SetActiveGadget(0)
For i=0 To 20
	AddGadgetItem(0,-1,"")
Next

SetWindowCallback(@winCB())
pt.point

Repeat
	Select WaitWindowEvent()
			
		Case #WM_MOUSEMOVE; Try to show a hover rectangle...
		GetCursorPos_(pt)
		ScreenToClient_(GadgetID(0),pt)
		If pt\y>0 And pt\y<400
			update=pt\y/64
			; SetGadgetItemText(0,update,""); Force Updating...
		EndIf

	Case #WM_CHAR
		
	Case #PB_Event_CloseWindow
		Quit = 1
	EndSelect
Until Quit = 1

For i=0 To #BrushLine
	DeleteObject_(i)
Next i

RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4663
Joined: Sun Apr 12, 2009 6:27 am

Re: Create text fast and smooth...

Post by RASHAD »

Previous post updated while you was posting :mrgreen:
You can also play with the thickness of the line
Updated again
Added tracking items
No flicker
Egypt my love
User avatar
Michael Vogel
Addict
Addict
Posts: 2677
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Re: Create text fast and smooth...

Post by Michael Vogel »

Hi Rashad, still fighting...
...maybe you've another idea to tune that a little bit...

Flickering - I could get rid of the multiple updates causes the flickering (especially the topmost list entry gets updated permanentely)

Hovering - also works fine now (as well as selecting an item)

Full Updates - that's the other side of the coin. Now some of the list entries are not displayed in certain situations:
  • at the first initialization
  • while moving the scrollbar
  • when moving the mouse outside of the window after moving the scrollbar

Code: Select all

Global ListRedraw
Global ListFirstLine,ListFirstLineOld
Global SortDirection
Global update
Global index
Global Bug.s
Global time.i

; Define

	Structure ReportDocumentType
		Filepath.s;				Dateipfad
		Filename.s;				Dateiname
		Filesize.q;				Dateigröße
		Filetitle.s;				normalized Title
		Filecomment.s ;			Information
		Fileinfo.s;				additional Info
		Fileinfolen.i;				Text length
		Filetype.i;				Doc/Xls/Pdf/...
		AuthorHours.i;
		AuthorDate.i;
		ModifyDate.i;
		UpdateCounter.i;
		CallCounter.i
	EndStructure

	#Undefined=-1

	Global xDocsActive=#Undefined
	Global xDocsCounter=18
	Global Dim xDocs.ReportDocumentType(0);		Dateiliste

	Enumeration
		#IdWin
		#IdTitle
		#IdReport
		#IdQuit
		#KeyUpdate
	EndEnumeration

	#Border=		10
	#TitleHeight=	80
	#TitleWidth= 	580
	#LineWidth= 	580
	#LineHeight= 	64
	#LinesMin=		4
	#LinesMax=  	15
	#ExtraWidth=	#Border*2
	#ExtraHeight=	#TitleHeight+#Border*2
	#ButtonHeight=	30
	#ButtonWidth=	105
	#ButtonSpace=	10

	Enumeration
		#BrushBackground;	0
		#BrushHover;		1
		#BrushSelection;		2
		#BrushHovSel;		3
		;#BrushTitle
		;#BrushText
		#BrushLine
	EndEnumeration

	Global Dim Brush(#BrushLine)
	Brush(#BrushBackground)=CreateSolidBrush_(#White); GetSysColor_(#COLOR_HIGHLIGHT)
	Brush(#BrushHover)=		CreateSolidBrush_($FFF9CE)
	Brush(#BrushSelection)=	CreateSolidBrush_($FBFF9D)
	Brush(#BrushHovSel)=	CreateSolidBrush_($EBEF8D)
	Brush(#BrushLine)=		CreatePen_(#PS_SOLID,1,$E0D8C0)

	Enumeration
		#ColorTitle
		#ColorText
	EndEnumeration

	Global Dim Color(#ColorText)
	Color(#ColorTitle)=		$725743
	Color(#ColorText)=		$89705C

	Enumeration
		#FontLarge
		#FontMedium
		#FontSmall
	EndEnumeration

	LoadFont(#FontLarge,"Segoe UI Semibold",18)
	LoadFont(#FontMedium,"Segoe UI",15)
	LoadFont(#FontSmall,"Segoe UI",12)

	Enumeration
		#ImageDirectory
		#ImageDocument
		#ImagePdf
		#ImageUnknown
		#ImageDummy
		#ImageTitle
	EndEnumeration

	Global Dim IconHandle(#ImageUnknown)

	IconHandle(#ImageDirectory)=	CatchImage(#ImageDirectory,?IconDir)
	IconHandle(#ImageDocument)=CatchImage(#ImageDocument,?IconDoc)
	IconHandle(#ImagePdf)=		CatchImage(#ImagePdf,?IconPdf)
	IconHandle(#ImageUnknown)=	CatchImage(#ImageUnknown,?IconUnknown)


	CreateImage(#ImageDummy,1,1)
	StartDrawing(ImageOutput(#ImageDummy))
	DrawingFont(FontID(#FontSmall))
	ReDim xDocs(xDocsCounter)
	For i=0 To xDocsCounter
		With xDocs(i)
			\Filename=		"Document File "+Str(i)
			\Filecomment=	"Just for MV "+Str(i)
			\Fileinfo=		RSet("*",Random(10),"*")
			\Fileinfolen=		TextWidth(\Fileinfo)
			\Filetype=		Random(9) :
			If \Filetype>#ImageUnknown : \Filetype=#ImageDocument : EndIf
		EndWith

	Next i
	StopDrawing()

	Enumeration
		#TitleOff
		#TitleHide
		#TitleVisible
		#TitleActive
	EndEnumeration

	Structure TitleType
		Mode.i
		Button.i
	EndStructure

	Global Title.TitleType

	DataSection
		IconDir:
		Data.q $3030000100010000,$668000400010010,$28000000160000,$60000000300000,$400010000,$4800000,0,0,$8000008000000000,$80008080000000,$8080008000800000,$C0C0008080800000,$FF0000FF000000C0,$FF00FFFF000000,$FFFF00FF00FF0000,$FFFFFF0000,0,0,0,0,0,0,0,0,$700000000000000,$4444444444444444
		Data.q $4444444444444444,$4408008044444444,$4444444444444444,$4444444444444444,$4704004444444444,$8888888888888888,$8888888888888888,$7F74704488888888,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F744084FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF
		Data.q $FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F4440F4FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F444084FFFFFFFF,$FFFFFFFFFFFFFFFF,$FFFFFFFFFFFFFFFF,$8F444074FFFFFFFF,$FFFFFFFFFFFFFFFF,$555555555555F7FF,$8F44004454555555,$FFFFFFFFFFFFFFFF
		Data.q $44444444444474FF,$8F44004044444444,$FFFFFFFFFFFFFFFF,$88888888888844F7,$8F74000080888888,$FFFFFFFFFFFFFFFF,$4874,$4F84000000000000,$F7FFFFFFFFFFFFFF,$8044,$4404000000000000,$7477777777777777,$48,$4400000000000000,$4444444444444444,$80,$800000000000000,$7077777777777787
		Data.q 0,0,0,0,0,0,0,0,0,0,$FFFF000000000000,$FFFF0000FFFFFFFF,$FFFF0000FFFFFFFF,$E00000FFFFFFFF,$80000007000000,$80000003000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000
		Data.q $1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$1000000,$3000000,$7000000,$1F000000,$FFFFFF00,$800000FFFFFF01,$C00000FFFFFF03,$E00000FFFFFF07,$FFFF0000FFFFFF1F,$FFFF0000FFFFFFFF,$FFFF0000FFFFFFFF,$FFFFFFFF

		IconDoc:
		Data.q $3030000100010000,$668000400010010,$28000000160000,$60000000300000,$400010000,$4800000,0,0,$8000008000000000,$80008080000000,$8080008000800000,$C0C0008080800000,$FF0000FF000000C0,$FF00FFFF000000,$FFFF00FF00FF0000,$FFFFFF0000,0,0,0,$4444444444080000,$4444444444444444
		Data.q $7044,$4444444444740000,$4444444444444444,$4444,$FFFFFFFF8F440000,$FFFFFFFFFFFFFFFF,$8044F8,$FFFFFFFFFF470700,$FFFFFFFFFFFFFFFF,$4084FF,$FFFFFFFFFF480700,$FFFFFFFFFFFFFFFF,$4084FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400
		Data.q $FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$88F8FFFFFF480400,$FFFFFFFF88778788,$40F4FF,$FF78FFFFFF480400,$FFFFFF7F77F7FFFF,$40F4FF,$FF7FF8FFFF480400,$FFFFFF7788FFFFFF,$40F4FF,$FF8FF7FFFF480400,$FFFF7F77FFFFFFFF,$40F4FF,$FF7FF7FFFF480400,$FFFF7887FFFFFFFF
		Data.q $40F4FF,$8F77F7FFFF480400,$FFFF77F7FFFFFFFF,$40F4FF,$8F77F8FFFF480400,$FFFF77F7FFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFF77F7FFFFFFFF,$40F4FF,$F8FFFFFFFF480400,$FFFF77F7FF8F7777,$40F4FF,$77F8FFFFFF480400,$FFFF78F787878877,$40F4FF,$7777FFFFFF480400,$FFFF7887FFFFFFFF,$40F4FF
		Data.q $7F77F7FFFF480400,$FFFF78F8FFFFFFFF,$40F4FF,$FF7787FFFF480400,$FFFF78FFFFFFFFFF,$40F4FF,$FF7F77FFFF480400,$FF8FF7FFFFFFFFFF,$40F4FF,$FF7F77FFFF480400,$FF8FF8FFFFFFFFFF,$40F4FF,$FF7F77FFFF480400,$FFFFFF7F8788FFFF,$40F4FF,$FF8F77FFFF480400,$FFFF8F87FFFF87FF,$40F4FF,$FF8F77FFFF480400
		Data.q $FFFF78F7FFFF78F8,$40F4FF,$FF8F77FFFF480400,$FFFF77F8FFFF78F7,$40F4FF,$FF7F87FFFF480400,$FFFF77FFFFFF77F7,$40F4FF,$FF7FF7FFFF480400,$FFFF77FFFF7F77FF,$40F4FF,$FF78FFFFFF480400,$FFFF77F8FFFFF8FF,$40F4FF,$FFF7FFFFFF480400,$77777777FFFFFFFF,$407477,$78FFFFFFFF480400,$44444474F8FFFFFF
		Data.q $404444,$F8FFFFFFFF480400,$7777474477F8FF88,$704474,$FFFFFFFFFF480400,$88888847848888FF,$4774,$FFFFFFFFFF480400,$8788884884FFFFFF,$7044,$FFFFFFFFFF480400,$7488884874FFFFFF,$47,$FFFFFFFFFF480400,$4487884874FFFFFF,$70,$FFFFFFFFFF480400,$4774884874FFFFFF,0,$FFFFFFFFFF480400
		Data.q $7044874874FFFFFF,0,$FFFFFFFFFF480400,$47744874FFFFFF,0,$FFFFFFFFFF480700,$70444774FFFFFF,0,$FFFFFFFFFF450800,$474474FFFFFF,0,$8888888878440000,$704474888888,0,$4444444444040000,$4744444444,0,$4444444474000000,$7044444444,0,0,0,$FFFF000000000000,$80FF0000FFFFFFFF,$FF0000FF010000
		Data.q $FF0000FF000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
		Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE0000FF000000
		Data.q $FE0000FF010000,$FE0000FF030000,$FE0000FF070000,$FE0000FF0F0000,$FE0000FF1F0000,$FE0000FF3F0000,$FE0000FF7F0000,$FF0000FFFF0000,$80FF0000FFFF0100,$C0FF0000FFFF0300,$FFFF0000FFFF0700,$FFFFFFFF

		IconPdf:
		Data.q $3030000100010000,$668000400010010,$28000000160000,$60000000300000,$400010000,$4800000,0,0,$8000008000000000,$80008080000000,$8080008000800000,$C0C0008080800000,$FF0000FF000000C0,$FF00FFFF000000,$FFFF00FF00FF0000,$FFFFFF0000,0,0,0,$4444444444080000,$4444444444444444
		Data.q $7044,$4444444444740000,$4444444444444444,$4444,$FFFFFFFF8F440000,$FFFFFFFFFFFFFFFF,$8044F8,$FFFFFFFFFF470700,$FFFFFFFFFFFFFFFF,$4084FF,$FFFFFFFFFF480700,$FFFFFFFFFFFFFFFF,$4084FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400
		Data.q $FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFF99F8480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFF9F89F9480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFF999FF9480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FF9FF999FF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FF9898F7FF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FF9989FFFF480400,$FFFFFFFFFFFFFFFF
		Data.q $40F4FF,$7F89FFFFFF480400,$88FFFFFFFFFFFFFF,$40F4FF,$99F8FFFFFF480400,$9999F8FFFFFF8F98,$40F49F,$99FFFFFFFF480400,$FF7899F7889899F8,$40F48F,$89FFFFFFFF480400,$997899999988FF8F,$40F49F,$F9FFFFFFFF480400,$8888887899FFFF9F,$40F4FF,$F8FFFFFFFF480400,$FFFFFFFF98F9FF98,$40F4FF
		Data.q $FFFFFFFFFF480400,$FFFFFFFF8F99FF99,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFF98F889,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFF9F99F9,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFF8F99F8,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFF99FF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFF98F8,$40F4FF,$FFFFFFFFFF480400
		Data.q $FFFFFFFFFFFF99F8,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFF99F9,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFF88F9,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFF88F9,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFF8889,$40F4FF,$FFFFFFFFFF480400,$777777F8FFFF8889,$407477,$FFFFFFFFFF480400,$44444474FFFF89F9
		Data.q $404444,$FFFFFFFFFF480400,$77774744FFFF9FF8,$704474,$FFFFFFFFFF480400,$8888884784FFFFFF,$4774,$FFFFFFFFFF480400,$8788884884FFFFFF,$7044,$FFFFFFFFFF480400,$7488884874FFFFFF,$47,$FFFFFFFFFF480400,$4487884874FFFFFF,$70,$FFFFFFFFFF480400,$4774884874FFFFFF,0,$FFFFFFFFFF480400
		Data.q $7044874874FFFFFF,0,$FFFFFFFFFF480400,$47744874FFFFFF,0,$FFFFFFFFFF480700,$70444774FFFFFF,0,$FFFFFFFFFF450800,$474474FFFFFF,0,$8888888878440000,$704474888888,0,$4444444444040000,$4744444444,0,$4444444474000000,$7044444444,0,0,0,$FFFF000000000000,$80FF0000FFFFFFFF,$FF0000FF010000
		Data.q $FF0000FF000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
		Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE0000FF000000
		Data.q $FE0000FF010000,$FE0000FF030000,$FE0000FF070000,$FE0000FF0F0000,$FE0000FF1F0000,$FE0000FF3F0000,$FE0000FF7F0000,$FF0000FFFF0000,$80FF0000FFFF0100,$C0FF0000FFFF0300,$FFFF0000FFFF0700,$FFFFFFFF

		IconUnknown:
		Data.q $3030000100010000,$668000400010010,$28000000160000,$60000000300000,$400010000,$4800000,0,0,$8000008000000000,$80008080000000,$8080008000800000,$C0C0008080800000,$FF0000FF000000C0,$FF00FFFF000000,$FFFF00FF00FF0000,$FFFFFF0000,0,0,0,$4444444444080000,$4444444444444444
		Data.q $7044,$4444444444740000,$4444444444444444,$4444,$FFFFFFFF8F440000,$FFFFFFFFFFFFFFFF,$8044F8,$FFFFFFFFFF470700,$FFFFFFFFFFFFFFFF,$4084FF,$FFFFFFFFFF480700,$FFFFFFFFFFFFFFFF,$4084FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400
		Data.q $FFFFFFFFFFFFFFFF,$40F4FF,$888888F8FF480400,$8F88888888888888,$40F4FF,$EEEEEEFEFF480400,$EFEEEEEEEEEEEEEE,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$888888F8FF480400,$8F88888888888888
		Data.q $40F4FF,$EEEEEEFEFF480400,$EFEEEEEEEEEEEEEE,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$888888F8FF480400,$8F88888888888888,$40F4FF,$EEEEEEFEFF480400,$EFEEEEEEEEEEEEEE,$40F4FF
		Data.q $FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$888888F8FF480400,$8F88888888888888,$40F4FF,$EEEEEEFEFF480400,$EFEEEEEEEEEEEEEE,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400
		Data.q $FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$888888F8FF480400,$8F88888888888888,$40F4FF,$EEEEEEFEFF480400,$EFEEEEEEEEEEEEEE,$40F4FF,$FFFFFFFFFF480400,$FFFFFFFFFFFFFFFF,$40F4FF,$FFFFFFFFFF480400,$777777F8FFFFFFFF,$407477,$FFFFFFFFFF480400,$44444474FFFFFFFF
		Data.q $404444,$888888F8FF480400,$7777474487888888,$704474,$EEEEEEFEFF480400,$8888884774EEEEEE,$4774,$FFFFFFFFFF480400,$8788884884FFFFFF,$7044,$FFFFFFFFFF480400,$7488884874FFFFFF,$47,$FFFFFFFFFF480400,$4487884874FFFFFF,$70,$FFFFFFFFFF480400,$4774884874FFFFFF,0,$FFFFFFFFFF480400
		Data.q $7044874874FFFFFF,0,$FFFFFFFFFF480400,$47744874FFFFFF,0,$FFFFFFFFFF480700,$70444774FFFFFF,0,$FFFFFFFFFF450800,$474474FFFFFF,0,$8888888878440000,$704474888888,0,$4444444444040000,$4744444444,0,$4444444474000000,$7044444444,0,0,0,$FFFF000000000000,$80FF0000FFFFFFFF,$FF0000FF010000
		Data.q $FF0000FF000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000
		Data.q $FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE00007F000000,$FE0000FF000000
		Data.q $FE0000FF010000,$FE0000FF030000,$FE0000FF070000,$FE0000FF0F0000,$FE0000FF1F0000,$FE0000FF3F0000,$FE0000FF7F0000,$FF0000FFFF0000,$80FF0000FFFF0100,$C0FF0000FFFF0300,$FFFF0000FFFF0700,$FFFFFFFF
	EndDataSection


	#LB_ITEMFROMPOINT = $1A9

; EndDefine

Macro ReportFirstLine()
	GetScrollPos_(GadgetID(#IdReport),#SB_VERT)
EndMacro

Procedure winCB(hWnd,uMsg,wParam,lParam)

	Select uMsg

	Case #WM_DRAWITEM
		;Debug ElapsedMilliseconds()
		*lpdis.DRAWITEMSTRUCT = lParam

		If *lpdis\itemID<xDocsCounter
			If ElapsedMilliseconds()>time+25
				time=ElapsedMilliseconds()
				Debug ">"+bug
				bug=""
			EndIf
			bug+" "+Str(*lpdis\itemID)+"/"+Str(*lpdis\itemData)

			If *lpdis\itemData
				;*lpdis\itemData=0
				;SetGadgetItemData(#IdReport,*lpdis\itemID,#Null)

				With xDocs(*lpdis\itemID)
					If \UpdateCounter=0;>\CallCounter
						ProcedureReturn #True
					EndIf
					\UpdateCounter=0

					If *lpdis\itemState & #ODS_SELECTED
						FillRect_(*lpdis\hdc,*lpdis\rcItem,Brush(#BrushSelection+Bool(*lpdis\itemID=index)))
						InflateRect_(*lpdis\rcItem,-1,-1)
						DrawFocusRect_(*lpdis\hdc,*lpdis\rcItem)
						InflateRect_(*lpdis\rcItem,1,1)
						SetTextColor_(*lpdis\hdc,GetSysColor_(#COLOR_HIGHLIGHTTEXT))
					Else
						If *lpdis\itemID=index
							FillRect_(*lpdis\hdc, *lpdis\rcItem,Brush(#BrushHover))
							SetTextColor_(*lpdis\hdc,$FD683C)
						Else
							FillRect_(*lpdis\hdc, *lpdis\rcItem,Brush(#BrushBackground))
							SetTextColor_(*lpdis\hdc,$FD683C)
						EndIf
					EndIf

					SetBkMode_(*lpdis\hdc,#TRANSPARENT)
					DrawIconEx_(*lpdis\hDC,*lpdis\rcItem\left+10,*lpdis\rcItem\top+7,IconHandle(\Filetype),48,48,0,0,#DI_NORMAL)
					*lpdis\rcItem\left+80
					;*lpdis\rcItem\top-2
					SelectObject_(*lpdis\hdc,FontID(#FontLarge))
					SetTextColor_(*lpdis\hdc,Color(#ColorTitle))
					DrawText_(*lpdis\hdc,\Filename,-1,*lpdis\rcItem,#DT_SINGLELINE)
					SelectObject_(*lpdis\hdc,FontID(#FontSmall))
					*lpdis\rcItem\top+32
					SetTextColor_(*lpdis\hdc,Color(#ColorText))

					If GetKeyState_(#VK_SHIFT)&128
						DrawText_(*lpdis\hdc,"Update counter "+Str(\UpdateCounter)+"    --   Time stamp "+Str(ElapsedMilliseconds()),-1,*lpdis\rcItem, #DT_SINGLELINE)
					Else
						DrawText_(*lpdis\hdc,"Update counter "+Str(\UpdateCounter)+"  /  "+Str(\CallCounter),-1,*lpdis\rcItem, #DT_SINGLELINE)
					EndIf

					*lpdis\rcItem\left+460-\Fileinfolen
					DrawText_(*lpdis\hdc,\Fileinfo,-1,*lpdis\rcItem, #DT_SINGLELINE)

					SelectObject_(*lpdis\hDC,Brush(#BrushLine))
					MoveToEx_(*lpdis\hDC,30,*lpdis\rcItem\bottom-1,#Null)
					LineTo_(*lpdis\hDC,*lpdis\rcItem\right-30,*lpdis\rcItem\bottom-1)

				EndWith
			EndIf
		EndIf

		ProcedureReturn #True
	EndSelect

	ProcedureReturn #PB_ProcessPureBasicEvents

EndProcedure
Procedure TitleGadget()

	Protected i,x,color

	StartDrawing(CanvasOutput(#IdTitle))
	Box(0,0,OutputWidth(),OutputHeight(),#White)

	DrawingFont(FontID(#FontLarge))
	If Title\Mode<#TitleVisible
		DrawText(10,20,"Reporting Tool",Color(#ColorTitle),#White)
	Else
		DrawText(10,20,"Reporting Tool",Color(#ColorText),#White)
		DrawingFont(FontID(#FontMedium))
		DrawingMode(#PB_2DDrawing_Transparent)
		For i=1 To 5
			color=$B78A74
			If i=Title\Button
				If Title\Mode=#TitleActive
					color=$012FC8
				Else
					color=$F69570
				EndIf
			EndIf
			x=(#ButtonWidth+#ButtonSpace)*i-#ButtonWidth
			Box(x,0,#ButtonWidth,#ButtonHeight,color)
			DrawText(x,y,"  Sort Now",#White,0)
		Next i
	EndIf

	StopDrawing()

EndProcedure

Procedure UpdateList(n)

	Protected r.rect

	#UpdateStop=	-60000001
	#UpdateStart=	-60000002
	#UpdateAll=		-60000003
	#UpdateNow=	-60000004
	#UpdateNothing=	-60000005

	If n<0
		Select n
		Case #UpdateStop
			SendMessage_(GadgetID(#IdReport),#WM_SETREDRAW,#False,0)

		Case #UpdateStart
			SendMessage_(GadgetID(#IdReport),#WM_SETREDRAW,#True,0)

		Case #UpdateAll
			n=xDocsCounter
			While n
				n-1
				xDocs(n)\UpdateCounter=1
			Wend

		Case #UpdateNow
			r\top=0
			r\left=0
			r\bottom=#LineHeight*xDocsCounter
			r\right=#LineWidth
			InvalidateRect_(GadgetID(#IdReport),@r,#False)

		Case #UpdateNothing
			r\top=0
			r\left=0
			r\bottom=#LineHeight*xDocsCounter
			r\right=#LineWidth
			ValidateRect_(GadgetID(#IdReport),@r)

		EndSelect

	ElseIf n<xDocsCounter
		xDocs(n)\CallCounter+1
		xDocs(n)\UpdateCounter=1
		r\top=#LineHeight*n
		r\left=0
		r\bottom=#LineHeight
		r\right=#LineWidth
		InvalidateRect_(GadgetID(#IdReport),@r,#Null)

	EndIf

EndProcedure
Procedure Main()

	OpenWindow(#IdWin,0,0,#LineWidth+#ExtraWidth,#LineHeight*10+#ExtraHeight,"Reporter Tool",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
	SetWindowColor(#IdWin,#White)
	CanvasGadget(#IdTitle,#Border,0,#TitleWidth,#TitleHeight)
	ListViewGadget(#IdReport,#Border,#TitleHeight,#LineWidth,#LineHeight*10,#LBS_OWNERDRAWFIXED)
	SendMessage_(GadgetID(#IdReport),#LB_SETITEMHEIGHT,0,#LineHeight)
	SetWindowLongPtr_(GadgetID(#IdReport),#GWL_EXSTYLE,GetWindowLongPtr_(GadgetID(#IdReport),#GWL_EXSTYLE)&~#WS_EX_CLIENTEDGE)
	WindowBounds(#IdWin,#LineWidth+#ExtraWidth,#ExtraHeight+#LineHeight*4,#LineWidth+#ExtraWidth,#ExtraHeight+#LineHeight*20)

	AddKeyboardShortcut(#IdWin,#PB_Shortcut_Space,#KeyUpdate)

	SetActiveGadget(#IdReport)
	For i=0 To xDocsCounter-1
		AddGadgetItem(#IdReport,i,"")
		SetGadgetItemData(#IdReport,i,1)
	Next

	TitleGadget()

	SetWindowCallback(@winCB())

	ListRedraw=#True

	Repeat
		Select WaitWindowEvent()

		Case #PB_Event_Gadget,#PB_Event_Menu

			Select EventGadget()
			Case #IdReport
				n=GetGadgetState(#IdReport)
				If n<>xDocsActive
					UpdateList(xDocsActive)
					xDocsActive=n
					UpdateList(xDocsActive)
					UpdateList(#UpdateNow)
				EndIf
				Debug "?"

			Case #IdTitle
				GetCursorPos_(p.POINT)
				ScreenToClient_ (GadgetID(#IdTitle),@p)
				Select EventType()
				Case #PB_EventType_MouseMove
					If Bool(p\y<30)<<1
						Title\Button=0
						If Title\Mode<>#TitleHide
							Title\Mode=#TitleVisible
							p\x+#ButtonWidth
							If p\x%(#ButtonWidth+#ButtonSpace)<#ButtonWidth
								Title\Button=p\x/(#ButtonWidth+#ButtonSpace)
							EndIf
						EndIf
					Else
						Title\Mode=#TitleOff
						Title\Button=0
					EndIf
					TitleGadget()
				Case #PB_EventType_MouseLeave
					Title\Mode=#TitleOff
					Title\Button=0
					TitleGadget()
				Case #PB_EventType_LeftButtonDown
					If Title\Button
						Title\Mode=#TitleActive
						TitleGadget()
					EndIf
				Case #PB_EventType_LeftClick
					If Title\Mode=#TitleActive And Title\Button
						Debug "Click "+Title\Button
						Title\Mode=#TitleHide
						SortDirection!1
						TitleGadget()
						SortStructuredArray(xDocs(),SortDirection,OffsetOf(ReportDocumentType\Filename),#PB_String)
						UpdateList(#UpdateAll)
						UpdateList(#UpdateNow)
					EndIf
				EndSelect
				;TitleGadget()

			Case #KeyUpdate
				Debug "Update now..."
				UpdateList(#UpdateAll)
				UpdateList(#UpdateNow)

			EndSelect


		Case #WM_MOUSEMOVE
			GetCursorPos_(p.POINT)
			ScreenToClient_ (GadgetID(#IdReport),@p)
			index = SendMessage_(GadgetID(#IdReport),#LB_ITEMFROMPOINT,0,p\y<<16+p\x)

			If index <> oldindex And index<=xDocsCounter
				Debug "Update "+index+" from "+oldindex
				;UpdateList(#UpdateStop)
				;UpdateList(#UpdateNothing)
				UpdateList(oldindex)
				UpdateList(index)
				UpdateList(#UpdateNow)
				;UpdateList(#UpdateStart)
				oldindex = index
			EndIf

		Case #PB_Event_SizeWindow
			n=(WindowHeight(#IdWin)-90+32)/64
			n*64
			ResizeWindow(#IdWin,#PB_Ignore,#PB_Ignore,#PB_Ignore,n+90)
			ResizeGadget(#IdReport,#PB_Ignore,#PB_Ignore,#PB_Ignore,n)

		Case #PB_Event_CloseWindow
			Quit = 1

		EndSelect

		ListFirstLine=ReportFirstLine()
		If ListFirstLine<>ListFirstLineOld
			ListFirstLineOld=ListFirstLine
			ListRedraw=#True
			Debug "UPDATE ALL"
		EndIf

		If ListRedraw
			UpdateList(#UpdateAll)
			UpdateList(#UpdateNow)
			ListRedraw=#Null
		EndIf

	Until Quit = 1

	For i=0 To #BrushLine
		DeleteObject_(i)
	Next i

EndProcedure
Main()
Post Reply