mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-11-03 21:00:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			309 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			309 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
<html>
 | 
						|
 | 
						|
<style>
 | 
						|
 | 
						|
.image {
 | 
						|
	position: relative;
 | 
						|
	display: inline-block;
 | 
						|
	vertical-align: middle;
 | 
						|
	text-align:left;
 | 
						|
	width: 300px;
 | 
						|
	height: 300px;
 | 
						|
	font-size: 12pt;
 | 
						|
	overflow: hidden;
 | 
						|
 | 
						|
	box-sizing: border-box;
 | 
						|
	color: white;
 | 
						|
 | 
						|
	text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
 | 
						|
 | 
						|
	background: no-repeat 50% black;
 | 
						|
	background-size: contain;
 | 
						|
	/* XXX do we need this? */
 | 
						|
	border: solid black 5px;
 | 
						|
 | 
						|
	-webkit-filter: invert(1);
 | 
						|
}
 | 
						|
.current.image {
 | 
						|
	background: no-repeat 50% black;
 | 
						|
	background-size: contain;
 | 
						|
 | 
						|
	/* XXX remove this... */
 | 
						|
	border: solid red 5px;
 | 
						|
}
 | 
						|
 | 
						|
.ribbon {
 | 
						|
	position: relative;
 | 
						|
	display: block;
 | 
						|
	height: auto;
 | 
						|
	min-width: 0px;
 | 
						|
	overflow: visible;
 | 
						|
	white-space: nowrap;
 | 
						|
	font-size: 0;
 | 
						|
 | 
						|
	margin-top: 20px;
 | 
						|
	margin-bottom: 20px;
 | 
						|
}
 | 
						|
.ribbon:empty {
 | 
						|
	display: none;
 | 
						|
}
 | 
						|
.ribbon:first-child {
 | 
						|
	margin-top: 0px;
 | 
						|
}
 | 
						|
