[gnome-maps/wip/mlundblad/dont-use-offscreen-window: 7/7] WIP: transitPrintLayout: Use Cairo and Pango to render
- From: Marcus Lundblad <mlundblad src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-maps/wip/mlundblad/dont-use-offscreen-window: 7/7] WIP: transitPrintLayout: Use Cairo and Pango to render
- Date: Tue, 19 Mar 2019 21:43:36 +0000 (UTC)
commit 4b93bb6988c752ba8af5a78da1668321ac35de10
Author: Marcus Lundblad <ml update uu se>
Date: Sun Mar 17 22:22:29 2019 +0100
WIP: transitPrintLayout: Use Cairo and Pango to render
src/transitPrintLayout.js | 57 ++++++++++++++++++++++++++++++++++-------------
1 file changed, 42 insertions(+), 15 deletions(-)
---
diff --git a/src/transitPrintLayout.js b/src/transitPrintLayout.js
index 5648390..cc4b645 100644
--- a/src/transitPrintLayout.js
+++ b/src/transitPrintLayout.js
@@ -25,9 +25,12 @@ const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk;
const GObject = imports.gi.GObject;
const Gtk = imports.gi.Gtk;
+const Pango = imports.gi.Pango;
+const Gfx = imports.gfx;
const MapSource = imports.mapSource;
const PrintLayout = imports.printLayout;
+const Transit = imports.transit;
const TransitArrivalMarker = imports.transitArrivalMarker;
const TransitArrivalRow = imports.transitArrivalRow;
const TransitBoardMarker = imports.transitBoardMarker;
@@ -214,24 +217,48 @@ class TransitPrintLayout extends PrintLayout.PrintLayout {
}
_drawInstruction(width, height, leg, start) {
- let legRow = new TransitLegRow.TransitLegRow({
- visible: true,
- leg: leg,
- start: start,
- print: true
- });
-
- this._renderWidget(legRow, width, height);
+ let pageNum = this.numPages - 1;
+ let x = this._cursorX;
+ let y = this._cursorY;
+ let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height);
+ let cr = new Cairo.Context(surface);
+ let timeWidth = !leg.transit && start ? height : height * 2;
+ let fromText = Transit.getFromLabel(leg, start);
+
+ this._drawIcon(cr, leg.iconName, width, height);
+ this._drawText(cr, fromText, width - height - timeWidth, height / 2,
+ this._rtl ? timeWidth : height, 0, Pango.Alignment.LEFT);
+ this._drawTextVerticallyCentered(cr, leg.prettyPrintTime({ start: start }),
+ timeWidth, height,
+ this._rtl ? 0 : width - timeWidth - 1,
+ this._rtl ? Pango.Alignment.LEFT :
+ Pango.Alignment.RIGHT);
+
+ this._addSurface(surface, x, y, pageNum);
}
_drawArrival(width, height) {
- let arrivalRow = new TransitArrivalRow.TransitArrivalRow({
- visible: true,
- itinerary: this._itinerary,
- print: true
- });
-
- this._renderWidget(arrivalRow, width, height);
+ let pageNum = this.numPages - 1;
+ let x = this._cursorX;
+ let y = this._cursorY;
+ let surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width, height);
+ let cr = new Cairo.Context(surface);
+ let lastLeg = this._itinerary.legs[this._itinerary.legs.length - 1];
+
+ this._drawIcon(cr, 'maps-point-end-symbolic', width, height);
+ // draw the arrival text
+ this._drawTextVerticallyCentered(cr, Transit.getArrivalLabel(lastLeg),
+ width - height * 2,
+ height, this._rtl ? height * 2 : height,
+ Pango.Alignment.LEFT);
+ // draw arrival time
+ this._drawTextVerticallyCentered(cr, lastLeg.prettyPrintArrivalTime(),
+ height, height,
+ this._rtl ? 0 : width - height - 1,
+ this._rtl ? Pango.Alignment.LEFT :
+ Pango.Alignment.RIGHT);
+
+ this._addSurface(surface, x, y, pageNum);
}
_legHasMiniMap(index) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]