private void processLine(RdpPacket_Localised data, LineOrder line,
            int present, boolean delta) {
        if ((present & 0x01) != 0)
            line.setMixmode(data.getLittleEndian16());
        if ((present & 0x02) != 0)
            line.setStartX(setCoordinate(data, line.getStartX(), delta));
        if ((present & 0x04) != 0)
            line.setStartY(setCoordinate(data, line.getStartY(), delta));
        if ((present & 0x08) != 0)
            line.setEndX(setCoordinate(data, line.getEndX(), delta));
        if ((present & 0x10) != 0)
            line.setEndY(setCoordinate(data, line.getEndY(), delta));
        if ((present & 0x20) != 0)
            line.setBackgroundColor(setColor(data));
        if ((present & 0x40) != 0)
            line.setOpcode(data.get8());

        parsePen(data, line.getPen(), present >> 7);

        // if(logger.isInfoEnabled()) logger.info("Line from
        // ("+line.getStartX()+","+line.getStartY()+") to
        // ("+line.getEndX()+","+line.getEndY()+")");

        if (line.getOpcode() < 0x01 || line.getOpcode() > 0x10) {
            logger.warn("bad ROP2 0x" + line.getOpcode());
            return;
        }

        // now draw the line
        surface.drawLineOrder(line);
    }