int
myelehandler(wvParseStruct *ps, wvTag tag, void *props, int dirty) {
    expand_data *data = (expand_data *)ps->userData;

    data->anSttbfAssoc = &ps->anSttbfAssoc;
    data->lfo          = &ps->lfo;
    data->lfolvl       = ps->lfolvl;
    data->lvl          = ps->lvl;
    data->nolfo        = &ps->nolfo;
    data->nooflvl      = &ps->nooflvl;
    data->stsh         = &ps->stsh;
    data->lst          = &ps->lst;
    data->noofLST      = &ps->noofLST;
    data->liststartnos = &ps->liststartnos;
    data->listnfcs     = &ps->listnfcs;
    data->finallvl     = &ps->finallvl;
    data->fib          = &ps->fib;
    data->dop          = &ps->dop;
    data->intable      = &ps->intable;
    data->cellbounds   = &ps->cellbounds;
    data->nocellbounds = &ps->nocellbounds;
    data->endcell      = &ps->endcell;
    data->vmerges      = &ps->vmerges;
    data->norows       = &ps->norows;
    data->nextpap      = &ps->nextpap;
    data->charset      = wvAutoCharset(ps);
    data->props        = props;

    switch (tag) {
        case PARABEGIN:
            wvBeginPara(data);
            break;

        case PARAEND:
            wvEndPara(data);
            wvCopyPAP(&data->lastpap, (PAP *)(data->props));
            break;

        case SECTIONBEGIN:
            wvBeginSection(data);
            break;

        case SECTIONEND:
            wvEndSection(data);
            break;

        case CHARPROPBEGIN:
            wvBeginCharProp(data, NULL);
            break;

        case CHARPROPEND:
            wvEndCharProp(data);
            break;

        default:
            break;
    }
    return 0;
}
예제 #2
0
파일: table.c 프로젝트: AbiWord/wv
void
wvGetComplexRowTap (wvParseStruct * ps, PAP * dpap, U32 para_intervals,
		    BTE * btePapx, U32 * posPapx, U32 piece)
{
    PAPX_FKP para_fkp;
	U32 para_fcFirst, para_fcLim = 0xffffffffL;
    PAP apap;
    U32 i;
    S32 j = 0;
    wvVersion ver = wvQuerySupported (&ps->fib, NULL);
    wvCopyPAP (&apap, dpap);

    wvInitPAPX_FKP (&para_fkp);

    i = wvStream_tell (ps->mainfd);

    do
      {
	  wvReleasePAPX_FKP (&para_fkp);

	  wvTrace (
		   ("3: cp and fc are %x(%d) %x\n", i, i,
		    wvConvertCPToFC (i, &ps->clx)));
	  piece =
	      wvGetComplexParaBounds (ver, &para_fkp, &para_fcFirst, &para_fcLim,
				      i, &ps->clx, btePapx, posPapx,
				      para_intervals, piece, ps->mainfd);
	  if (piece == 0xffffffffL)
	      break;
	  wvAssembleSimplePAP (ver, &apap, para_fcLim, &para_fkp, ps);
	  wvAssembleComplexPAP (ver, &apap, piece, ps);
	  wvTrace (
		   ("para from %x to %x, table is %d\n", para_fcFirst,
		    para_fcLim, apap.fInTable));
	  i = para_fcLim;
      }
    while (apap.fTtp == 0);

    wvReleasePAPX_FKP (&para_fkp);
    wvCopyTAP (&(dpap->ptap), &apap.ptap);

    for (j = 0; j < apap.ptap.itcMac + 1; j++)
	wvTrace (("This Row-->%d\n", apap.ptap.rgdxaCenter[j]));
}
예제 #3
0
파일: table.c 프로젝트: AbiWord/wv
void
wvGetRowTap (wvParseStruct * ps, PAP * dpap, U32 para_intervals,
	     BTE * btePapx, U32 * posPapx)
{
    PAPX_FKP para_fkp;
	
    U32 para_fcFirst, para_fcLim = 0xffffffffL;
    PAP apap;
    U32 i;
    S32 j = 0;
    wvVersion ver = wvQuerySupported (&ps->fib, NULL);
    wvCopyPAP (&apap, dpap);

    wvInitPAPX_FKP (&para_fkp);

    i = wvStream_tell (ps->mainfd);
    wvTrace (("RowTab begin\n"));
    do
      {
	  wvReleasePAPX_FKP (&para_fkp);
	  wvGetSimpleParaBounds (ver, &para_fkp,
				 &para_fcFirst, &para_fcLim, i, btePapx,
				 posPapx, para_intervals, ps->mainfd);
	  wvTrace (("2: para from %x to %x\n", para_fcFirst, para_fcLim));
	  wvAssembleSimplePAP (ver, &apap, para_fcLim, &para_fkp, ps);
	  i = para_fcLim;
      }
    while ((apap.fTtp == 0) && apap.fInTable); /* placing '&& apap.fInTable' here fixes #11433. I can't find any regressions */

    wvTrace (("fTtp is %d\n", apap.fTtp));

    wvReleasePAPX_FKP (&para_fkp);
    wvCopyTAP (&(dpap->ptap), &apap.ptap);

    for (j = 0; j < apap.ptap.itcMac + 1; j++)
	wvTrace (("This Row-->%d\n", apap.ptap.rgdxaCenter[j]));
}