apply portrait/landscape/quadrat format to playing gif to always display it in best possible way

Этот коммит содержится в:
Florian Orben
2015-10-20 20:42:02 +02:00
родитель 62a32f7187
Коммит b00697a500
2 изменённых файлов: 23 добавлений и 4 удалений

Просмотреть файл

@@ -15,7 +15,7 @@ export default class FileAttachment extends React.Component {
this.addBackgroundImage = this.addBackgroundImage.bind(this);
this.canSetState = false;
this.state = {fileSize: -1, mime: '', playing: false, loading: false};
this.state = {fileSize: -1, mime: '', playing: false, loading: false, format: ''};
}
componentDidMount() {
this.loadFiles();
@@ -93,7 +93,21 @@ export default class FileAttachment extends React.Component {
this.setState({loading: true});
img.load(fileUrl);
img.onload = () => {
this.setState({playing: true, loading: false});
var state = {playing: true, loading: false};
switch (true) {
case img.width > img.height:
state.format = 'landscape';
break;
case img.height > img.width:
state.format = 'portrait';
break;
default:
state.format = 'quadrat';
break;
}
this.setState(state);
// keep displaying background image for a short moment while browser is
// loading gif, to prevent white background flashing through
@@ -164,7 +178,7 @@ export default class FileAttachment extends React.Component {
if (this.state.playing) {
loadedFile = (
<img
className='file__loaded'
className={'file__loaded ' + this.state.format}
src={fileUrl}
/>
);

Просмотреть файл

@@ -150,8 +150,13 @@
margin-top: -16px;
}
.file__loaded {
height: 100px;
max-width: initial;
&.landscape, &.quadrat {
height: 100px;
}
&.portrait {
width: 120px;
}
}
&:hover .file-playback-controls.stop {
@include opacity(1);