Esempio n. 1
0
 private void drawIconsOverCanvas(RenderingContext rc, Canvas cv) {
   int skewConstant = (int) rc.getDensityValue(16);
   int iconsW = rc.width / skewConstant;
   int iconsH = rc.height / skewConstant;
   int[] alreadyDrawnIcons = new int[iconsW * iconsH / 32];
   for (IconDrawInfo icon : rc.iconsToDraw) {
     if (icon.resId != null) {
       Bitmap ico = RenderingIcons.getIcon(context, icon.resId);
       if (ico != null) {
         if (icon.y >= 0 && icon.y < rc.height && icon.x >= 0 && icon.x < rc.width) {
           int z = (((int) icon.x / skewConstant) + ((int) icon.y / skewConstant) * iconsW);
           int i = z / 32;
           if (i >= alreadyDrawnIcons.length) {
             continue;
           }
           int ind = alreadyDrawnIcons[i];
           int b = z % 32;
           // check bit b if it is set
           if (((ind >> b) & 1) == 0) {
             alreadyDrawnIcons[i] = ind | (1 << b);
             if (rc.getDensityValue(1) != 1) {
               float left = icon.x - rc.getDensityValue(ico.getWidth() / 2);
               float top = icon.y - rc.getDensityValue(ico.getHeight() / 2);
               cv.drawBitmap(
                   ico,
                   null,
                   new RectF(
                       left,
                       top,
                       left + rc.getDensityValue(ico.getWidth()),
                       top + rc.getDensityValue(ico.getHeight())),
                   paintIcon);
             } else {
               cv.drawBitmap(
                   ico, icon.x - ico.getWidth() / 2, icon.y - ico.getHeight() / 2, paintIcon);
             }
           }
         }
       }
     }
     if (rc.interrupted) {
       return;
     }
   }
 }