예제 #1
0
QList<Align> AttributeManager::alignListOf( const QString& attribute,
                                            BasicElement* element ) const
{
    QList<Align> alignList;
    QStringList tmpList = findValue( attribute, element ).split( " " );

    foreach( QString tmp, tmpList )
        alignList << parseAlign( tmp );

    return alignList;
}
예제 #2
0
static unsigned int readEscape(FILE *out, uint8_t *text, uint8_t type, uint8_t size, size_t count)
{
    uint32_t larg;
    uint16_t sarg;
    uint8_t carg;
    uint8_t subcode;
    uint8_t buffer[ 256 ];
    switch( type ) {
    case 0x02:
        carg = text[ ++count ];
        fprintf( out, "02: set left margin of current line to %2.2x (%u)>]", carg, carg );
        break;
    case 0x03:
        carg = text[ ++count ];
        fprintf( out, "03: set right margin to %2.2x (%u)>]", carg, carg );
        break;
    case 0x04:
        carg = text[ ++count ];
        fprintf( out, "04: set style to %2.2x ", carg );
        if( carg == 0)
            fputs( "(plain text)>]", out );
        else if( carg == 1 )
            fputs( "(italic)>]", out );
        else if( carg == 2 )
            fputs( "(bold)>]", out );
        else if( carg == 3 )
            fputs( "(bold italic)>]", out );
        else if( carg == 4 )
            fputs( "(underscored)>]", out );
        else if( carg == 5 )
            fputs( "(italic underscored)>]", out );
        else if( carg == 6 )
            fputs( "(bold underscored)>]", out );
        else if( carg == 7 )
            fputs( "(bold italic underscored)>]", out );
        break;
    case 0x05:
        sarg = (uint16_t)text[ ++count ];
        sarg |= ( (uint16_t)text[ ++count ] ) << 8;
        fprintf( out, "05: begin cross-reference to TOC index %4.4x (%hu)", sarg, sarg );
        if( size > 4 ) {
            uint8_t carg2 = 0;
            carg = text[ ++count ];
            fprintf( out, ", flag byte1 %2.2x", carg );
            if( size > 5 ) {
                carg2 = text[ ++count ];
                fprintf( out, ", flag byte2 %2.2x", carg );
            }
            if( carg & 0x01 ) {
                PanelOrigin p;
                memcpy( &p, &text[ count + 1 ], sizeof( PanelOrigin ) );
                count += sizeof( PanelOrigin );
                fprintf( out, ", target position supplied (" );
                if( p.xPosType == DYNAMIC)
                    fprintf( out, "%s %s, ", getDPosString( p.xpos ), getPosString( p.xPosType ) );
                else
                    fprintf( out, "%hu %s,", p.xpos, getPosString(p.xPosType));
                if( p.yPosType == DYNAMIC)
                    fprintf( out, "%s %s)", getDPosString( p.ypos ), getPosString( p.yPosType ) );
                else
                    fprintf( out, "%hu %s)", p.ypos, getPosString( p.yPosType ) );
            }
            if( carg & 0x02 ) {
                PanelSize p;
                memcpy(&p, &text[ count + 1 ], sizeof( PanelSize ) );
                count += sizeof( PanelSize );
                fprintf( out, ", target size supplied (" );
                if( p.widthType == DYNAMIC )
                    fprintf( out, "%s %s, ", getDPosString( p.width ), getPosString( p.widthType ) );
                else
                    fprintf( out, "%hu %s,", p.width, getPosString( p.widthType ) );
                if( p.heightType == DYNAMIC )
                    fprintf( out, "%s %s)", getDPosString( p.height ), getPosString( p.heightType ) );
                else
                    fprintf( out, "%hu %s)", p.height, getPosString( p.heightType ) );
            }
            if( carg & 0x04 )
                fprintf( out, ", viewport" );
            if( carg & 0x08 ) {
                PanelStyle style;
                memcpy( &style.word, &text[ count + 1 ], sizeof( PanelStyle ) );
                count += sizeof( PanelStyle );
                fprintf( out, ", window style specified (%4.4x)", style.word );
            }
            if( carg & 0x40)
                fprintf( out, ", autolink" );
            if( carg & 0x80)
                fprintf( out, ", split window" );
            if( carg2 & 0x02)
                fprintf( out, ", dependent" );
            if( carg2 & 0x04) {
                Group grp;
                memcpy( &grp, &text[ count + 1 ], sizeof( Group ) );
                count += sizeof( Group );
                fprintf( out, ", group supplied (%4.4x)", grp );
            }
        }
        fprintf( out, ">]" );
        break;
    case 0x07:
        sarg = ( uint16_t )text[ ++count ];
        sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
        fprintf( out, "07: begin link to footnote, TOC index %4.4x (%hu)>]", sarg, sarg );
        break;
    case 0x08:
        fprintf( out, "08: end of link>]" );
        break;
    case 0x0B:
        fprintf( out, "0B: begin monospaced>]" );
        break;
    case 0x0C:
        fprintf( out, "0C: end monospaced>]" );
        break;
    case 0x0D:
        carg = text[ ++count ];
        fprintf( out, "0D: set special color %2.2x (%u)>]", carg, carg );
        break;
    case 0x0E:
        carg = text[ ++count ];
        larg = ( uint32_t )text[ ++count ];
        larg |= ( ( uint32_t )text[ ++count ] ) << 8;
        larg |= ( ( uint32_t )text[ ++count ] ) << 16;
        larg |= ( ( uint32_t )text[ ++count ] ) << 24;
        fprintf( out, "0E: bitmap image" );
        parseAlign( out, carg );
        fprintf( out, ", from offset %8.8x (%lu)>]", larg, larg );
        break;
    case 0x0F:
        carg = text[ ++count ];
        fprintf( out, "0F: image map");
        subcode = text[ ++count ];
        fprintf( out, " subcode %2.2x (%u):", subcode, subcode);
        switch (subcode) {
        case 0:
            carg = text[ ++count ];
            larg = ( uint32_t )text[ ++count ];
            larg |= ( ( uint32_t )text[ ++count ] ) << 8;
            larg |= ( ( uint32_t )text[ ++count ] ) << 16;
            larg |= ( ( uint32_t )text[ ++count ] ) << 24;
            fprintf( out, " define" );
            parseAlign( out, carg );
            fprintf( out, ", from offset %8.8x (%lu)>]", larg, larg );
            break;
        case 1:
        case 2:
        case 3:
            fprintf( out, " define partial bitmap to %s", subcode == 3 ? "?" : ( subcode == 1 ? "panel" : "footnote" ) );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " id %4.4x (%hu)", sarg, sarg);
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " (xorg = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " yorg = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " width = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " height = %4.4x (%hu))>]", sarg, sarg );
            break;
        case 4:
        case 5:
        case 6:
            fprintf( out, " define full bitmap to %s", subcode == 6 ? "?" : ( subcode == 4 ? "panel" : "footnote" ) );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " id %4.4x (%hu)", sarg, sarg );
            break;
        case 7:
            carg = text[ ++count ];
            memset( buffer, 0, 256) ;
            ++count;
            memcpy( buffer, &text[ count ], size - 5 );
            count += size - 4;
            fprintf( out, " define full bitmap to application %s>]", buffer );
            break;
        case 8:
            carg = text[ ++count ];
            fprintf( out, " define full bitmap to application" );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " (xorg = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " yorg = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " width = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " height = %4.4x (%hu))", sarg, sarg );
            memset( buffer, 0, 256 );
            ++count;
            memcpy( buffer, &text[ count ], size - 12 );
            count += size - 11;
            fprintf( out, " %s>]", buffer );
            break;
        case 9:
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " define full bitmap, send message to application id %4.4x (%hu)>]", sarg, sarg );
            break;
        case 10:
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " define partial bitmap, send message to application id %4.4x (%hu)", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " (xorg = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " yorg = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " width = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " height = %4.4x (%hu))>]", sarg, sarg );
            break;
        case 12:
        case 13:
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " define partial bitmap to external id %4.4x (%hu)", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " (xorg = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " yorg = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " width = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " height = %4.4x (%hu))>]", sarg, sarg );
            break;
        case 14:
        case 15:
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " define full bitmap to id %4.4x (%hu)>]", sarg, sarg );
            break;
        case 16:
            carg = text[ ++count ];
            fprintf( out, " define full bitmap to id %2.2x (%u)", carg, carg );
            carg = text[ ++count ];
            ++count;
            memset( buffer, 0, 256 );
            ++count;
            memcpy( buffer, &text[ count ], carg );
            count += carg - 1;
            fprintf( out, " in external file %s>]", buffer );
            break;
        case 17:
            carg = text[ ++count ];
            fprintf( out, " define partial bitmap to external file %2.2x (%u)", carg, carg );
            carg = text[ ++count ];
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " (xorg = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " yorg = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " width = %4.4x (%hu);", sarg, sarg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, " height = %4.4x (%hu))", sarg, sarg );
            memset( buffer, 0, 256 );
            ++count;
            memcpy( buffer, &text[ count ], carg );
            count += carg - 1;
            fprintf( out, " id %s>]", buffer );
            break;
        default:
            fprintf( out, " unknown subcode>]" );
            break;
        }
        break;
    case 0x10:
        carg = text[ ++count ];
        memset( buffer, 0, 256 );
        ++count;
        memcpy( buffer, &text[ count ], size - 3 );
        count += size - 2;
        fprintf( out, "10: begin link (launch application %s)>]", buffer );
        break;
    case 0x11:
        carg = text[ ++count ];
        fprintf( out, "11: set left margin to %2.2x (%u), start new line>]", carg, carg );
        break;
    case 0x12:
        carg = text[ ++count ];
        fprintf( out, "12: set left margin (fit) to %2.2x (%u), start new line>]", carg, carg );
        break;
    case 0x13:
        carg = text[ ++count ];
        fprintf( out, "13: set foreground color to %2.2x (%s)>]", carg, parseColor( carg ) );
        break;
    case 0x14:
        carg = text[ ++count ];
        fprintf( out, "14: set background color to %2.2x (%s)>]", carg, parseColor( carg ) );
        break;
    case 0x15:
        memset( buffer, 0, 256 );
        ++count;
        memcpy( buffer, &text[ count ], size - 2 );
        count += size - 3;
        fprintf( out, "15: tutorial %s>]", buffer );
        break;
    case 0x16:
        sarg = ( uint16_t )text[ ++count ];
        sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
        fprintf( out, "16: send message to id %4.4x (%hu)>]", sarg, sarg );
        break;
    case 0x17:
        memset( buffer, 0, 256 );
        ++count;
        memcpy( buffer, &text[ count ], size - 2 );
        count += size - 3;
        fprintf( out, "17: hide text, key: %s>]", buffer );
        break;
    case 0x18:
        fprintf( out, "18: end hide text>]" );
        break;
    case 0x19:
        carg = text[ ++count ];
        fprintf( out, "19: change font to %2.2x (%u)>]", carg, carg );
        break;
    case 0x1A:
        carg = text[ ++count ];
        fprintf( out, "1A: begin \"lines\" sequence, flags %2.2x, align ", carg );
        if( carg & 0x01 )
            fprintf( out, "left>]" );
        if( carg & 0x02 )
            fprintf( out, "right>]" );
        if( carg & 0x04 )
            fprintf( out, "center>]" );
        break;
    case 0x1B:
        fprintf( out, "1B: end \"lines\" sequence>]" );
        break;
    case 0x1C:
        fprintf( out, "1C: set left margin to current position>]" );
        break;
    case 0x1D:
        sarg = ( uint16_t )text[ ++count ];
        sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
        fprintf( out, "1D: start link to external document id %4.4x (%hu)>]", sarg, sarg );
        break;
    case 0x1F:
        carg = text[ ++count ];
        fprintf( out, "1F: start link to external file id %2.2x (%u)", carg, carg );
        memset( buffer, 0, 256 );
        carg = text[ ++count ];
        memcpy( buffer, &text[ ++count ], carg );
        count += carg - 1;
        fprintf( out, " id %s>]", buffer );
        break;
    case 0x20:
        sarg = ( uint16_t )text[ ++count ];
        sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
        fprintf( out, "20: begin ddf, resource id %4.4x (%hu)>]", sarg, sarg );
        break;
    case 0x21:
        carg = text[ ++count ];
        fprintf( out, "21: acviewport, reserved %2.2x (%hu)", carg, carg );
        carg = text[ ++count ];
        if( carg ) {
            size_t dataBytes = carg;
            fprintf( out, ", data length %2.2x (%hu)", carg, carg );
            sarg = ( uint16_t )text[ ++count ];
            sarg |= ( ( uint16_t )text[ ++count ] ) << 8;
            fprintf( out, ", objectid %4.4x (%hu)", sarg, sarg );
            carg = text[ ++count ];
            memset( buffer, 0, 256 );
            memcpy( buffer, &text[ ++count ], carg - 1 );
            count += carg - 2;
            fprintf( out, ", objectname \"%s\"", buffer );
            carg = text[ ++count ];
            if( carg > 1 ) {
                memset( buffer, 0, 256 );
                memcpy( buffer, &text[ ++count ], carg - 1 );
                count += carg - 2;
                fprintf( out, ", dll \"%s\"", buffer );
            }
            carg = text[ ++count ];
            if( carg > 1 ) {
                memset( buffer, 0, 256 );
                memcpy( buffer, &text[ ++count ], carg - 1 );
                count += carg - 2;
                fprintf( out, ", objectinfo \"%s\"", buffer );
            }
            if( size - 6 - dataBytes ) {
                uint8_t carg2;
                carg = text[ ++count ];
                carg2 = text[ ++count ];
                fprintf( out, ", flag bytes %2.2x %2.2x", carg, carg2 );
                if( carg & 0x01 ) {
                    PanelOrigin p;
                    memcpy( &p, &text[ count + 1 ], sizeof( PanelOrigin ) );
                    count += sizeof( PanelOrigin );
                    fprintf( out, ", position (" );
                    if( p.xPosType == DYNAMIC)
                        fprintf( out, "%s %s, ", getDPosString( p.xpos ), getPosString( p.xPosType ) );
                    else
                        fprintf( out, "%hu %s,", p.xpos, getPosString(p.xPosType));
                    if( p.yPosType == DYNAMIC)
                        fprintf( out, "%s %s)", getDPosString( p.ypos ), getPosString( p.yPosType ) );
                    else
                        fprintf( out, "%hu %s)", p.ypos, getPosString( p.yPosType ) );
                }
                if( carg & 0x02 ) {
                    PanelSize p;
                    memcpy(&p, &text[ count + 1 ], sizeof( PanelSize ) );
                    count += sizeof( PanelSize );
                    fprintf( out, ", size (" );
                    if( p.widthType == DYNAMIC )
                        fprintf( out, "%s %s, ", getDPosString( p.width ), getPosString( p.widthType ) );
                    else
                        fprintf( out, "%hu %s,", p.width, getPosString( p.widthType ) );
                    if( p.heightType == DYNAMIC )
                        fprintf( out, "%s %s)", getDPosString( p.height ), getPosString( p.heightType ) );
                    else
                        fprintf( out, "%hu %s)", p.height, getPosString( p.heightType ) );
                }
            }
        }
        fprintf( out, ">]" );
        break;
    default:
        fprintf( out, "%2.2x: unknown type of size %2.2x (%u) bytes:", type, size, size );
        while( --size > 1 )
            fprintf( out, " %2.2x", text[ ++count ] );
        fprintf( out, ">]" );
        break;
    }
    return count;
}
예제 #3
0
Align AttributeManager::alignOf( const QString& attribute, BasicElement* element ) const
{
    return parseAlign( findValue( attribute, element ) );
}