Beispiel #1
0
void Editor::open(const QFileInfo &info)
{
    if (!info.exists() || !info.isFile())
        return;
    int index = files->findData(info.absoluteFilePath());
    if (index >= 0) {
        files->setCurrentIndex(index);
        return;
    }
    QWidget *widget;
    if (QString(ALLOWED_IMAGE_EXTENSIONS).contains(info.suffix())) {
        Viewer *viewer = new Viewer(tabs);
        viewer->open(info);
        widget = viewer;
    } else if (QString(ALLOWED_TEXT_EXTENSIONS).contains(info.suffix())) {
        Coder *coder = new Coder(tabs);
        coder->open(info);
        widget = coder;
    } else
        return;
    QIcon icon = (editables.contains(info.suffix()) ? ::icon(info.suffix()) : ::icon("file"));
    index = tabs->addTab(widget, icon, info.fileName());
    files->addItem(icon, info.fileName(), info.absoluteFilePath());
    files->setCurrentIndex(index);
    tabs->setTabToolTip(index, info.absoluteFilePath());
    widget->setFocus();
    widget->setProperty("path", info.absoluteFilePath());
}
Beispiel #2
0
    bool read_subtree(int pos, Ranges &subrange, Tree &tree) {
        PropertyDecisionNode &n = tree[pos];
        int p = n.property = coder.read_int(0,nb_properties)-1;

        if (p != -1) {
            int oldmin = subrange[p].first;
            int oldmax = subrange[p].second;
            if (oldmin >= oldmax) {
              e_printf( "Invalid tree. Aborting tree decoding.\n");
              return false;
            }
            n.count = coder.read_int(CONTEXT_TREE_MIN_COUNT, CONTEXT_TREE_MAX_COUNT); // * CONTEXT_TREE_COUNT_QUANTIZATION;
            assert(oldmin < oldmax);
            int splitval = n.splitval = coder.read_int(oldmin, oldmax-1);
            int childID = n.childID = tree.size();
//            e_printf( "Pos %i: prop %i splitval %i in [%i..%i]\n", pos, n.property, splitval, oldmin, oldmax-1);
            tree.push_back(PropertyDecisionNode());
            tree.push_back(PropertyDecisionNode());
            // > splitval
            subrange[p].first = splitval+1;
            if (!read_subtree(childID, subrange, tree)) return false;

            // <= splitval
            subrange[p].first = oldmin;
            subrange[p].second = splitval;
            if (!read_subtree(childID+1, subrange, tree)) return false;

            subrange[p].second = oldmax;
        }
        return true;
    }
Beispiel #3
0
int
Coder::getBuffer(struct AVCodecContext *s, AVFrame *frame, int flags) {
  Coder* coder = static_cast<Coder*>(s->opaque);
  if (!coder)
    return avcodec_default_get_buffer2(s, frame, flags);

  if (!(coder->mCodec->getCapabilities() & Codec::CAP_DR1))
    return avcodec_default_get_buffer2(s, frame, flags);

  return coder->prepareFrame(frame, flags);
}
 Coder* Coder::createWithArchiver(Archiver* archiver)
 {
     Coder* ref = new (std::nothrow) Coder();
     if (ref && ref->initWithArchiver(archiver)) {
         ref->autorelease();
         return ref;
     } else {
         CC_SAFE_RELEASE(ref);
         return nullptr;
     }
 }
 Coder* Coder::createWithUnarchiver(Unarchiver* unarchiver, const ValueMap& valueMap)
 {
     Coder *ref = new (std::nothrow) Coder();
     
     if (ref && ref->initWithUnarchiver(unarchiver, valueMap)) {
         ref->autorelease();
         return ref;
     } else {
         CC_SAFE_DELETE(ref);
         return nullptr;
     }
 }
