Ignore:
Timestamp:
Dec 11, 2009, 9:35:47 PM (10 years ago)
Author:
sven
Message:
  • Text editing part:

Improved Column counting
80 column line bar

  • Saving with Jones Format works
File:
1 edited

Legend:

Unmodified
Added
Removed
  • punch-card/punch-card-editor/src/qpunchcard/format.cc

    r44 r49  
    44using namespace QPunchCard;
    55
    6 FileFormat* QPunchCard::autoDetectFileFormat(const QFile&) {
    7         // geht soweit ganz einfach:
    8         return new JonesFileFormat();
    9         /*JonesFileFormat* n = new JonesFileFormat();
    10         n->file = new QFile( file.fileName(), n ); // super copy ;-)
    11         return n;*/
     6QList<QString> FileFormatFactory::availableFormats() {
     7        QList<QString> ret;
     8        ret << "Jones Emulated Card Deck File" << "Punch Card Markup Language File";
     9        return ret;
    1210}
    1311
    14 bool JonesFileFormat::read(QFile& file) {
     12const FileFormat* FileFormatFactory::createFormat(const QString& name) {
     13        if(name == "Jones Emulated Card Deck File")
     14                return new JonesFileFormat;
     15        if(name == "Punch Card Markup Language File")
     16                return new PunchCardMarkupLanguageFormat;
     17        else {
     18                qDebug() << "FileFormatFactory: Invalid createFormat name: " << name;
     19                return 0;
     20        }
     21}
     22
     23QString FileFormatFactory::autoDetectFormat(const QFile&) {
     24        // spaeter per magic bytes-Erkennung machen
     25        return QString("Jones Emulated Card Deck File");
     26}
     27
     28bool JonesFileFormat::read(QFile& file, Deck& deck) const {
    1529        qDebug() << "Jones reading";
    1630
     
    2034                        return false;
    2135        }
    22 
    23         // ohne Deck geht gar nix
    24         if(!deck)
    25                 return false;
    2636
    2737        // Now we have an open file at `file`. Use
     
    8090
    8191                /* push card on the card deck*/
    82                 deck->push_back(cur_card);
     92                deck.push_back(cur_card);
    8393        } // while ! eof
    8494
     
    8898
    8999// jones writer
    90 bool JonesFileFormat::write(QFile& file) {
     100bool JonesFileFormat::write(QFile& file, const Deck& deck) const {
    91101        qDebug() << "Jones writing";
    92102
    93103        if(!file.isOpen()) {
    94104                // oeffne Datei
    95                 if(! file.open(QIODevice::WriteOnly))
     105                if(! file.open(QIODevice::WriteOnly)) {
     106                        qDebug() << "Failed to open file: " << file.errorString();
    96107                        return false;
     108                }
    97109        }
    98 
    99         // nen Deck brauchen wir natuerlich auch schon
    100         if(!deck)
    101                 return false;
    102110
    103111        int col_length = 80;
    104112
    105113        // Write out file prefix
    106 
     114        qDebug() << "Beginning Jones writing";
    107115        file.putChar('H');
    108116        file.putChar('8');
     
    112120
    113121        //for(i = begin(); i != end(); i++ ) {
    114         for(int i=0; i < deck->count(); i++) {
     122        for(int i=0; i < deck.count(); i++) {
    115123                // iterate throught the Cards
    116124                // erhmm... write a header...
     
    126134                        char first, second, third;
    127135
    128                         int even = jones_column_to_integer( deck->at(i)->get(cur_col++) );
    129                         int odd = jones_column_to_integer( deck->at(i)->get(cur_col++) );
     136                        int even = jones_column_to_integer( deck[i]->get(cur_col++) );
     137                        int odd = jones_column_to_integer( deck[i]->get(cur_col++) );
    130138
    131139                        first = even >> 4;
     
    140148
    141149        file.close();
     150        qDebug() << "Jones File written.";
    142151        return true; // done.
    143152} // jones writer
     
    160169
    161170        int r;
    162         for(int i = 0; i < (int)sizeof(Mapping); i++)
     171        //             das hier sollte im Idealfall gleich sein ;-)
     172        for(int i = 0; i < col.size() && i < (int)sizeof(Mapping); i++)
    163173                r |= (col[i] << Mapping[i]);
    164174        return r;
Note: See TracChangeset for help on using the changeset viewer.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License