static void GenerateAnswers(CairoContextEx cr, Game [] games, int columns, int rows) { int x, y, page; string str; int column, row; const int space_lines = 80; x = y = page = 0; column = row = 0; // Draw solution title cr.SetPangoFontSize (20); cr.DrawStringWithWrapping (x + margin, y + margin, ServiceLocator.Instance.GetService <ITranslations> ().GetString ("Solutions"), width - margin); y += space_lines; cr.Stroke (); cr.SetPangoFontSize (12); cr.UseMarkup = true; for (int i = 0; i < games.Length; i++) { str = String.Format (ServiceLocator.Instance.GetService <ITranslations> ().GetString ("Game #{0}. {1}"), i + 1, games[i].AnswerText); // Draw Solution cr.DrawStringWithWrapping (x + margin, y + margin, str, width - margin); cr.Stroke (); y += space_lines; // Next lateral page (right) if (y + space_lines >= page_height * (row + 1) && x + page_width < page_width * columns) { column++; x = column * page_width; y = row * page_height; page++; } else { // No more space (right), new row if (y + space_lines >= page_height * (row + 1) && x + page_width >= page_width * columns) { row++; column = 0; x = column * page_width; y = row * page_height; page++; } } if (page >= rows * columns) { cr.ShowPage (); page = x = y = 0; column = row = 0; } } if (y > 0) cr.ShowPage (); }
void GenerateQuestions(CairoContextEx cr, Game [] games, int columns, int rows) { int x, y, page; Game puzzle; string str; x = y = page = 0; for (int i = 0; i < games.Length; i++) { puzzle = games [i]; puzzle.Begin(); page++; cr.Save(); cr.Translate(x, y); cr.Rectangle(0, 0, width, height + question_height); cr.Clip(); // Translators: {0} is the game number and {1} the game question or answer // The number is used as reference when looking for the game solution in the PDF str = String.Format(Translations.GetString("Game #{0}. {1}"), i + 1, puzzle.Question); // Draw question cr.SetPangoFontSize(12); cr.UseMarkup = true; cr.DrawStringWithWrapping(margin, 10, str, width - margin); cr.Stroke(); cr.UseMarkup = false; // Draw from question_height up height since from 0 to question_height is the question // Translate adds always to previous matrix's transformation cr.Translate(0, question_height); puzzle.DrawPreview(cr, width, height, false); if (i == 0) { cr.Save(); cr.SetPangoFontSize(0.02); cr.MoveTo(0.05, 0.95); cr.ShowPangoText(String.Format(Translations.GetString("Created by gbrainy {0}"), Defines.VERSION)); cr.Stroke(); cr.Restore(); } x += width + margin; if (x > width + margin) { x = 0; y += height + margin + question_height; } cr.Restore(); cr.Stroke(); if (page >= columns * rows) { cr.ShowPage(); page = x = y = 0; } } if (y > 0) { cr.ShowPage(); } }
static void GenerateQuestions(CairoContextEx cr, Game [] games, int columns, int rows) { int x, y, page; Game puzzle; string str; x = y = page = 0; for (int i = 0; i < games.Length; i++) { puzzle = games [i]; puzzle.Begin (); page++; cr.Save (); cr.Translate (x, y); cr.Rectangle (0, 0, width, height + question_height); cr.Clip (); // Translators: {0} is the game number and {1} the game question or answer // The number is used as reference when looking for the game solution in the PDF str = String.Format (ServiceLocator.Instance.GetService <ITranslations> ().GetString ("Game #{0}. {1}"), i + 1, puzzle.Question); // Draw question cr.SetPangoFontSize (12); cr.UseMarkup = true; cr.DrawStringWithWrapping (margin, 10, str, width - margin); cr.Stroke (); cr.UseMarkup = false; // Draw from question_height up height since from 0 to question_height is the question // Translate adds always to previous matrix's transformation cr.Translate (0, question_height); puzzle.DrawPreview (cr, width, height, false); if (i == 0) { cr.Save (); cr.SetPangoFontSize (0.02); cr.MoveTo (0.05, 0.95); cr.ShowPangoText (String.Format (ServiceLocator.Instance.GetService <ITranslations> ().GetString ("Created by gbrainy {0}"), Defines.VERSION)); cr.Stroke (); cr.Restore (); } x += width + margin; if (x > width + margin) { x = 0; y += height + margin + question_height; } cr.Restore (); cr.Stroke (); if (page >= columns * rows) { cr.ShowPage (); page = x = y = 0; } } if (y > 0) cr.ShowPage (); }
void GenerateAnswers(CairoContextEx cr, Game [] games, int columns, int rows) { int x, y, page; string str; int column, row; const int space_lines = 80; x = y = page = 0; column = row = 0; // Draw solution title cr.SetPangoFontSize(20); cr.DrawStringWithWrapping(x + margin, y + margin, Translations.GetString("Solutions"), width - margin); y += space_lines; cr.Stroke(); cr.SetPangoFontSize(12); cr.UseMarkup = true; for (int i = 0; i < games.Length; i++) { str = String.Format(Translations.GetString("Game #{0}. {1}"), i + 1, games[i].AnswerText); // Draw Solution cr.DrawStringWithWrapping(x + margin, y + margin, str, width - margin); cr.Stroke(); y += space_lines; // Next lateral page (right) if (y + space_lines >= page_height * (row + 1) && x + page_width < page_width * columns) { column++; x = column * page_width; y = row * page_height; page++; } else { // No more space (right), new row if (y + space_lines >= page_height * (row + 1) && x + page_width >= page_width * columns) { row++; column = 0; x = column * page_width; y = row * page_height; page++; } } if (page >= rows * columns) { cr.ShowPage(); page = x = y = 0; column = row = 0; } } if (y > 0) { cr.ShowPage(); } }