Beispiel #6
0
void EditorTabs::onEditCut()
{
    int i;
    if ((i = currentIndex()) >= 0)
    {
        QWidget *w = widget(i);
        Coder *c;
        if (w && (c = dynamic_cast<Coder *>(w)))
        {
            c->cut();
        }
    }
}
Beispiel #7
0
void Editor::save(const bool all)
{
    int index = all ? 0 : files->currentIndex();
    if (index < 0)
        return;
    do {
        Coder *coder = qobject_cast<Coder *>(tabs->widget(index));
        if (coder != nullptr)
            coder->save();
        else {
            Viewer *viewer = qobject_cast<Viewer *>(tabs->widget(index));
            if (viewer != nullptr)
                viewer->save();
        }
        index++;
    } while (all && (index < files->count()));
}
 void Archiver::generateValueMap(EncodableObject* object)
 {
     if (object == nullptr ||
         objectIsSaved(object))
     {
         return;
     }
     
     addUniqueObject(object);
     
     Coder* coder = Coder::createWithArchiver(this);
     object->encodeWithCoder(coder);
     
     //coder->addObjectValuesToValueMap();
     
     addValueMap(coder->getValueMap(), getReferenceIndexOfObject(object));
 }
Beispiel #9
0
    int read_int(Properties &properties, int nbits) {
#ifdef STATS
        symbols++;
#endif
        CompoundSymbolChances<BitChance,bits> &chances = find_leaf(properties);
        set_selection_and_update_property_sums(properties,chances);
        CompoundSymbolChances<BitChance,bits> &chances2 = find_leaf(properties);
        return coder.read_int(chances2, selection, nbits);
    }
Beispiel #10
0
void EditorTabs::onEditGoto()
{
    int i;
    if ((i = currentIndex()) >= 0)
    {
        QWidget *w = widget(i);
        Coder *c;
        if (w && (c = dynamic_cast<Coder *>(w)))
        {
            bool ok;
            int r = QInputDialog::getInt(this, Qrc::text("dialog.goto.title"), Qrc::text("dialog.goto.message"), 1, 1, c->document()->blockCount(), 1, &ok);
            if (ok)
            {
                c->setTextCursor(QTextCursor(c->document()->findBlockByLineNumber(r - 1)));
            }
        }
    }
}
Beispiel #11
0
    void write_int(Properties &properties, int nbits, int val) {
#ifdef STATS
        symbols++;
#endif
        CompoundSymbolChances<BitChance,bits> &chances = find_leaf(properties);
        set_selection_and_update_property_sums(properties,chances);
        CompoundSymbolChances<BitChance,bits> &chances2 = find_leaf(properties);
        coder.write_int(chances2, selection, nbits, val);
    }
Beispiel #12
0
    void set_trace_callback(Coder& coder, PyObject* function)
    {
        auto callback = [function](
            const std::string& zone, const std::string& message)
        {
            boost::python::call<void>(function, zone, message);
        };

        coder.set_trace_callback(callback);
    }
