//
//  IconImageView.swift
//  NetNewsWire
//
//  Created by Maurice Parker on 6/29/20.
//  Copyright © 2020 Ranchero Software. All rights reserved.
//

import SwiftUI

struct IconImageView: View {
	
	@Environment(\.colorScheme) var colorScheme
	var iconImage: IconImage
	
    var body: some View {
		GeometryReader { proxy in
			
			let newSize = newImageSize(viewSize: proxy.size)
			let tooShort = newSize.height < proxy.size.height
			let indistinguishable = colorScheme == .dark ? iconImage.isDark : iconImage.isBright
			let showBackground = (tooShort && !iconImage.isSymbol) || indistinguishable
			
			Group {
				Image(rsImage: iconImage.image)
					.resizable()
					.scaledToFit()
					.frame(width: newSize.width, height: newSize.height, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
			}
			.frame(width: proxy.size.width, height: proxy.size.height, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
			.background(showBackground ? AppAssets.iconBackgroundColor : nil)
			.cornerRadius(4)
			
		}
    }
	
	func newImageSize(viewSize: CGSize) -> CGSize {
		let imageSize = iconImage.image.size
		let newSize: CGSize
		
		if imageSize.height == imageSize.width {
			if imageSize.height >= viewSize.height {
				newSize = CGSize(width: viewSize.width, height: viewSize.height)
			} else {
				newSize = CGSize(width: imageSize.width, height: imageSize.height)
			}
		} else if imageSize.height > imageSize.width {
			let factor = viewSize.height / imageSize.height
			let width = imageSize.width * factor
			newSize = CGSize(width: width, height: viewSize.height)
		} else {
			let factor = viewSize.width / imageSize.width
			let height = imageSize.height * factor
			newSize = CGSize(width: viewSize.width, height: height)
		}
		
		return newSize
	}
	
}