Scintilla PNG als Marker

Für allgemeine Fragen zur Programmierung mit PureBasic.
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Scintilla PNG als Marker

Beitrag von Lambda »

Wie bekomme ich ein eigenes PNG Bild als Marker Symbol in Scintilla? Es gäbe den Befehl #SCI_MARKERDEFINERGBAIMAGE der aber im Scintilla Include nicht dabei ist. Die nummer 2626 scheint auch nichts zu bewirken.

Die Konstanten um die Breite/Höhe zu setzen fehlen auch, dafür hab ich 2625 und 2624 verwendet. Passiert nichts..
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Scintilla PNG als Marker

Beitrag von edel »

Aktuelle Scintillaversion?
Uebergibst du vielleicht das Handle (imageid(0))?
Setzt du den Marker, bevor ueberhaupt Text im Fenster ist?
Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: Scintilla PNG als Marker

Beitrag von Lambda »

Ich frage mich wie man überhaupt Bilder rein bekommt.

SCI_MARKERDEFINEPIXMAP(int markerNumber, const char *xpm)

Wie muss man hier vorgen?
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Scintilla PNG als Marker

Beitrag von edel »

Code: Alles auswählen

UsePNGImageDecoder()

#SC_MARK_RGBAIMAGE 					= 30
#SCI_RGBAIMAGESETWIDTH  		= 2624 
#SCI_RGBAIMAGESETHEIGHT 		= 2625 
#SCI_MARKERDEFINERGBAIMAGE 	= 2626 
#SCI_MARKERDEFINEPIXMAP 		= 2049

#GREEN1_DOT = 1
#GREEN2_DOT = 2

