From d1299c5fc259216c7e77d45a7236b881a861ee2f Mon Sep 17 00:00:00 2001 From: Kim Woelders Date: Fri, 10 Oct 2008 15:46:38 +0000 Subject: [PATCH] Refactor. SVN revision: 36570 --- dox/format.c | 179 ++++++++++++++++++--------------------------------- 1 file changed, 64 insertions(+), 115 deletions(-) diff --git a/dox/format.c b/dox/format.c index f9deeac3..13f567ba 100644 --- a/dox/format.c +++ b/dox/format.c @@ -540,6 +540,67 @@ GetLinkColors(int page_num, int *r, int *g, int *b) } } +static void +CalcOffset(Page * pg, int col_w, int x, int y, int th, int *pxspace, int *poff) +{ + int xspace, off; + int sx, sy, ssx, ssy; + Img_ *img; + int j; + + xspace = col_w; + off = 0; + sx = x + off; + sy = y; + ssx = sx + col_w - 1; + ssy = sy + th - 1; + for (j = 0; j < pg->count; j++) + { + if (pg->obj[j].type != IMG) + continue; + + img = (Img_ *) pg->obj[j].object; + if ((img->w > 0) && (img->h > 0)) + { + int ix, iy, iix, iiy; + + ix = img->x; + iy = img->y; + iix = img->x + img->w - 1; + iiy = img->y + img->h - 1; + + if ((iy <= ssy) && (iiy >= sy)) + { + if ((ix >= sx) && (ix <= ssx)) + { + if ((iix >= sx) && (iix <= ssx)) + { + if (((ix + iix) / 2) > ((sx + ssx) / 2)) + ssx = ix - 1; + else + sx = iix + 1; + } + else + { + ssx = ix - 1; + } + } + else if ((iix >= sx) && (iix <= ssx)) + { + sx = iix + 1; + } + } + } + } + off = sx - x; + xspace = (ssx - sx) + 1; + if (xspace < 0) + xspace = 0; + + *pxspace = xspace; + *poff = off; +} + Link * RenderPage(Window win, int page_num, int w, int h) { @@ -662,7 +723,6 @@ RenderPage(Window win, int page_num, int w, int h) char *txt_disp; int tw, th, xspace; int off, j; - int sx, sy, ssx, ssy; char link_txt[1024]; char link_link[1024]; int spaceflag, oldwc = 0, linkwc; @@ -764,55 +824,9 @@ RenderPage(Window win, int page_num, int w, int h) } strcat(s, wd); - xspace = col_w; - off = 0; - sx = x + off; - sy = y; - ssx = sx + col_w - 1; - ssy = sy + ts.height - 1; - for (j = 0; j < pg->count; j++) - { - if (pg->obj[j].type == IMG) - { - img = (Img_ *) pg->obj[j].object; - if ((img->w > 0) && (img->h > 0)) - { - int ix, iy, iix, iiy; - ix = img->x; - iy = img->y; - iix = img->x + img->w - 1; - iiy = img->y + img->h - 1; + CalcOffset(pg, col_w, x, y, ts.height, &xspace, &off); - if ((iy <= ssy) && (iiy >= sy)) - { - if ((ix >= sx) && (ix <= ssx)) - { - if ((iix >= sx) && (iix <= ssx)) - { - if (((ix + iix) / 2) > - ((sx + ssx) / 2)) - ssx = ix - 1; - else - sx = iix + 1; - } - else - { - ssx = ix - 1; - } - } - else if ((iix >= sx) && (iix <= ssx)) - { - sx = iix + 1; - } - } - } - } - } - off = sx - x; - xspace = (ssx - sx) + 1; - if (xspace < 0) - xspace = 0; TextSize(&ts, s, &tw, &th, 17); txt_disp = ss; if (eot == 1) @@ -869,73 +883,8 @@ RenderPage(Window win, int page_num, int w, int h) y = pg->padding; x += col_w + pg->padding; } - xspace = col_w; - off = 0; - sx = x + off; - sy = y; - ssx = sx + col_w - 1; - ssy = sy + ts.height - 1; - for (j = 0; j < pg->count; j++) - { - if (pg->obj[j].type == IMG) - { - img = - (Img_ *) pg->obj[j].object; - if ((img->w > 0) - && (img->h > 0)) - { - int ix, - iy, iix, iiy; - - ix = img->x; - iy = img->y; - iix = img->x + img->w - 1; - iiy = img->y + img->h - 1; - - if ((iy <= ssy) - && (iiy >= sy)) - { - if ((ix >= sx) - && (ix <= ssx)) - { - if ((iix >= sx) - && (iix <= - ssx)) - { - if (((ix + - iix) / - 2) > - ((sx + - ssx) / - 2)) - ssx = - ix - - 1; - else - sx = - iix + - 1; - } - else - { - ssx = - ix - 1; - } - } - else if ((iix >= sx) - && (iix <= - ssx)) - { - sx = iix + 1; - } - } - } - } - } - off = sx - x; - xspace = (ssx - sx) + 1; - if (xspace < 0) - xspace = 0; + CalcOffset(pg, col_w, x, y, ts.height, + &xspace, &off); } } }