Re: Help stepping through objects in a document

From: Dr William Bland (wjb@abstractnonsense.com)
Date: Thu Nov 07 2002 - 04:07:42 EST

  • Next message: Jordi Mas: "Re: 24 hours until release."

    On Wed, Oct 30, 2002 at 11:38:08AM +1100, Martin Sevior wrote:
    > I wrote a little method in PD_Document to display the properties
    > associated with struxes around a strux that I used for debugging
    > purposes.
    >
    > PD_Document::miniDump(PL_StruxDocHandle sdh, UT_sint32 nstruxes)

    Thanks Martin, reading your miniDump code was very instructive. In the
    end I wrote my own code for stepping through the document (also
    borrowing from the text exporter as Dom suggested):

    // Get the current frame, view, etc that the user is in.
    XAP_Frame *pFrame = XAP_App::getApp()->getLastFocussedFrame();
    FV_View* pView = static_cast<FV_View*>(pFrame->getCurrentView());
    PD_Document* mydoc = pView->getDocument();
    pt_PieceTable* mypt = mydoc->getPieceTable();
    pf_Fragments* myfrags = &(mypt->getFragments());

    // Iterate through all the fragments in the document.
    for( pf_Frag* pf = myfrags->getFirst(); (pf); pf=pf->getNext() )
    {
        switch( pf->getType() )
        {
            case pf_Frag::PFT_Text:
                printf( "Found a text fragment\n" );
                break;
            case pf_Frag::PFT_Strux:
                printf( "Found a strux fragment\n" );
                break;
            case pf_Frag::PFT_Object:
                printf( "Found an object fragment\n" );
                break;
            case pf_Frag::PFT_FmtMark:
                printf( "Found an format-mark fragment\n" );
                break;
            case pf_Frag::PFT_EndOfDoc:
                printf( "Found an end-of-document fragment\n" );
                break;
            default:
                printf( "Found an unknown fragment\n" );
                break;
        }
    }

    I will probably write a little tutorial on doing this kind of thing
    (once I'm sure I understand it!) so if anyone hates the way I've done
    this, please let me know before I start telling the world to do it this
    way ;-)

    Best wishes,
                    Bill.



    This archive was generated by hypermail 2.1.4 : Thu Nov 07 2002 - 04:03:42 EST