summaryrefslogtreecommitdiffstats
path: root/modules/git
diff options
context:
space:
mode:
authorMario Lubenka <mario.lubenka@googlemail.com>2019-09-16 11:03:22 +0200
committerLunny Xiao <xiaolunwen@gmail.com>2019-09-16 17:03:22 +0800
commita37236314c88ea7990d4d7b1beeef74dd0aa112b (patch)
tree185fdc69c8a170a94510982a3310efa50b1857e7 /modules/git
parenta5f87feefd0622115611873da276d4725b6379bb (diff)
downloadgitea-a37236314c88ea7990d4d7b1beeef74dd0aa112b.tar.gz
gitea-a37236314c88ea7990d4d7b1beeef74dd0aa112b.zip
Adds side-by-side diff for images (#6784)
* Adds side-by-side diff for images Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Explain blank imports Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Use complete word for width and height labels on image compare Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Update index.css from master Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Moves ImageInfo to git commit file Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Assign ImageInfo function for template and sets correct target for BeforeSourcePath Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Adds missing comment Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Return error if ImageInfo failed Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Avoid template panic when ImageInfo failed for some reason Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Show file size on image diff Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Removes unused helper function Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Reverts copyright year change Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Close file reader Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Update commit.go Sets correct data key * Moves reader.Close() up a few lines * Updates index.css * Updates CSS file Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Transfers adjustments for image compare to compare.go file Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Adjusts variable name Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Apply lesshint recommendations Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Do not show old image on image compare if it is not in index of base commit Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com> * Change file size text Signed-off-by: Mario Lubenka <mario.lubenka@googlemail.com>
Diffstat (limited to 'modules/git')
-rw-r--r--modules/git/commit.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/modules/git/commit.go b/modules/git/commit.go
index 2f7f53e7ce..83e03c2795 100644
--- a/modules/git/commit.go
+++ b/modules/git/commit.go
@@ -10,6 +10,11 @@ import (
"bytes"
"container/list"
"fmt"
+ "image"
+ "image/color"
+ _ "image/gif" // for processing gif images
+ _ "image/jpeg" // for processing jpeg images
+ _ "image/png" // for processing png images
"io"
"net/http"
"strconv"
@@ -158,6 +163,43 @@ func (c *Commit) IsImageFile(name string) bool {
return isImage
}
+// ImageMetaData represents metadata of an image file
+type ImageMetaData struct {
+ ColorModel color.Model
+ Width int
+ Height int
+ ByteSize int64
+}
+
+// ImageInfo returns information about the dimensions of an image
+func (c *Commit) ImageInfo(name string) (*ImageMetaData, error) {
+ if !c.IsImageFile(name) {
+ return nil, nil
+ }
+
+ blob, err := c.GetBlobByPath(name)
+ if err != nil {
+ return nil, err
+ }
+ reader, err := blob.DataAsync()
+ if err != nil {
+ return nil, err
+ }
+ defer reader.Close()
+ config, _, err := image.DecodeConfig(reader)
+ if err != nil {
+ return nil, err
+ }
+
+ metadata := ImageMetaData{
+ ColorModel: config.ColorModel,
+ Width: config.Width,
+ Height: config.Height,
+ ByteSize: blob.Size(),
+ }
+ return &metadata, nil
+}
+
// GetCommitByPath return the commit of relative path object.
func (c *Commit) GetCommitByPath(relpath string) (*Commit, error) {
return c.repo.getCommitByPathWithID(c.ID, relpath)
@@ -310,6 +352,13 @@ func (c *Commit) FileChangedSinceCommit(filename, pastCommit string) (bool, erro
return c.repo.FileChangedBetweenCommits(filename, pastCommit, c.ID.String())
}
+// HasFile returns true if the file given exists on this commit
+// This does only mean it's there - it does not mean the file was changed during the commit.
+func (c *Commit) HasFile(filename string) (bool, error) {
+ result, err := c.repo.LsFiles(filename)
+ return result[0] == filename, err
+}
+
// GetSubModules get all the sub modules of current revision git tree
func (c *Commit) GetSubModules() (*ObjectCache, error) {
if c.submoduleCache != nil {