From fc808a6c2824ed0835d13e48de2d58e1d4a66b7c Mon Sep 17 00:00:00 2001 From: luxick Date: Fri, 12 Jun 2020 17:46:24 +0200 Subject: [PATCH] Blank image when no mode is selected. --- src/providers.nim | 14 ++++++++++---- src/randopix.nim | 4 ++-- src/resources/blank.png | Bin 0 -> 10208 bytes 3 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 src/resources/blank.png diff --git a/src/providers.nim b/src/providers.nim index d79d3d3..8acc387 100644 --- a/src/providers.nim +++ b/src/providers.nim @@ -5,6 +5,7 @@ import common const supportedExts = @[".png", ".jpg", ".jpeg"] + placeholderImg = slurp("resources/blank.png") foxesUrl = "https://randomfox.ca/floof/" inspiroUrl = "http://inspirobot.me/api?generate=true" @@ -75,6 +76,13 @@ func calcImageSize(maxWidth, maxHeight, imgWidth, imgHeight: int): tuple[width: # Image Provider procs ######################## +proc getPlaceHolder(ip: ImageProvider): FileOpResult = + ## Provide the placeholder image. + ## This is used when no mode is active + let f = fmt"{tmpFile}.blank" + writeFile(f, placeholderImg) + return newFileOpResult(f) + proc getFox(ip: ImageProvider): FileOpResult = ## Download image from the fox API try: @@ -131,14 +139,14 @@ proc getLocalFile(ip: var ImageProvider): FileOpResult = proc getFileName(ip: var ImageProvider): FileOpResult = ## Get the temporary file name of the next file to display case ip.mode + of Mode.None: + return ip.getPlaceHolder() of Mode.File: return ip.getLocalFile() of Mode.Foxes: return ip.getFox() of Mode.Inspiro: return ip.getInspiro() - else: - return newFileOpResultError("Not implemented") ######################## # Exported procs @@ -147,8 +155,6 @@ proc getFileName(ip: var ImageProvider): FileOpResult = proc next*(ip: var ImageProvider, maxWidth, maxHeight: int): FileOpResult = ## Uses the image provider to get a new image ready to display. ## `width` and `height` should be the size of the window. - if ip.mode == Mode.None: - return newFileOpResultError("No mode active") let op = ip.getFileName() if not op.success: return op diff --git a/src/randopix.nim b/src/randopix.nim index d671de3..e875bf0 100644 --- a/src/randopix.nim +++ b/src/randopix.nim @@ -98,7 +98,6 @@ proc updateImage(image: Image): bool = if imageProvider.mode == Mode.None: log "No display mode" label.notify "No mode selected" - return true var wWidth, wHeight: int window.getSize(wWidth, wHeight) @@ -110,7 +109,8 @@ proc updateImage(image: Image): bool = return image.setFromFile(op.file) - label.notify + if imageProvider.mode != Mode.None: + label.notify except: let e = getCurrentException() diff --git a/src/resources/blank.png b/src/resources/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..400ade8dbe16d5ba49a7384be3ca7eb10b051980 GIT binary patch literal 10208 zcmeHtc{r5q`}aMInZjUNkTp|Cc4I4RA*n=m*`~$VnUaVwlP674dQ>!oX_F;elAXJv zdNP(`vNP#PCCf;Reco$&|9Ss-fA4X;$MOB|_d9U7kNZCF>)b!rd7k%m)$yn;PFO}5 zf*_pTL2D-nLV`;qv;hPD{f_Bb2LCW858GNpe8CU1@yRW4XCvjHXCwrPwFv$YchtpX z!A3;aFr+&vk}@t z+qbbX*?KQh*mwth!v--udV#(T`c7Az1e(0<*xp^2gm)cuw2U>9*zniR&ebzw#Dd$m zd6RLSjia5%XU4?cI-0)Kt_-c2ghkxkX_x*#zyGHN29z}RnVcT?hTl@RQpJ&0w55{N zM`Cf97|9y(MIy!7+SK1u6w0dDmxw2+l4MD)q?@jP_aJ#l3slEddcEcqgr&0uw+wet zsBcS5+Sb2&PDVqcXsr~wTE=ULS*@^`i9L!o_cz!%&vB)pcAQLotOI@LW7l88f5Vwn zB{yp)@p|b#BSLQF77R5(aa9VX1+BLSADq~n2ASBjv}e46y2_IHSuW!5MXO}ems!@N zUb^w9)462vyHVlXQHh#QFa4bIWRUlA7%QH_Wzg?#PP3#A=I$_9Bhs1bLl~1gd;
wb6>PmJq-%pTg>30Lwvc76k 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 KUAmui>3;#CjXW#> literal 0 HcmV?d00001