コード例 #1
0
ファイル: ReportHtmlText.php プロジェクト: tronsmit/webtrees
 /**
  * Render the elements.
  *
  * @param ReportHtml $renderer
  * @param int        $curx
  * @param bool       $attrib Is is called from a different element?
  */
 public function render($renderer, $curx = 0, $attrib = true)
 {
     // Setup the style name
     if ($renderer->getCurrentStyle() != $this->styleName) {
         $renderer->setCurrentStyle($this->styleName);
     }
     $temptext = str_replace("#PAGENUM#", $renderer->pageNo(), $this->text);
     // underline «title» part of Source item
     $temptext = str_replace(array('«', '»'), array('<u>', '</u>'), $temptext);
     // If any text at all
     if (!empty($temptext)) {
         // If called by an other element
         if (!$attrib) {
             $renderer->write($temptext, $this->color);
         } else {
             // Save the start positions
             $startX = $renderer->getX();
             $startY = $renderer->getY();
             $width = $renderer->getRemainingWidth();
             // If text is wider then page width then wrap it
             if ($renderer->getStringWidth($temptext) > $width) {
                 $lines = explode("\n", $temptext);
                 foreach ($lines as $line) {
                     echo "<div style=\"position:absolute;top:", $startY, "pt;", $renderer->alignRTL, ":", $startX, "pt;width:", $width, "pt;\">";
                     $line = $renderer->textWrap($line, $width);
                     $startY += $renderer->getTextCellHeight($line);
                     $renderer->setY($startY);
                     $renderer->write($line, $this->color);
                     echo "</div>\n";
                 }
             } else {
                 echo "<div style=\"position:absolute;top:", $startY, "pt;", $renderer->alignRTL, ":", $startX, "pt;width:", $width, "pt;\">";
                 $renderer->write($temptext, $this->color);
                 echo "</div>\n";
                 $renderer->setX($startX + $renderer->getStringWidth($temptext));
                 if ($renderer->countLines($temptext) != 1) {
                     $renderer->setXy(0, $startY + $renderer->getTextCellHeight($temptext));
                 }
             }
         }
     }
 }
コード例 #2
0
 /**
  * Write the Footnote text
  * Uses style name "footnote" by default
  *
  * @param ReportHtml $html
  */
 public function renderFootnote($html)
 {
     if ($html->getCurrentStyle() != $this->styleName) {
         $html->setCurrentStyle($this->styleName);
     }
     $temptext = str_replace("#PAGENUM#", $html->pageNo(), $this->text);
     // underline «title» part of Source item
     $temptext = str_replace(array('«', '»'), array('<u>', '</u>'), $temptext);
     echo "\n<div><a name=\"footnote", $this->num, "\"></a>";
     $html->write($this->num . ". " . $temptext);
     echo "</div>";
     $html->setXy(0, $html->getY() + $this->getFootnoteHeight($html));
 }