Procedure Main()
	
	Protected win
	Protected dot
	Protected txt.s
	
	win = OpenWindow(0, 0, 0, 500, 500, "ScintillaGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	
	If InitScintilla("scilexer")
		ScintillaGadget(0, 10, 10, 480, 480, #Null)
		
		dot = CatchImage(#PB_Any, ?dot3_png_start)
		
		;png
		ScintillaSendMessage(0, #SCI_RGBAIMAGESETWIDTH, 8)
		ScintillaSendMessage(0, #SCI_RGBAIMAGESETHEIGHT, 8)
		
		StartDrawing(ImageOutput(dot))        
    	ScintillaSendMessage(0, #SCI_MARKERDEFINERGBAIMAGE, #GREEN1_DOT, DrawingBuffer())
    StopDrawing()		       
    
    ; xpm
    ScintillaSendMessage(0, #SCI_RGBAIMAGESETWIDTH, 10)
		ScintillaSendMessage(0, #SCI_RGBAIMAGESETHEIGHT, 10)
   	ScintillaSendMessage(0, #SCI_MARKERDEFINEPIXMAP, #GREEN2_DOT, ?greendot_xpm_start)    
   	
   	
   	
   	
   	
    ScintillaSendMessage(0, #SCI_STYLESETFORE, 0, RGB(255, 0, 0))
    ScintillaSendMessage(0, #SCI_SETTEXT, 0, @"This is a simple ScintillaGadget with text...")
    
    txt = Chr(10) + "Second line"
    txt + Chr(10) + "Third line"
		ScintillaSendMessage(0, #SCI_APPENDTEXT, Len(txt), @txt)
		
		
		ScintillaSendMessage(0, #SCI_MARKERADD, 1, #GREEN1_DOT)
		ScintillaSendMessage(0, #SCI_MARKERADD, 2, #GREEN2_DOT)
		
		Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
	EndIf
	
	
EndProcedure:End Main()

   
DataSection
  dot3_png_start:
    ; size : 327 bytes
    Data.q $0A1A0A0D474E5089,$524448490D000000,$0800000008000000,$4ED1F30000000308,$49427303000000B9
    Data.q $E04FE1DB08080854,$45544C5054000000,$A73B3ABA40FFFFFF,$401E612A319E3934,$34A73B36AD3D3ABA
    Data.q $762F2F9738319E39,$3D39B63F23722D25,$2B8A342F973836AD,$DFBBC1E2C2298532,$9BA2D4A4B4DCB5BA
    Data.q $9AD09D94D69497D6,$CA858ACC8B92CC95,$B1328C9C8CC29083,$534E52741C000000,$8888882222222200
    Data.q $DDDDDDDD88888888,$FFFFFFFFFFFFFFDD,$B2DEE0C4FFFFFFFF,$7359487009000000,$120B0000120B0000
    Data.q $000000FC7EDDD201,$666F53745845741C,$6441006572617774,$657269462065626F,$534320736B726F77
    Data.q $000000A0D3B20634,$639908544144493A,$361E1E5646038060,$8248505455832026,$E114931411E0C803
    Data.q $F9C4A52585783203,$2E69711109760C81,$059B805F93998320,$D41402D3470019A1,$4900000000EAEF52
    Data.b $45,$4E,$44,$AE,$42,$60,$82
  dot3_png_end:
EndDataSection

DataSection
  greendot_xpm_start:
    ; size : 721 bytes
    Data.q $2A204D5058202A2F,$69746174730A0D2F,$2A20726168632063,$645F6E6565726720,$5D5B6D70785F746F
    Data.q $31220A0D7B203D20,$2032332030312030,$0920220A0D2C2231,$2C22656E6F4E2063,$232063092E220A0D
    Data.q $2C22324443453745,$232063092B220A0D,$2C22313538423141,$2320630940220A0D,$2C22423042394137
    Data.q $2320630923220A0D,$2C22453133413538,$2320630924220A0D,$2C22343844434442,$2320630925220A0D
    Data.q $2C22334641463946,$2320630926220A0D,$2C22333533433841,$232063092A220A0D,$2C22303043433339
    Data.q $232063093D220A0D,$2C22313030463841,$232063092D220A0D,$2C22303035453241,$232063093B220A0D
    Data.q $2C22353130433339,$232063093E220A0D,$2C22373541423441,$232063092C220A0D,$2C22373030423538
    Data.q $2320630927220A0D,$2C22313031463941,$2320630929220A0D,$2C22313034464241,$2320630921220A0D
    Data.q $2C22303045444539,$232063097E220A0D,$2C22303045393937,$232063097B220A0D,$2C22313033464141
    Data.q $232063095D220A0D,$2C22313043444439,$232063095E220A0D,$2C22333038393737,$232063092F220A0D
    Data.q $2C22433431433441,$2320630928220A0D,$2C22303044433439,$232063095F220A0D,$2C22303038453441
    Data.q $232063093A220A0D,$2C22353131433339,$232063093C220A0D,$2C22343539423241,$232063095B220A0D
    Data.q $2C22304442453545,$232063097D220A0D,$2C22383434424339,$232063097C220A0D,$2C22323037393637
    Data.q $2320630931220A0D,$2C22363130413138,$2320630932220A0D,$2C22453742433942,$2320630933220A0D
    Data.q $2C22444538463546,$2020202020220A0D,$0D2C222020202020,$202020202020220A,$0A0D2C2220202020
    Data.q $23402B2E20202022,$220A0D2C22202524,$3B2D3D2A26202020,$20220A0D2C22203E,$7E212929272C2020
    Data.q $2020220A0D2C2220,$205E5D7B29272C20,$202020220A0D2C22,$22203C3A5F7B282F,$5B202020220A0D2C
    Data.q $2C22203332317C7D,$2020202020220A0D,$0D2C222020202020,$202020202020220A,$0D3B7D2220202020
    Data.b $0A
  greendot_xpm_end:
EndDataSection


Lambda
Beiträge: 526
Registriert: 16.06.2011 14:38

Re: Scintilla PNG als Marker

Beitrag von Lambda »

Sehr gut :allright: danke, nur leider will das nicht mit der "GoScintilla" Library :|
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Scintilla PNG als Marker

Beitrag von edel »

Dann erstelle bitte mal ein Beispiel das nicht funktioniert.
Antworten