void
QDBase::createMapAreas(bool allow_draw)
{
   DEBUG_MSG("QDBase::createMapAreas(): Creating the map areas\n");
   DEBUG_MAKE_INDENT(3);

   eraseMapAreas(false, allow_draw);

   if (!dimg) return;

   if (override_flags.hilite_rects.size())
   {
      GP<DjVuInfo> info;
      if (dimg) info=dimg->get_info();
      if (info)
	 for(GPosition pos=override_flags.hilite_rects;pos;++pos)
	 {
	    GP<GMapRect> gmap_rect=override_flags.hilite_rects[pos];
	    GRect grect=*gmap_rect;
	    if (grect.xmin<0) grect.xmin=0;
	    if (grect.ymin<0) grect.ymin=0;
	    if (grect.xmax>info->width) grect.xmax=info->width;
	    if (grect.ymax>info->height) grect.ymax=info->height;
	    if (grect.width()>0 && grect.height()>0)
	    {
	       *gmap_rect=grect;
	       map_areas.append(new MapRect(gmap_rect));
	    }
	 }
   }
   
   if (!override_flags.url.is_empty())
   {
      GRect rect(0, 0, dimg->get_width(), dimg->get_height());
      if (!rect.isempty())
      {
	 GP<GMapRect> gma=GMapRect::create(rect);
	 gma->url=override_flags.url.get_string();
	 gma->border_type=GMapArea::SHADOW_OUT_BORDER;
	 gma->border_always_visible=false;
	 gma->border_width=4;
	 GP<MapArea> ma=new MapRect(gma);
	 map_areas.append(ma);
      }
   } else if (anno && anno->ant)
   {
      DjVuANT * ant=anno->ant;
   
      GPosition pos;
      for(pos=ant->map_areas;pos;++pos)
      {
	 GP<MapArea> ma;
	 GMapArea * gmap_area=ant->map_areas[pos];
	 GUTF8String shape_name = gmap_area->get_shape_name();
	 if (shape_name == GMapArea::RECT_TAG)
	    ma=new MapRect((GMapRect *) gmap_area);
	 else if (shape_name == GMapArea::OVAL_TAG)
	    ma=new MapOval((GMapOval *) gmap_area);
	 else if (shape_name == GMapArea::POLY_TAG)
	    ma=new MapPoly((GMapPoly *) gmap_area);
	 if ( ma )
	 {
	    ma->setActiveOutlineMode(!ma->isAlwaysActive() && prefs.hlinksBorder, true);
	    map_areas.append(ma);
	 }
      }
   }
   for(GPosition pos=map_areas;pos;++pos)
   {
       map_areas[pos]->attachWindow(pane, &ma_mapper);
       map_areas[pos]->layout(GRect(0, 0, dimg->get_width(), dimg->get_height()));
   }
}