On Fri, Oct 25, 2019 at 03:45:29AM -0600, Jason Crain wrote:
> On 10/25/19 3:03 AM, Mike Marchywka via evince-list wrote:
> > 1) The code I found looked like an error, the y-coord was apparently
> > shifted with border.right which sounds incorrect vs say border.top .
> > 2) On the first page without scrolling the above y seems to work ok.
> > 3) With scrolling, the text and mouse seemed to drift at about a 3-4 percent
> > rate hence the nice kluge. I wanted typeset the document as a single ( long
> > )
> > page and aside from the obvious hazards of such a drift this becomes
> > a huge problem here. If this is some kind of fp round off or other known
> > problem it would be nice to fix- alternatively I can track it down as I
> > wanted
> > to look at the coords anyway although hopefully mich later.
> > 4) The use of the view->scale in the empircally working code does not seem
> > consistent, it has a value around
> > 1.2 whcn I looked, and misuse should be an obvious problem
> > even on a normal page.
> >
> > Was text select disabled on dvi for a reason or am I working with
> > very old code, apparently by source download is labelled
> > as evince-3.18.2.
>
> Version 3.18.2 is from 2015. The newest version is 3.34.1. See
> https://wiki.gnome.org/Apps/Evince/Downloads for links to the official
> downloads.
>
> As far as I know, the dvi backend has never supported the text interfaces.
> Only the PDF and DjVu backends currently support it.
>
> There very well may be a bug in evince, though since text selection is
> working fairly well with PDF documents, if there is a bug, it might be
> limited to only the DVI backend.
I guess I forgot I added margins to DviContext and got them from here,
see last two lines, this is from dvi-document.c. I have no idea
if these are baked into the other quantities somewhere,
static cairo_surface_t *
dvi_document_render (EvDocument *document,
EvRenderContext *rc)
{
cairo_surface_t *surface;
cairo_surface_t *rotated_surface;
DviDocument *dvi_document = DVI_DOCUMENT(document);
gdouble xscale, yscale;
gint required_width, required_height;
gint proposed_width, proposed_height;
gint xmargin = 0, ymargin = 0;
/* We should protect our context since it's not
* thread safe. The work to the future -
* let context render page independently
*/
g_mutex_lock (&dvi_context_mutex);
mdvi_setpage (dvi_document->context, rc->page->index);
ev_render_context_compute_scales (rc, dvi_document->base_width,
dvi_document->base_height,
&xscale, &yscale);
mdvi_set_shrink (dvi_document->context,
(int)((dvi_document->params->hshrink - 1) / xscale) +
1,
(int)((dvi_document->params->vshrink - 1) / yscale) +
1);
ev_render_context_compute_scaled_size (rc, dvi_document->base_width,
dvi_document->base_height,
&required_width,
&required_height);
proposed_width = dvi_document->context->dvi_page_w *
dvi_document->context->params.conv;
proposed_height = dvi_document->context->dvi_page_h *
dvi_document->context->params.vconv;
if (required_width >= proposed_width)
xmargin = (required_width - proposed_width) / 2;
if (required_height >= proposed_height)
ymargin = (required_height - proposed_height) / 2;
mdvi_cairo_device_set_margins (&dvi_document->context->device, xmargin,
ymargin);
mdvi_cairo_device_set_scale (&dvi_document->context->device, xscale,
yscale);
mdvi_cairo_device_render (dvi_document->context);
surface = mdvi_cairo_device_get_surface
(&dvi_document->context->device);
dvi_document->context->xmargin=xmargin; // mjm
dvi_document->context->ymargin=ymargin; // mjm
>
> _______________________________________________
> evince-list mailing list
> [email protected]
> https://mail.gnome.org/mailman/listinfo/evince-list
--
mike marchywka
306 charles cox
canton GA 30115
USA, Earth
[email protected]
404-788-1216
ORCID: 0000-0001-9237-455X
_______________________________________________
evince-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/evince-list