Beispiel #13
0
void test_coder_array(Coder<vT, bsT> &coder, vT *arr, uint64_t npoints) {
	unsigned char *outbits = static_cast<unsigned char*>(
			calloc(npoints*BUF_SCALE_FACTOR+12, sizeof(vT)));
	uint64_t outsize = sizeof(vT)*(npoints*BUF_SCALE_FACTOR+12);
	uint64_t insize = npoints;
	outbits = coder.enc(outbits, &outsize, static_cast<vT*>(arr), insize);
	vT* dout = static_cast<vT*>(malloc(sizeof(vT)*(npoints*BUF_SCALE_FACTOR+12)));
	dout = coder.dec(dout, &insize, outbits, outsize);
	if ( memcmp(dout, arr, npoints*sizeof(vT)) ) {
		cout << "Roundtrip error!" << endl;
		cout << " in:";
		print_arr(arr, min(static_cast<uint64_t>(20), npoints));
		cout << endl;
		cout << "out:";
		print_arr(dout, min(static_cast<uint64_t>(20), npoints));
	}

	free(dout);
	free(outbits);
}
Beispiel #14
0
void EditorTabs::onFileOpen(const QString &p)
{
    int i;
    QWidget *w;
    if ((i = _files.value(p, -1)) >= 0)
    {
        w = widget(i);
    }
    else
    {
        QFileInfo fi(p);
        QString ext = fi.suffix();
        if (QString(EDITOR_EXT_CODER).contains(ext, Qt::CaseInsensitive))
        {
            Coder *c = new Coder(this);
            c->setPlainText(FileUtils::read(p));
            new CoderHighlighter(fi.suffix() + ".def", HIGHLIGHTER_THEME, c->document());
            w = c;
        }
        else if (QString(EDITOR_EXT_VIEWER).contains(ext, Qt::CaseInsensitive))
        {
            Viewer *v = new Viewer(this);
            v->setPixmap(QPixmap(p));
            v->zoomReset();
            w = v;
        }
        else
        {
            return;
        }
        _files.insert(p, i = addTab(w, _provider.icon(fi), fi.fileName()));
    }
    setCurrentIndex(i);
    setTabToolTip(i, p);
    w->setProperty(TAB_PROPERTY_PATH, p);
    w->setFocus();
    emit fileChanged(p);
}
Beispiel #15
0
void EditorTabs::onFileSave(const int i)
{
    QWidget *w = widget(i);
    Coder *c;
    if (w && (c = dynamic_cast<Coder *>(w)))
    {
        QString p = w->property(TAB_PROPERTY_PATH).toString();
        QFileInfo fi(p);
        if (fi.exists() || fi.isFile())
        {
            QFile f(p);
            if (f.open(QIODevice::Text | QIODevice::Truncate | QIODevice::WriteOnly))
            {
                QTextStream s(&f);
                s.setGenerateByteOrderMark(false);
                s.setCodec(ENCODING_DEFAULT);
                s << c->toPlainText();
                f.close();
            }
            emit fileSaved(p);
        }
    }
}
Beispiel #16
0
    void write_subtree(int pos, Ranges &subrange, const Tree &tree) {
        const PropertyDecisionNode &n = tree[pos];
        int p = n.property;
        coder.write_int(0,nb_properties,p+1);
        if (p != -1) {
            coder.write_int(CONTEXT_TREE_MIN_COUNT, CONTEXT_TREE_MAX_COUNT, n.count);
//            printf("From properties 0..%i, split node at PROPERTY %i\n",nb_properties-1,p);
            int oldmin = subrange[p].first;
            int oldmax = subrange[p].second;
            assert(oldmin < oldmax);
            coder.write_int(oldmin, oldmax-1, n.splitval);
//            e_printf( "Pos %i: prop %i splitval %i in [%i..%i]\n", pos, n.property, n.splitval, oldmin, oldmax-1);
            // > splitval
            subrange[p].first = n.splitval+1;
            write_subtree(n.childID, subrange, tree);

            // <= splitval
            subrange[p].first = oldmin;
            subrange[p].second = n.splitval;
            write_subtree(n.childID+1, subrange, tree);

            subrange[p].second = oldmax;
        }
    }
Beispiel #17
0
 void write_int(Properties &properties, int min, int max, int val) {
     CompoundSymbolChances<BitChance,bits> &chances = find_leaf(properties);
     set_selection_and_update_property_sums(properties,chances);
     CompoundSymbolChances<BitChance,bits> &chances2 = find_leaf(properties);
     coder.write_int(chances2, selection, min, max, val);
 }
Beispiel #18
0
 int read_int(Properties &properties, int min, int max) {
     CompoundSymbolChances<BitChance,bits> &chances = find_leaf(properties);
     set_selection_and_update_property_sums(properties,chances);
     CompoundSymbolChances<BitChance,bits> &chances2 = find_leaf(properties);
     return coder.read_int(chances2, selection, min, max);
 }