diff options
author | Mario Lubenka <mario.lubenka@googlemail.com> | 2019-09-16 11:03:22 +0200 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2019-09-16 17:03:22 +0800 |
commit | a37236314c88ea7990d4d7b1beeef74dd0aa112b (patch) | |
tree | 185fdc69c8a170a94510982a3310efa50b1857e7 /modules/git | |
parent | a5f87feefd0622115611873da276d4725b6379bb (diff) | |
download | gitea-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.go | 49 |
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 { |