;
;--------------------------------- snip here -------------------------------------------
;

  NEWTYPE.tags ta.l:tb:tc:td:te:tf:tg:th:ti:tj:tk:tl:tm:tn:tto:tp:tq:tr:ts:tt:End NEWTYPE
  DEFTYPE.BitMapHeader *bmhd
  DEFTYPE.dtFrameBox dtf
  DEFTYPE.FrameInfo fri
  DEFTYPE.gpLayout gpl
  DEFTYPE.BitMap *bm

; ------ load ICONS ----
;
piktogramme.b=0
Restore icons
Repeat
  Read n$
  If n$<>""
    If Exists(global\systemdir + "icons/" + n$ + ".iff" ) > 0


  *ssc.Screen = LockPubScreen_ ("Workbench")
	attrs.tags\ta=#DTA_SourceType,#DTST_FILE,#DTA_GroupID,#GID_PICTURE,#PDTA_Remap,True,#PDTA_Screen,*ssc,0

  name$ = global\systemdir + "icons/" + n$ + ".iff"
  *obj.b=NewDTObjectA_(name$,attrs)

  If *obj
    *this.Task = FindTask_(0)
    GetAttr_ #PDTA_BitMapHeader,*obj,&*bmhd

    bmh.l = *bmhd\bmh_Height/2
    bmw.l = *bmhd\bmh_Width/2

    dtf\MethodID = #DTM_FRAMEBOX
    dtf\dtf_FrameInfo = &fri
    dtf\dtf_ContentsInfo = &fri
    dtf\dtf_SizeFrameInfo = SizeOf.FrameInfo

    DoMethodA *obj,&dtf

    gpl\MethodID = #DTM_PROCLAYOUT
    gpl\gpl_GInfo = 0
    gpl\gpl_Initial = 1

    DoMethodA *obj,&gpl
    GetAttr_ #PDTA_BitMap,*obj,&*bm

; --- problematic code --------
    InitShape piktogramme,*bmhd\bmh_Width,*bmhd\bmh_Height,*bmhd\bmh_Depth
    ShapesBitMap piktogramme,0
    *blitzmap.l = Addr BitMap(0)
    BltBitMap_ *bm,0,0,*blitzmap,0,0,*bmhd\bmh_Width,*bmhd\bmh_Height,$c0,-1,0
    Free BitMap 0
; ------------------------------
   Else
      LoadShape piktogramme  ,global\systemdir + "icons/" + n$ +".iff"
   EndIf

