summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tikzit/src/gtk/PreviewRenderer.h6
-rw-r--r--tikzit/src/gtk/PreviewRenderer.m19
2 files changed, 19 insertions, 6 deletions
diff --git a/tikzit/src/gtk/PreviewRenderer.h b/tikzit/src/gtk/PreviewRenderer.h
index d691722..c9e89a7 100644
--- a/tikzit/src/gtk/PreviewRenderer.h
+++ b/tikzit/src/gtk/PreviewRenderer.h
@@ -30,12 +30,14 @@
TikzDocument *document;
PopplerDocument *pdfDocument;
PopplerPage *pdfPage;
+ double width;
+ double height;
}
@property (readonly) Preambles *preambles;
@property (retain) TikzDocument *document;
-@property (readonly) double height;
-@property (readonly) double width;
+@property (assign) double height;
+@property (assign) double width;
- (id) initWithPreambles:(Preambles*)p config:(Configuration*)c;
diff --git a/tikzit/src/gtk/PreviewRenderer.m b/tikzit/src/gtk/PreviewRenderer.m
index d334832..d6d368d 100644
--- a/tikzit/src/gtk/PreviewRenderer.m
+++ b/tikzit/src/gtk/PreviewRenderer.m
@@ -24,7 +24,8 @@
@implementation PreviewRenderer
-@synthesize preambles,document;
+@synthesize preambles, document;
+@synthesize width, height;
- (id) init {
[self release];
@@ -41,6 +42,8 @@
preambles = [p retain];
pdfDocument = NULL;
pdfPage = NULL;
+ width = 150.0;
+ height = 150.0;
}
return self;
@@ -197,7 +200,7 @@
return pdfPage ? YES : NO;
}
-- (double) width {
+/*- (double) width {
double w = 0.0;
if (pdfPage)
poppler_page_get_size(pdfPage, &w, NULL);
@@ -209,11 +212,19 @@
if (pdfPage)
poppler_page_get_size(pdfPage, NULL, &h);
return h;
-}
+}*/
- (void) renderWithContext:(id<RenderContext>)c onSurface:(id<Surface>)surface {
- if (document != nil) {
+ if (document != nil && pdfPage) {
CairoRenderContext *context = (CairoRenderContext*)c;
+
+ double w = 0.0;
+ double h = 0.0;
+ poppler_page_get_size(pdfPage, &w, &h);
+
+ double scale = h / [self height];
+ if (w * scale > [self width]) scale = w / [self width];
+ [[surface transformer] setScale:scale];
[context saveState];
[context applyTransform:[surface transformer]];