2021-08-26
	
		
		11:22 PM
	
	
	
	
	
	
	
	
	
	
	
	
	
	
 - last edited on 
    
	
		
		
		2021-09-14
	
		
		08:49 AM
	
	
	
	
	
	
	
	
	
	
	
	
	
	
 by 
				
		
		
			Noemi Balogh
		
		
		
		
		
		
		
		
	
			
		
!-- Init
	_iPgNr = 0
	_iBkNr = 0
	p_to_m = GLOB_SCALE / 1000
!-- Syles
	define style{2} "globStyle" "Papyrus",       2.5 * p_to_m, 4
	define style{2} "S1"        "Arial",         1.0 * p_to_m, 0
	define style{2} "S2"        "Times",         1.5 * p_to_m, 1
	define style{2} "S3"        "Luminari",      4.0 * p_to_m, 0
	define style{2} "S4"        "Arial Black",   4.0 * p_to_m, 32
!-- Base
	hotspot2 0,0
!-- Setup _rt
	dict _rt
	_rt.x = 0.5
	_rt.y = 0.5
	_rt.anchor = 1
	_rt.align = 1
	_rt.style = "globStyle"
!-- First Block
	_rt.line[1].part[1].s = "S3"
	_rt.line[1].part[1].v = "Luminari normal "
	_rt.line[1].part[2].s = "S4"
	_rt.line[1].part[2].v = "Arial Black sup "
	_rt.line[1].part[3].s = "S3"
	_rt.line[1].part[3].v = "Luminari normal "
	_rt.line[1].part[4].s = "S4"
	_rt.line[1].part[4].v = "Arial Black sup"
	_rt.line[2].v = "Times bold"
	_rt.line[2].s = "S2"
	_rt.line[3].v = "Papyrus underline"
	!_rt.line[3].s = "S3" !-> use global style
	_rt.line[4].s = "S1"
	_rt.line[4].v = "Arial normal"
	_rt.line[5].part[1].s = "S1"
	_rt.line[5].part[1].v = ""
	_rt.line[5].part[2].s = "S2"
	_rt.line[5].part[2].v = "Times Bold"
	gosub "rtBlock"
	rect2 _rt.x, _rt.y, _rt.x + _rtWidth, _rt.y + (-1 * _rtHeight)
!-- Second Block
	add2 0,-1* (_rtHeight + 0.1)
	_rt.line[1].s = "S1"
	_rt.line[1].v = "Luminari normal"
	gosub "rtBlock"
	rect2 _rt.x, _rt.y, _rt.x + _rtWidth, _rt.y + (-1 * _rtHeight)
!=======================================================================================================================
end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end ! end !
!=======================================================================================================================
!=======================================================================================================================
"rtBlock":
! ----------------------------------------------------------------------------------------------------------------------
! Mehrzeiliger Text als Richtext ausgeben.
! Es können mit .part[] pro Paragraph mehrere verschiedene Textstile gesetzt werden.
! Stift muss vor Aufruf gesetzt werden.
!-----------------------------------------------------------------------------------------------------------------------
!
! Caller:
! _rt              - (dict)
!    .x            - (real)   x-Position des Richtextes
!    .y            - (real)   y-Position des Richtextes
!    .anchor       - (int)    Textanker
!    .align        - (int)    Ausrichtung der Paragraphen
!    .style        - (string) Style für alle einfachen Zeilen
!    .line      - (array)  Array mit Texten pro Zeile
!
!-----------------------------------------------------------------------------------------------------------------------
!
! Responder:
! _rtHeight        - (real)   Textblock Höhe
! _rtWidth         - (real)   Textblock Breite
!
!-----------------------------------------------------------------------------------------------------------------------
!
! Other:
! _iPgNr           - (int)   Paragraph-Index (am Anfang des Scipts initialisieren und auf 0 setzen)
! _iBkNr           - (int)   Block-Index (am Anfang des Scipts initialisieren und auf 0 setzen)
!
!-----------------------------------------------------------------------------------------------------------------------
!
! Help:
! mögliche Struktur für _rt.line[]:
!    .line.s         - (string) Style (optional)
!    .line.v         - (string) Text
!
! oder:
!    .line.part.s - (string) Style
!    .line.part.v - (string) Text
!
!    * m darf aktuell maximal 4 sein! (weitere Teile werden ignoriert)
!
!=======================================================================================================================
	__nLines = vardim1(_rt.line)
	for q = 1 to __nLines
		_iPgNr = _iPgNr+1
		put _iPgNr
		if haskey(_rt.line.v) then
			if haskey(_rt.line.s) then
				paragraph _iPgNr _rt.align, 0, 0, 0, 1
					style _rt.line.s
					_rt.line.v + "\ts = " + _rt.line.s
				endparagraph
			else
				paragraph _iPgNr _rt.align, 0, 0, 0, 1
					_rt.line.v + "\tgs = " + _rt.style
				endparagraph
			endif
		else
			if haskey(_rt.line.part) then
				if vardim1(_rt.line.part) = 1 then
					paragraph _iPgNr _rt.align, 0, 0, 0, 1
						style _rt.line.part[1].s : _rt.line.part[1].v
					endparagraph
				endif
				if vardim1(_rt.line.part) = 2 then
					paragraph _iPgNr _rt.align, 0, 0, 0, 1
						style _rt.line.part[1].s : _rt.line.part[1].v
						style _rt.line.part[2].s : _rt.line.part[2].v
					endparagraph
				endif
				if vardim1(_rt.line.part) = 3 then
					paragraph _iPgNr _rt.align, 0, 0, 0, 1
						style _rt.line.part[1].s : _rt.line.part[1].v
						style _rt.line.part[2].s : _rt.line.part[2].v
						style _rt.line.part[3].s : _rt.line.part[3].v
					endparagraph
				endif
				if vardim1(_rt.line.part) >= 4 then
					paragraph _iPgNr _rt.align, 0, 0, 0, 1
						style _rt.line.part[1].s : _rt.line.part[1].v
						style _rt.line.part[2].s : _rt.line.part[2].v
						style _rt.line.part[3].s : _rt.line.part[3].v
						style _rt.line.part[4].s : _rt.line.part[4].v
					endparagraph
				endif
			else
				paragraph _iPgNr _rt.align, 0, 0, 0, 1
				!style _rt.style
				"No Text to print!"
				endparagraph
			endif
		endif
	next q
	_iBkNr = _iBkNr+1
	__bkName = "bk" + str("%",_iPgNr)
	style _rt.style
	textblock_ __bkName 0, _rt.anchor, 0, 1, 1, 0, __nLines,
		get(__nLines)
	richtext2 _rt.x, _rt.y, __bkName
	_dummy = REQUEST ("TEXTBLOCK_INFO", __bkName, _rtWidth, _rtHeight)
	_dummy = removekey(_rt.line)
return
2021-08-27 04:16 PM
paragraph set style "style 1" "text" endparagraph paragraph set style "style 2" "text" endparagraph
 
					
				
		
2021-09-15 12:44 PM
The problem is with font names, all used style's font names have to be correct.
In GDL the font names visible on the Archicad UI can't be used. REQUEST "FONTNAMES_LIST" returns a list of installed fonts. "Arial" can be "Arial Western" or "Arial Central European", etc...