~ubuntu-branches/debian/sid/qpdfview/sid

« back to all changes in this revision

Viewing changes to sources/djvumodel.cpp

  • Committer: Package Import Robot
  • Author(s): Benjamin Eltzner
  • Date: 2013-05-26 13:52:50 UTC
  • mfrom: (1.2.8)
  • Revision ID: package-import@ubuntu.com-20130526135250-s1rhw935iqd8fcfs
Tags: 0.4.3-1
* New upstream release.
* Added menu file and fetch xpm icon file in debian folder.

Show diffs side-by-side

added added

removed removed

Lines of Context:
216
216
        }
217
217
    }
218
218
 
219
 
    int pageAnnoLength = miniexp_length(pageAnnoExp);
 
219
    const int pageAnnoLength = miniexp_length(pageAnnoExp);
220
220
 
221
221
    for(int pageAnnoN = 0; pageAnnoN < pageAnnoLength; ++pageAnnoN)
222
222
    {
223
223
        miniexp_t linkExp = miniexp_nth(pageAnnoN, pageAnnoExp);
224
224
 
225
 
        if(miniexp_length(linkExp) <= 3)
226
 
        {
227
 
            continue;
228
 
        }
229
 
 
230
 
        if(qstrncmp(miniexp_to_name(miniexp_nth(0, linkExp)), "maparea", 7 ) != 0)
231
 
        {
232
 
            continue;
233
 
        }
234
 
 
235
 
        QString type;
236
 
 
237
 
        if(miniexp_symbolp(miniexp_nth(0, miniexp_nth(3, linkExp))))
238
 
        {
239
 
            type = QString::fromUtf8(miniexp_to_name(miniexp_nth(0, miniexp_nth(3, linkExp))));
240
 
        }
 
225
        if(miniexp_length(linkExp) <= 3 || qstrncmp(miniexp_to_name(miniexp_nth(0, linkExp)), "maparea", 7 ) != 0 || !miniexp_symbolp(miniexp_nth(0, miniexp_nth(3, linkExp))))
 
226
        {
 
227
            continue;
 
228
        }
 
229
 
 
230
        const QString type = QString::fromUtf8(miniexp_to_name(miniexp_nth(0, miniexp_nth(3, linkExp))));
241
231
 
242
232
        if(type == QLatin1String("rect") || type == QLatin1String("oval") || type == QLatin1String("poly"))
243
233
        {
246
236
            QPainterPath boundary;
247
237
 
248
238
            miniexp_t areaExp = miniexp_nth(3, linkExp);
249
 
            int areaLength = miniexp_length( areaExp );
 
239
            const int areaLength = miniexp_length( areaExp );
250
240
 
251
241
            if(areaLength == 5 && (type == QLatin1String("rect") || type == QLatin1String("oval")))
252
242
            {
255
245
 
256
246
                p.setY(m_size.height() - s.height() - p.y());
257
247
 
258
 
                QRectF rect(p, s);
 
248
                const QRectF r(p, s);
259
249
 
260
250
                if(type == QLatin1String("rect"))
261
251
                {
262
 
                    boundary.addRect(rect);
 
252
                    boundary.addRect(r);
263
253
                }
264
254
                else
265
255
                {
266
 
                    boundary.addEllipse(rect);
 
256
                    boundary.addEllipse(r);
267
257
                }
268
258
            }
269
259
            else if(areaLength > 0 && areaLength % 2 == 1 && type == QLatin1String("poly"))
348
338
 
349
339
static QString loadText(miniexp_t textExp, const QRect& rect, int pageHeight)
350
340
{
351
 
    int textLength = miniexp_length(textExp);
 
341
    const int textLength = miniexp_length(textExp);
352
342
 
353
343
    if(textLength >= 6 && miniexp_symbolp(miniexp_nth(0, textExp)))
354
344
    {
355
 
        int xmin = miniexp_to_int(miniexp_nth(1, textExp));
356
 
        int ymin = miniexp_to_int(miniexp_nth(2, textExp));
357
 
        int xmax = miniexp_to_int(miniexp_nth(3, textExp));
358
 
        int ymax = miniexp_to_int(miniexp_nth(4, textExp));
 
345
        const int xmin = miniexp_to_int(miniexp_nth(1, textExp));
 
346
        const int ymin = miniexp_to_int(miniexp_nth(2, textExp));
 
347
        const int xmax = miniexp_to_int(miniexp_nth(3, textExp));
 
348
        const int ymax = miniexp_to_int(miniexp_nth(4, textExp));
359
349
 
360
350
        if(rect.intersects(QRect(xmin, pageHeight - ymax, xmax - xmin, ymax - ymin)))
361
351
        {
407
397
        }
408
398
    }
409
399
 
410
 
    QString text = loadText(pageTextExp, QTransform::fromScale(m_resolution / 72.0, m_resolution / 72.0).mapRect(rect).toRect(), m_size.height());
 
400
    const QString text = loadText(pageTextExp, QTransform::fromScale(m_resolution / 72.0, m_resolution / 72.0).mapRect(rect).toRect(), m_size.height());
411
401
 
412
402
    ddjvu_miniexp_release(m_parent->m_document, pageTextExp);
413
403
 
446
436
    {
447
437
        miniexp_t textExp = words.takeFirst();
448
438
 
449
 
        int textLength = miniexp_length(textExp);
 
439
        const int textLength = miniexp_length(textExp);
450
440
 
451
441
        if(textLength >= 6 && miniexp_symbolp(miniexp_nth(0, textExp)))
452
442
        {
453
443
            if(qstrncmp(miniexp_to_name(miniexp_nth(0, textExp)), "word", 4) == 0)
454
444
            {
455
 
                QString word = QString::fromUtf8(miniexp_to_str(miniexp_nth(5, textExp)));
 
445
                const QString word = QString::fromUtf8(miniexp_to_str(miniexp_nth(5, textExp)));
456
446
 
457
447
                if(text.indexOf(word, index, matchCase ? Qt::CaseSensitive : Qt::CaseInsensitive) == index)
458
448
                {
459
 
                    int xmin = miniexp_to_int(miniexp_nth(1, textExp));
460
 
                    int ymin = miniexp_to_int(miniexp_nth(2, textExp));
461
 
                    int xmax = miniexp_to_int(miniexp_nth(3, textExp));
462
 
                    int ymax = miniexp_to_int(miniexp_nth(4, textExp));
 
449
                    const int xmin = miniexp_to_int(miniexp_nth(1, textExp));
 
450
                    const int ymin = miniexp_to_int(miniexp_nth(2, textExp));
 
451
                    const int xmax = miniexp_to_int(miniexp_nth(3, textExp));
 
452
                    const int ymax = miniexp_to_int(miniexp_nth(4, textExp));
463
453
 
464
454
                    rect = rect.united(QRectF(xmin, m_size.height() - ymax, xmax - xmin, ymax - ymin));
465
455
 
519
509
    ddjvu_format_set_row_order(m_format, 1);
520
510
    ddjvu_format_set_y_direction(m_format, 1);
521
511
 
522
 
    int fileNum = ddjvu_document_get_filenum(m_document);
 
512
    const int fileNum = ddjvu_document_get_filenum(m_document);
523
513
 
524
514
    for(int index = 0; index < fileNum; ++index)
525
515
    {
526
516
        ddjvu_fileinfo_t fileinfo;
527
517
 
528
 
        if(ddjvu_document_get_fileinfo(m_document, index, &fileinfo) != DDJVU_JOB_OK)
529
 
        {
530
 
            continue;
531
 
        }
532
 
 
533
 
        if(fileinfo.type != 'P')
 
518
        if(ddjvu_document_get_fileinfo(m_document, index, &fileinfo) != DDJVU_JOB_OK || fileinfo.type != 'P')
534
519
        {
535
520
            continue;
536
521
        }
619
604
 
620
605
static void loadOutline(miniexp_t outlineExp, int offset, QStandardItem* parent, const QHash< QString, int >& indexByName)
621
606
{
622
 
    int outlineLength = miniexp_length(outlineExp);
 
607
    const int outlineLength = miniexp_length(outlineExp);
623
608
 
624
609
    for(int outlineN = qMax(0, offset); outlineN < outlineLength; ++outlineN)
625
610
    {
626
611
        miniexp_t bookmarkExp = miniexp_nth(outlineN, outlineExp);
627
 
        int bookmarkLength = miniexp_length(bookmarkExp);
628
 
 
629
 
        if(bookmarkLength <= 1)
630
 
        {
631
 
            continue;
632
 
        }
633
 
 
634
 
        if(!miniexp_stringp(miniexp_nth(0, bookmarkExp)) || !miniexp_stringp(miniexp_nth(1, bookmarkExp)))
635
 
        {
636
 
            continue;
637
 
        }
638
 
 
639
 
        QString title = QString::fromUtf8(miniexp_to_str(miniexp_nth(0, bookmarkExp)));
 
612
        const int bookmarkLength = miniexp_length(bookmarkExp);
 
613
 
 
614
        if(bookmarkLength <= 1 || !miniexp_stringp(miniexp_nth(0, bookmarkExp)) || !miniexp_stringp(miniexp_nth(1, bookmarkExp)))
 
615
        {
 
616
            continue;
 
617
        }
 
618
 
 
619
        const QString title = QString::fromUtf8(miniexp_to_str(miniexp_nth(0, bookmarkExp)));
640
620
        QString destination = QString::fromUtf8(miniexp_to_str(miniexp_nth(1, bookmarkExp)));
641
621
 
642
622
        if(!title.isEmpty() && !destination.isEmpty())
682
662
 
683
663
void Model::DjVuDocument::loadOutline(QStandardItemModel* outlineModel) const
684
664
{
 
665
    Document::loadOutline(outlineModel);
 
666
 
685
667
    QMutexLocker mutexLocker(&m_mutex);
686
668
 
687
669
    miniexp_t outlineExp;
710
692
        return;
711
693
    }
712
694
 
713
 
    outlineModel->clear();
714
 
 
715
695
    ::loadOutline(outlineExp, 1, outlineModel->invisibleRootItem(), m_indexByName);
716
696
 
717
697
    ddjvu_miniexp_release(m_document, outlineExp);
719
699
 
720
700
void Model::DjVuDocument::loadProperties(QStandardItemModel* propertiesModel) const
721
701
{
 
702
    Document::loadProperties(propertiesModel);
 
703
 
722
704
    QMutexLocker mutexLocker(&m_mutex);
723
705
 
724
 
    propertiesModel->clear();
725
706
    propertiesModel->setColumnCount(2);
726
707
 
727
708
    miniexp_t annoExp;
740
721
        }
741
722
    }
742
723
 
743
 
    int annoLength = miniexp_length(annoExp);
 
724
    const int annoLength = miniexp_length(annoExp);
744
725
 
745
726
    for(int annoN = 0; annoN < annoLength; ++annoN)
746
727
    {
747
728
        miniexp_t listExp = miniexp_nth(annoN, annoExp);
748
 
        int listLength = miniexp_length(listExp);
749
 
 
750
 
        if(listLength <= 1)
751
 
        {
752
 
            continue;
753
 
        }
754
 
 
755
 
        if(qstrncmp(miniexp_to_name(miniexp_nth(0, listExp)), "metadata", 8) != 0)
 
729
        const int listLength = miniexp_length(listExp);
 
730
 
 
731
        if(listLength <= 1 || qstrncmp(miniexp_to_name(miniexp_nth(0, listExp)), "metadata", 8) != 0)
756
732
        {
757
733
            continue;
758
734
        }
766
742
                continue;
767
743
            }
768
744
 
769
 
            QString key = QString::fromUtf8(miniexp_to_name(miniexp_nth(0, keyValueExp)));
770
 
            QString value = QString::fromUtf8(miniexp_to_str(miniexp_nth(1, keyValueExp)));
 
745
            const QString key = QString::fromUtf8(miniexp_to_name(miniexp_nth(0, keyValueExp)));
 
746
            const QString value = QString::fromUtf8(miniexp_to_str(miniexp_nth(1, keyValueExp)));
771
747
 
772
748
            if(!key.isEmpty() && !value.isEmpty())
773
749
            {