.ribbon:last-child {
 | 
						|
	margin-bottom: 0px;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/*********************************************************************/
 | 
						|
 | 
						|
 | 
						|
.image2:before,
 | 
						|
.image2 {
 | 
						|
	position: relative;
 | 
						|
	display: inline-block;
 | 
						|
	vertical-align: middle;
 | 
						|
	text-align:left;
 | 
						|
	font-size: 12pt;
 | 
						|
	overflow: visible;
 | 
						|
 | 
						|
	color: white;
 | 
						|
}
 | 
						|
.image2 {
 | 
						|
	width: 290px;
 | 
						|
	height: 290px;
 | 
						|
	background: no-repeat 50% transparent;
 | 
						|
	background-size: contain;
 | 
						|
	margin: 5px;
 | 
						|
 | 
						|
	-webkit-filter: invert(1);
 | 
						|
}
 | 
						|
 | 
						|
.ribbon {
 | 
						|
	display: inline-block;
 | 
						|
	background: black;
 | 
						|
}
 | 
						|
 | 
						|
.current.image2:before {
 | 
						|
	position: relative;
 | 
						|
	content: "";
 | 
						|
	top: -5px;
 | 
						|
	left: -5px;
 | 
						|
	width: 100%;
 | 
						|
	height: 100%;
 | 
						|
 | 
						|
	/* XXX this is affected by the filter... */
 | 
						|
	border: solid 5px red;
 | 
						|
}
 | 
						|
 | 
						|
/*********************************************************************/
 | 
						|
 | 
						|
.image3 div,
 | 
						|
.image3 {
 | 
						|
	position: relative;
 | 
						|
	display: inline-block;
 | 
						|
	vertical-align: middle;
 | 
						|
	text-align:left;
 | 
						|
	width: 300px;
 | 
						|
	height: 300px;
 | 
						|
	font-size: 12pt;
 | 
						|
	overflow: hidden;
 | 
						|
 | 
						|
	box-sizing: border-box;
 | 
						|
	color: white;
 | 
						|
	background: black;
 | 
						|
 | 
						|
	text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
 | 
						|
 | 
						|
	border: solid black 5px;
 | 
						|
}
 | 
						|
.image3 div {
 | 
						|
	position: absolute;
 | 
						|
 | 
						|
	width: 100%;
 | 
						|
	height: 100%;
 | 
						|
 | 
						|
	background: no-repeat 50% transparent;
 | 
						|
	background-size: contain;
 | 
						|
	border: none;
 | 
						|
 | 
						|
	-webkit-filter: invert(1);
 | 
						|
}
 | 
						|
.current.image3 {
 | 
						|
	background: no-repeat 50% black;
 | 
						|
	background-size: contain;
 | 
						|
 | 
						|
	/* XXX remove this... */
 | 
						|
	border: solid red 5px;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/*********************************************************************/
 | 
						|
 | 
						|
.mark {
 | 
						|
	display: inline-block;
 | 
						|
	position: relative;
 | 
						|
	width: 300px;
 | 
						|
	height: 300px;
 | 
						|
	margin-left: -300px;
 | 
						|
	left: 0px;
 | 
						|
	box-sizing: border-box;	
 | 
						|
	vertical-align: middle;
 | 
						|
}
 | 
						|
 | 
						|
/* this is a placeholder -- I'm to lazy to make a real floating element 
 | 
						|
 * to indicate selection... */
 | 
						|
.current+.mark {
 | 
						|
	border: solid red 5px;
 | 
						|
}
 | 
						|
 | 
						|
.mark.select {
 | 
						|
	border: dotted blue 5px;
 | 
						|
}
 | 
						|
 | 
						|
.mark.tagged,
 | 
						|
.mark.blue,
 | 
						|
.mark.red,
 | 
						|
.mark.yellow {
 | 
						|
	width: 0px;
 | 
						|
	margin-left: 0px;
 | 
						|
	border: none;
 | 
						|
	box-sizing: border-box;
 | 
						|
}
 | 
						|
.mark.tagged:after,
 | 
						|
.mark.blue:after,
 | 
						|
.mark.red:after,
 | 
						|
.mark.yellow:after {
 | 
						|
	display: block;
 | 
						|
	position: absolute;
 | 
						|
	content: "";
 | 
						|
	font-size: 0pt;
 | 
						|
	border: none;
 | 
						|
 | 
						|
	width: 15px;
 | 
						|
	height: 15px;
 | 
						|
 | 
						|
	top: auto;
 | 
						|
	bottom: 10px;
 | 
						|
	left: auto;
 | 
						|
	right: 10px;
 | 
						|
 | 
						|
	/*box-shadow: 2px 2px 8px 0px rgba(0,0,0,0.7);*/
 | 
						|
	box-shadow: 2px 2px 20px -2px rgba(0,0,0,0.7);
 | 
						|
 | 
						|
	box-sizing: border-box;
 | 
						|
	border-radius: 50%;
 | 
						|
}
 | 
						|
 | 
						|
.mark.tagged:after {
 | 
						|
	box-shadow: none;
 | 
						|
	text-shadow: black 0.1em 0.1em 0.4em, black 0.1em 0.1em;
 | 
						|
	font-size: 10pt;
 | 
						|
	vertical-align: middle;
 | 
						|
	text-align: center;
 | 
						|
	content: "T";
 | 
						|
	color: white;
 | 
						|
	background: none;
 | 
						|
}
 | 
						|
.mark.blue:after {
 | 
						|
	left: -25px;
 | 
						|
	border: solid 3px blue;
 | 
						|
}
 | 
						|
.mark.red:after {
 | 
						|
	left: -44px;
 | 
						|
	background: red;
 | 
						|
	border-radius: 50%;
 | 
						|
}
 | 
						|
.mark.yellow:after {
 | 
						|
	left: -67px;
 | 
						|
	background: yellow;
 | 
						|
}
 | 
						|
 | 
						|
.ccw270,
 | 
						|
.cw90 {
 | 
						|
	-webkit-transform: rotate(90deg);
 | 
						|
}
 | 
						|
.ccw180,
 | 
						|
.cw180 {
 | 
						|
	-webkit-transform: rotate(180deg);
 | 
						|
}
 | 
						|
.ccw90,
 | 
						|
.cw270 {
 | 
						|
	-webkit-transform: rotate(270deg);
 | 
						|
}
 | 
						|
.ccw0,
 | 
						|
.cw0 {
 | 
						|
	-webkit-transform: rotate(0deg);
 | 
						|
}
 | 
						|
 | 
						|
</style>
 | 
						|
<script src="jquery.js"></script>
 | 
						|
 | 
						|
<body>
 | 
						|
	<details>
 | 
						|
	<summary>
 | 
						|
		The current structure... (not current anymore)
 | 
						|
	</summary>
 | 
						|
	<div>
 | 
						|
		<div class="image" style="background-image: url(image.jpg)"></div>
 | 
						|
		<div class="current image" style="background-image: url(image.jpg)"></div>
 | 
						|
	</div>
 | 
						|
 | 
						|
	</details>
 | 
						|
 | 
						|
	<details>
 | 
						|
	<summary>
 | 
						|
		Image bg transparent while the ribbon's bg is black...
 | 
						|
	</summary>
 | 
						|
	<div class="ribbon">
 | 
						|
		<div class="image2" style="background-image: url(image.jpg)"></div>
 | 
						|
		<div class="current image2" style="background-image: url(image.jpg)"></div>
 | 
						|
	</div>
 | 
						|
	</details>
 | 
						|
 | 
						|
	<details>
 | 
						|
	<summary>
 | 
						|
		Add a seporate bg tag (rejected)
 | 
						|
	</summary>
 | 
						|
	- this effectively doubles the number of tags used for a ribbon...<br>
 | 
						|
	+ the only API that needs changing is what deals with previews and filters<br>
 | 
						|
	+ will simplify different image indicator CSS<br>
 | 
						|
	<s>+ will remove LOTS of code dealing with scaling, sizing and rotation...</s> this will not change!<br>
 | 
						|
	<div class="ribbon">
 | 
						|
		<div class="image3"><div style="background-image: url(image.jpg)"></div></div>
 | 
						|
		<div class="current image3"><div style="background-image: url(image.jpg)"></div></div>
 | 
						|
	</div>
 | 
						|
	<br>
 | 
						|
	<!-- XXX this shows that we will still need margin-patching and resizing when rotating...
 | 
						|
	<div class="image3" style="width: 400px;"><div style="background-image: url(image.jpg)"></div></div><br>
 | 
						|
	<div class="image3" style="width: 400px;"><div style="background-image: url(image.jpg); -webkit-transform: rotate(90deg)"></div></div-->
 | 
						|
 | 
						|
	</details>
 | 
						|
 | 
						|
	<details open>
 | 
						|
	<summary>
 | 
						|
		Keep the images on one level and marks outside, after the image...
 | 
						|
	</summary>
 | 
						|
	+ one tag per UI element and only if that element is present (no dot, no tag), or if we make things a bit more comlicated, up to 3 per tag (self, before and after)<br>
 | 
						|
	+ generic and extensible<br>
 | 
						|
	- a little bit more complicated mark manipulation during image shifting
 | 
						|
	  – potential orphaned or misplaces marks...<br>
 | 
						|
	<div class="ribbon">
 | 
						|
		<div id="0" class="image2" style="background-image: url(image.jpg)"></div>
 | 
						|
		<div class="mark red"></div>
 | 
						|
 | 
						|
		<div id="1" class="current image2 cw180" style="background-image: url(image.jpg)"></div>
 | 
						|
		<div class="mark"></div>
 | 
						|
		<div class="mark blue" title="blue"></div>
 | 
						|
		<div class="mark red" title="red"></div>
 | 
						|
		<div class="mark yellow" title="yellow"></div>
 | 
						|
 | 
						|
		<div id="2" class="image2" style="background-image: url(image.jpg)"></div>
 | 
						|
		<div class="mark select"></div>
 | 
						|
		<div class="mark tagged" title="tagged"></div>
 | 
						|
	</div>
 | 
						|
	</details>
 | 
						|
 | 
						|
</body>
 | 
						|
</html>
 |