private void drawGrid() {
      if (grid_area == null)
         return;

      // Redraw whole grid
      for (int a = 0; a<20; a++) {
         int x = 0;
         for (int b = 0; b<10; b++) {
            int cch = grid[a][b];
            grid_area.qset(a, x++, cch);
            grid_area.qset(a, x++, cch);
         }
      }

      // Draw piece on top
      int[][] ff = form[pc_num][pc_rot];
      int y = pc_yy;
      for (int a = 0; a<4; a++) {
         if (y >= 0) {
            int x = pc_xx*2;
            for (int b = 0; b<4; b++) {
               int cch = ff[a][b];
               if (cch == pad) {
                  x += 2;
               } else {
                  grid_area.qset(y, x++, cch);
                  grid_area.qset(y, x++, cch);
               }
            }
         }
         y++;
      }
      grid_area.updated();
   }