Move media type icon preview creation to its own method

This commit is contained in:
Olivier Paroz 2015-06-18 13:24:15 +02:00
parent 13617a0475
commit 8193e1d7c1
2 changed files with 46 additions and 4 deletions

View File

@ -703,10 +703,7 @@ class Preview {
// We still don't have a preview, so we send back the mime icon
if (is_null($this->preview)) {
$this->preview = new \OC_Image();
$mimeIconWebPath = \OC_Helper::mimetypeIcon($this->mimeType);
$mimeIconServerPath = str_replace(\OC::$WEBROOT, \OC::$SERVERROOT, $mimeIconWebPath);
$this->preview->loadFromFile($mimeIconServerPath);
$this->getMimeIcon();
}
return $this->preview;
@ -1094,6 +1091,30 @@ class Preview {
}
}
/**
* Creates a mime icon preview of the asked dimensions
*
* This will paste the mime icon in the middle of an empty preview of the asked dimension
*/
private function getMimeIcon() {
$image = new \OC_Image();
$mimeIconWebPath = \OC_Helper::mimetypeIcon($this->mimeType);
if (empty(\OC::$WEBROOT)) {
$mimeIconServerPath = \OC::$SERVERROOT . $mimeIconWebPath;
} else {
$mimeIconServerPath = str_replace(\OC::$WEBROOT, \OC::$SERVERROOT, $mimeIconWebPath);
}
$image->loadFromFile($mimeIconServerPath);
$previewWidth = (int)$image->width();
$previewHeight = (int)$image->height();
$askedWidth = $this->getMaxX();
$askedHeight = $this->getMaxY();
$this->cropAndFill(
$image, $askedWidth, $askedHeight, $previewWidth, $previewHeight
);
}
/**
* Stores the max preview in the cache
*

View File

@ -209,6 +209,27 @@ class Preview extends TestCase {
);
}
/**
* Tests if the media type icon fits into the asked dimensions
*/
public function testIsMimePreviewTheRightSize() {
$width = 400;
$height = 200;
// Previews for odt files are not enabled
$imgData = file_get_contents(\OC::$SERVERROOT . '/tests/data/testimage.odt');
$imgPath = '/' . self::TEST_PREVIEW_USER1 . '/files/testimage.odt';
$this->rootView->file_put_contents($imgPath, $imgData);
$preview =
new \OC\Preview(self::TEST_PREVIEW_USER1, 'files/', 'testimage.odt', $width, $height);
$preview->getPreview();
$image = $preview->getPreview();
$this->assertSame($width, $image->width());
$this->assertSame($height, $image->height());
}
/**
* We generate the data to use as it makes it easier to adjust in case we need to test
* something different