log.info("screen updated -> " +  sr + ", " + sc + ", " + er + ", " + ec);
   public void onScreenChanged(int which, int sr, int sc, int er, int ec) {//		workR.setBounds(sr, sc, ec, er);//      if (screen.cursorShown)//         this.drawCursor();      if (which == 3 || which == 4) {//         log.info("cursor updated -> " +  sr + ", " + sc + "-> active " +//                        screen.cursorActive + " -> shown " + screen.cursorShown);         drawCursor(sr,sc);         return;      }      if (hotSpots)         screen.checkHotSpots();      log.info("screen updated -> " +  sr + ", " + sc + ", " + er + ", " + ec);      int rows = er - sr;		int cols = 0;		int lc = 0;//      int lenScreen = screen.getScreenLength();		int lr = screen.getPos(sr,sc);      int numCols = screen.getCols();      updateRect = new Data (sr,sc,er,ec);      int clipX;      int clipY;      int clipWidth;      int clipHeight;      Rectangle clipper = new Rectangle();      int pos = 0;//         while (rows-- >= 0) {//            cols = ec - sc;//            lc = lr;//            while (cols-- >= 0) {//               if (lc >= 0 && lc < lenScreen) {//                  drawChar(gg2d,pos++,screen.getRow(lc),screen.getCol(lc));//   //					drawChar(gg2d,pos++,sr-rows,lc);//                  lc++;//               }//            }//            lr += numCols;//         }      lc = ec;      clipper.x      =   sc * columnWidth;      clipper.y      =   sr * rowHeight;      clipper.width  = ((ec - sc) + 1) * columnWidth;      clipper.height =  ((er - sr ) + 1) * rowHeight;      gg2d.setClip(clipper.getBounds());		gg2d.setColor(colorBg);		//      System.out.println("PaintComponent " + r);		gg2d.fillRect(clipper.x, clipper.y, clipper.width, clipper.height);		while (sr <= er) {			cols = ec - sc;			lc = sc;			while (cols-- >= 0) {				if (sc + cols <= ec) {//					drawChar(gg2d,pos++,screen.getRow(lc),screen.getCol(lc));					drawChar(gg2d,pos++,sr,lc);//               if (clipper == null) {//                  clipper = new Rectangle(workR);//               }//               else {//                  clipper.union(workR);//               }               lc++;				}			}			sr++;		}//      System.out.println(" clipping from screen change " + clipper//                        + " clipping region of paint " + gg2d.getClipBounds());      updateImage(clipper);//      if (screen.cursorShown)//         this.drawCursor();//      screen.dumpScreen();   }