# Markers demo
#
# It shows the various marker types supported by OCCT.

#Category: Visualization
#Title: Markers in 3d viewer

pload MODELING VISUALIZATION

# reflects Aspect_TypeOfMarker enumeration
set aMarkerTypeNames {
  Aspect_TOM_POINT
  Aspect_TOM_PLUS
  Aspect_TOM_STAR
  Aspect_TOM_X
  Aspect_TOM_O
  Aspect_TOM_O_POINT
  Aspect_TOM_O_PLUS
  Aspect_TOM_O_STAR
  Aspect_TOM_O_X
  Aspect_TOM_RING1
  Aspect_TOM_RING2
  Aspect_TOM_RING3
  Aspect_TOM_BALL
  Aspect_TOM_USERDEFINED
}

# custom marker
set aCustom1 [locate_data_file images/marker_box1.png]
set aCustom2 [locate_data_file images/marker_box2.png]
set aCustom3 [locate_data_file images/marker_kr.png]
set aCustom4 [locate_data_file images/marker_dot.png]

set aFontFile ""
catch { set aFontFile [locate_data_file DejaVuSans.ttf] }
set aLabelFont "Arial"
if { "$aFontFile" != "" } {
  vfont add "$aFontFile" SansFont
  set aLabelFont "SansFont"
}

# reset the viewer
vclear
vclose ALL
vinit name=View1 l=32 t=32 w=512 h=512

puts "Draw box in advance which should fit all our markers"
box b -8 -8 0 16 16 2
vbottom
vdisplay -noupdate -dispmode 0 b
vfit
vremove -noupdate b

puts "Draw markers of different type and size"
for { set aMarkerType 0 } { $aMarkerType <= 13 } { incr aMarkerType } {
  set aRow [expr $aMarkerType - 7]
  set aCol 5
  set aName [lindex $aMarkerTypeNames $aMarkerType]
  vdrawtext "$aName" "$aName" -pos 0 [expr $aRow + 0.5] 0 -color 7FFFFF -halign center -valign center -angle 000 -zoom 0 -height 12 -aspect bold -font $aLabelFont -noupdate
  vdisplay -top -noupdate "$aName"
  if { $aMarkerType == 13 } {
    vmarkerstest m${aMarkerType}_${aCol} $aCol $aRow 0 PointsOnSide=1 FileName=$aCustom1
    set aCol [expr $aCol - 1]
    vmarkerstest m${aMarkerType}_${aCol} $aCol $aRow 0 PointsOnSide=1 FileName=$aCustom2
    set aCol [expr $aCol - 1]
    vmarkerstest m${aMarkerType}_${aCol} $aCol $aRow 0 PointsOnSide=1 FileName=$aCustom3
    set aCol [expr $aCol - 1]
    vmarkerstest m${aMarkerType}_${aCol} $aCol $aRow 0 PointsOnSide=1 FileName=$aCustom4
  } else {
    for { set aMarkerScale 1.0 } { $aMarkerScale <= 7 } { set aMarkerScale [expr $aMarkerScale + 0.5] } {
      vmarkerstest m${aMarkerType}_${aCol} $aCol $aRow 0 MarkerType=$aMarkerType Scale=$aMarkerScale PointsOnSide=1
      set aCol [expr $aCol - 1]
    }
  }
}
puts "All markers have been displayed"