コード例 #3
0
ファイル: ReportHtmlCell.php プロジェクト: tronsmit/webtrees
 /**
  * HTML Cell renderer
  *
  * @param ReportHtml $renderer
  */
 public function render($renderer)
 {
     if (strpos($this->text, "{{:ptp:}}") !== false) {
         return;
     }
     $temptext = str_replace("#PAGENUM#", $renderer->pageNo(), $this->text);
     // underline «title» part of Source item
     $temptext = str_replace(array('«', '»'), array('<u>', '</u>'), $temptext);
     // Setup the style name
     if ($renderer->getCurrentStyle() != $this->styleName) {
         $renderer->setCurrentStyle($this->styleName);
     }
     // If (Future-feature-enable/disable cell padding)
     $cP = $renderer->cPadding;
     // Adjust the positions
     if ($this->left == ".") {
         $this->left = $renderer->getX();
     } else {
         $renderer->setX($this->left);
     }
     if ($this->top == ".") {
         $this->top = $renderer->getY();
     } else {
         $renderer->setY($this->top);
     }
     // Start collecting the HTML code
     echo "<div class=\"", $this->styleName, "\" style=\"position:absolute;top:", $this->top, "pt;";
     // Use Cell around padding to support RTL also
     echo "padding:", $cP, "pt;";
     // LTR (left) or RTL (right)
     echo $renderer->alignRTL, ":", $this->left, "pt;";
     // Background color
     if (!empty($this->bgcolor)) {
         echo "background-color:", $this->bgcolor, ";";
     }
     // Border setup
     $bpixX = 0;
     $bpixY = 0;
     if (!empty($this->border)) {
         // Border all around
         if ($this->border == 1) {
             echo " border:solid ";
             if (!empty($this->bocolor)) {
                 echo $this->bocolor;
             } else {
                 echo "black";
             }
             echo " 1pt;";
             $bpixX = 1;
             $bpixY = 1;
         } else {
             if (stripos($this->border, "T") !== false) {
                 echo " border-top:solid ";
                 if (!empty($this->bocolor)) {
                     echo $this->bocolor;
                 } else {
                     echo "black";
                 }
                 echo " 1pt;";
                 $bpixY = 1;
             }
             if (stripos($this->border, "B") !== false) {
                 echo " border-bottom:solid ";
                 if (!empty($this->bocolor)) {
                     echo $this->bocolor;
                 } else {
                     echo "black";
                 }
                 echo " 1pt;";
                 $bpixY = 1;
             }
             if (stripos($this->border, "R") !== false) {
                 echo " border-right:solid ";
                 if (!empty($this->bocolor)) {
                     echo $this->bocolor;
                 } else {
                     echo "black";
                 }
                 echo " 1pt;";
                 $bpixX = 1;
             }
             if (stripos($this->border, "L") !== false) {
                 echo " border-left:solid ";
                 if (!empty($this->bocolor)) {
                     echo $this->bocolor;
                 } else {
                     echo "black";
                 }
                 echo " 1pt;";
                 $bpixX = 1;
             }
         }
     }
     // Check the width if set to page wide OR set by xml to larger then page wide
     if ($this->width == 0 || $this->width > $renderer->getRemainingWidth()) {
         $this->width = $renderer->getRemainingWidth();
     }
     // We have to calculate a different width for the padding, counting on both side
     $cW = $this->width - $cP * 2;
     // If there is any text
     if (!empty($temptext)) {
         // Wrap the text
         $temptext = $renderer->textWrap($temptext, $cW);
         $tmph = $renderer->getTextCellHeight($temptext);
         // Add some cell padding
         $this->height += $cP;
         if ($tmph > $this->height) {
             $this->height = $tmph;
         }
     }
     // Check the last cell height and ajust with the current cell height
     if ($renderer->lastCellHeight > $this->height) {
         $this->height = $renderer->lastCellHeight;
     }
     echo " width:", $cW - $bpixX, "pt;height:", $this->height - $bpixY, "pt;";
     // Text alignment
     switch ($this->align) {
         case "C":
             echo " text-align:center;";
             break;
         case "L":
             echo " text-align:left;";
             break;
         case "R":
             echo " text-align:right;";
             break;
     }
     // Print the collected HTML code
     echo "\">";
     // Print URL
     if (!empty($this->url)) {
         echo "<a href=\"", $this->url, "\">";
     }
     // Print any text if exists
     if (!empty($temptext)) {
         $renderer->write($temptext, $this->tcolor, false);
     }
     if (!empty($this->url)) {
         echo "</a>";
     }
     // Finish the cell printing and start to clean up
     echo "</div>\n";
     // Where to place the next position
     // -> Next to this cell in the same line
     if ($this->newline == 0) {
         $renderer->setXy($this->left + $this->width, $this->top);
         $renderer->lastCellHeight = $this->height;
     } elseif ($this->newline == 1) {
         $renderer->setXy(0, $renderer->getY() + $this->height + $cP * 2);
         // Reset the last cell height for the next line
         $renderer->lastCellHeight = 0;
     } elseif ($this->newline == 2) {
         $renderer->setXy($renderer->getX() + $this->width, $renderer->getY() + $this->height + $cP * 2);
         // Reset the last cell height for the next line
         $renderer->lastCellHeight = 0;
     }
 }