Пример #1
0
 /**
  * @return bool
  */
 function will_watermark($out_size)
 {
     if ($this->use_watermark) {
         $min_size = ImageStdParams::get_watermark()->min_size;
         return $min_size[0] <= $out_size[0] || $min_size[1] <= $out_size[1];
     }
     return false;
 }
Пример #2
0
 foreach (glob(PHPWG_ROOT_PATH . 'themes/default/watermarks/*.png') as $file) {
     $watermark_files[] = substr($file, strlen(PHPWG_ROOT_PATH));
 }
 if (($glob = glob(PHPWG_ROOT_PATH . PWG_LOCAL_DIR . 'watermarks/*.png')) !== false) {
     foreach ($glob as $file) {
         $watermark_files[] = substr($file, strlen(PHPWG_ROOT_PATH));
     }
 }
 $watermark_filemap = array('' => '---');
 foreach ($watermark_files as $file) {
     $display = basename($file);
     $watermark_filemap[$file] = $display;
 }
 $template->assign('watermark_files', $watermark_filemap);
 if ($template->get_template_vars('watermark') === null) {
     $wm = ImageStdParams::get_watermark();
     $position = 'custom';
     if ($wm->xpos == 0 and $wm->ypos == 0) {
         $position = 'topleft';
     }
     if ($wm->xpos == 100 and $wm->ypos == 0) {
         $position = 'topright';
     }
     if ($wm->xpos == 50 and $wm->ypos == 50) {
         $position = 'middle';
     }
     if ($wm->xpos == 0 and $wm->ypos == 100) {
         $position = 'bottomleft';
     }
     if ($wm->xpos == 100 and $wm->ypos == 100) {
         $position = 'bottomright';
}
$v = intval($pwatermark['opacity']);
if ($v <= 0 or $v > 100) {
    $errors['watermark']['opacity'] = '(0..100]';
}
// step 3 - save data
if (count($errors) == 0) {
    $watermark = new WatermarkParams();
    $watermark->file = $pwatermark['file'];
    $watermark->xpos = intval($pwatermark['xpos']);
    $watermark->ypos = intval($pwatermark['ypos']);
    $watermark->xrepeat = intval($pwatermark['xrepeat']);
    $watermark->yrepeat = intval($pwatermark['yrepeat']);
    $watermark->opacity = intval($pwatermark['opacity']);
    $watermark->min_size = array(intval($pwatermark['minw']), intval($pwatermark['minh']));
    $old_watermark = ImageStdParams::get_watermark();
    $watermark_changed = $watermark->file != $old_watermark->file || $watermark->xpos != $old_watermark->xpos || $watermark->ypos != $old_watermark->ypos || $watermark->xrepeat != $old_watermark->xrepeat || $watermark->yrepeat != $old_watermark->yrepeat || $watermark->opacity != $old_watermark->opacity;
    // save the new watermark configuration
    ImageStdParams::set_watermark($watermark);
    // do we have to regenerate the derivatives (and which types)?
    $changed_types = array();
    foreach (ImageStdParams::get_defined_type_map() as $type => $params) {
        $old_use_watermark = $params->use_watermark;
        ImageStdParams::apply_global($params);
        $changed = $params->use_watermark != $old_use_watermark;
        if (!$changed and $params->use_watermark) {
            $changed = $watermark_changed;
        }
        if (!$changed and $params->use_watermark) {
            // if thresholds change and before/after the threshold is lower than the corresponding derivative side -> some derivatives might switch the watermark
            $changed |= $watermark->min_size[0] != $old_watermark->min_size[0] and ($watermark->min_size[0] < $params->max_width() or $old_watermark->min_size[0] < $params->max_width());