<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://kiprobatt.de/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AImageMapHighlighter.js</id>
	<title>MediaWiki:ImageMapHighlighter.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://kiprobatt.de/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AImageMapHighlighter.js"/>
	<link rel="alternate" type="text/html" href="https://kiprobatt.de/w/index.php?title=MediaWiki:ImageMapHighlighter.js&amp;action=history"/>
	<updated>2026-08-26T17:10:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.7</generator>
	<entry>
		<id>https://kiprobatt.de/w/index.php?title=MediaWiki:ImageMapHighlighter.js&amp;diff=1670&amp;oldid=prev</id>
		<title>Simon Stier: update from testwiki</title>
		<link rel="alternate" type="text/html" href="https://kiprobatt.de/w/index.php?title=MediaWiki:ImageMapHighlighter.js&amp;diff=1670&amp;oldid=prev"/>
		<updated>2021-07-22T16:41:26Z</updated>

		<summary type="html">&lt;p&gt;update from testwiki&lt;/p&gt;
&lt;a href=&quot;https://kiprobatt.de/w/index.php?title=MediaWiki:ImageMapHighlighter.js&amp;amp;diff=1670&amp;amp;oldid=1448&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Simon Stier</name></author>
	</entry>
	<entry>
		<id>https://kiprobatt.de/w/index.php?title=MediaWiki:ImageMapHighlighter.js&amp;diff=1448&amp;oldid=prev</id>
		<title>Simon Stier: import from testwiki.kiprobatt.de</title>
		<link rel="alternate" type="text/html" href="https://kiprobatt.de/w/index.php?title=MediaWiki:ImageMapHighlighter.js&amp;diff=1448&amp;oldid=prev"/>
		<updated>2021-06-23T11:52:53Z</updated>

		<summary type="html">&lt;p&gt;import from testwiki.kiprobatt.de&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;$(document).ready(function() { &lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  function start(){&lt;br /&gt;
&lt;br /&gt;
  var areaOpacity = &amp;quot;0.1&amp;quot;;&lt;br /&gt;
  //In this part it receives the original Image, which has a &amp;lt;div&amp;gt;-tag with the &amp;quot;imageMapHighlighter&amp;quot; class.&lt;br /&gt;
  //When the placement parameter (center, left or right) is set, the &amp;lt;div&amp;gt;-tag number changes, so it has to go deeper to get the image.&lt;br /&gt;
  var mhs = document.getElementsByClassName(&amp;quot;imageMapHighlighter&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementsByClassName('center').length &amp;gt; 0) {&lt;br /&gt;
  var img = mhs[0].children[0].children[0].children[0].children[1];&lt;br /&gt;
  var areas = mhs[0].children[0].children[0].children[0].children[0].children;}&lt;br /&gt;
  else if(document.getElementsByClassName('floatleft').length &amp;gt; 0 || document.getElementsByClassName('floatright').length &amp;gt; 0 ){&lt;br /&gt;
  var img = mhs[0].children[0].children[0].children[1];&lt;br /&gt;
  var areas = mhs[0].children[0].children[0].children[0].children;}&lt;br /&gt;
  else{&lt;br /&gt;
  var img = mhs[0].children[0].children[1];&lt;br /&gt;
  var areas = mhs[0].children[0].children[0].children;}&lt;br /&gt;
&lt;br /&gt;
  var canv = document.createElement('canvas');	//A canvas gets created, where it will draw the areas.&lt;br /&gt;
  &lt;br /&gt;
  //The original Image gets set to very low opacity, so its still there and the user can click on the original created areas.&lt;br /&gt;
  img.setAttribute(&amp;quot;style&amp;quot;,&amp;quot;opacity:0.01; -moz-opacity:0.5; filter:alpha(opacity=50)&amp;quot;);&lt;br /&gt;
  var img2 = new Image();  &lt;br /&gt;
  img2.style = img.style;&lt;br /&gt;
  img2.width = img.width;&lt;br /&gt;
  img2.height = img.height;&lt;br /&gt;
  img2.src = img.src;&lt;br /&gt;
  if (document.getElementsByClassName('center').length &amp;gt; 0) {&lt;br /&gt;
       mhs[0].children[0].children[0].children[0].insertBefore(img2, img);}&lt;br /&gt;
  else if(document.getElementsByClassName('floatleft').length &amp;gt; 0 || document.getElementsByClassName('floatright').length &amp;gt; 0 ){&lt;br /&gt;
  mhs[0].children[0].children[0].insertBefore(img2, img)}&lt;br /&gt;
  else{mhs[0].children[0].insertBefore(img2, img);}&lt;br /&gt;
  img2.style = &amp;quot;position: absolute; opacity: 1&amp;quot;;&lt;br /&gt;
  img2.style.zIndex = &amp;quot;-20&amp;quot;;  //After a copy of the original Image is created, it gets set beneath the original image.&lt;br /&gt;
  &lt;br /&gt;
  //The canvas is given the width and height of the original image.&lt;br /&gt;
  //It is then placed between the copy and the original image.&lt;br /&gt;
  canv.id = 'mainCanvas';&lt;br /&gt;
  canv.width = img.width;&lt;br /&gt;
  canv.height = img.height;&lt;br /&gt;
  canv.style.position = &amp;quot;absolute&amp;quot;;&lt;br /&gt;
  canv.style.opacity = areaOpacity;&lt;br /&gt;
  if (document.getElementsByClassName('center').length &amp;gt; 0) {&lt;br /&gt;
       mhs[0].children[0].children[0].children[0].insertBefore(canv, img2);}&lt;br /&gt;
  else if(document.getElementsByClassName('floatleft').length &amp;gt; 0 || document.getElementsByClassName('floatright').length &amp;gt; 0 ){&lt;br /&gt;
  mhs[0].children[0].children[0].insertBefore(canv, img2);}&lt;br /&gt;
  else{mhs[0].children[0].insertBefore(canv, img2);}&lt;br /&gt;
  var ctx = canv.getContext(&amp;quot;2d&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  //The three draw functions can take the paramenters &amp;quot;coords&amp;quot; and &amp;quot;color&amp;quot;.&lt;br /&gt;
  //With these parameters they draw the areas on the canvas.&lt;br /&gt;
  function drawSingleCircle(coords,color){&lt;br /&gt;
    &lt;br /&gt;
    var x1 = coords[0];&lt;br /&gt;
    var y1 = coords[1];&lt;br /&gt;
    var r = coords[2];&lt;br /&gt;
   	ctx.save();&lt;br /&gt;
    ctx.beginPath();&lt;br /&gt;
    ctx.arc(x1,y1,r,0,Math.PI*2);  &lt;br /&gt;
		ctx.fillStyle = color&lt;br /&gt;
    ctx.closePath();&lt;br /&gt;
		ctx.stroke();&lt;br /&gt;
		ctx.fill();&lt;br /&gt;
    ctx.restore();&lt;br /&gt;
  };&lt;br /&gt;
  &lt;br /&gt;
  function drawSingleRect(coords,color){&lt;br /&gt;
    &lt;br /&gt;
    var x1 = coords[0];&lt;br /&gt;
    var y1 = coords[1];&lt;br /&gt;
    var x2 = coords[2];&lt;br /&gt;
    var y2 = coords[3];&lt;br /&gt;
    var w = parseInt(x2) - parseInt(x1); &lt;br /&gt;
    var h = parseInt(y2) - parseInt(y1);&lt;br /&gt;
    ctx.save();&lt;br /&gt;
		ctx.fillStyle = color&lt;br /&gt;
		ctx.fillRect(x1,y1,w,h);&lt;br /&gt;
    ctx.restore();&lt;br /&gt;
  };&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  function drawSinglePolygon(coords, color){&lt;br /&gt;
     &lt;br /&gt;
    	ctx.save();&lt;br /&gt;
      ctx.beginPath();&lt;br /&gt;
    	ctx.moveTo(coords.shift(), coords.shift());&lt;br /&gt;
&lt;br /&gt;
			while (coords.length){&lt;br /&gt;
&lt;br /&gt;
        ctx.lineTo(coords.shift(), coords.shift());&lt;br /&gt;
&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      ctx.closePath();&lt;br /&gt;
			ctx.stroke();&lt;br /&gt;
      ctx.fillStyle = color;&lt;br /&gt;
			ctx.fill();&lt;br /&gt;
    	ctx.closePath(); &lt;br /&gt;
    	ctx.restore();&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  //The mouseover events can take the areas from the ImageMap.&lt;br /&gt;
  //Whenever the cursor is over one of the given areas, it is drawn in red.&lt;br /&gt;
  function rectMouseOverEvent(area){&lt;br /&gt;
&lt;br /&gt;
    var coords = area.coords; &lt;br /&gt;
    coords = coords.split(&amp;quot;,&amp;quot;);&lt;br /&gt;
    drawSingleRect(coords,&amp;quot;red&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  function circleMouseOverEvent(area){&lt;br /&gt;
&lt;br /&gt;
    var coords = area.coords; &lt;br /&gt;
    coords = coords.split(&amp;quot;,&amp;quot;);&lt;br /&gt;
    drawSingleCircle(coords,&amp;quot;red&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  function polyMouseOverEvent(area){&lt;br /&gt;
&lt;br /&gt;
    var coords = area.coords; &lt;br /&gt;
    coords = coords.split(&amp;quot;,&amp;quot;);&lt;br /&gt;
    drawSinglePolygon(coords,&amp;quot;red&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //After the cursor has left the area, it will be drawn in blue again.&lt;br /&gt;
  function mouseOutEvent(area){&lt;br /&gt;
    drawAll();&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  //At the start, the function drawArea gets called by function drawAll and it draws all given areas from the ImageMap in blue.&lt;br /&gt;
 function drawArea(area){&lt;br /&gt;
   &lt;br /&gt;
   var coords = area.coords; &lt;br /&gt;
   coords = coords.split(&amp;quot;,&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
   if(area.shape == &amp;quot;rect&amp;quot;){&lt;br /&gt;
     drawSingleRect(coords,&amp;quot;blue&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
   else if(area.shape == &amp;quot;circle&amp;quot;){&lt;br /&gt;
     drawSingleCircle(coords,&amp;quot;blue&amp;quot;); &lt;br /&gt;
   }&lt;br /&gt;
   else if(area.shape == &amp;quot;poly&amp;quot;){&lt;br /&gt;
     drawSinglePolygon(coords,&amp;quot;blue&amp;quot;); &lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
  //The function addEventsToAreas adds the mouseover and mouseout functions to the areas.&lt;br /&gt;
  function addEventsToAreas(){&lt;br /&gt;
    //var area = 0;&lt;br /&gt;
    for(var i=0; i&amp;lt;areas.length; i++){&lt;br /&gt;
    	var area = areas[i];&lt;br /&gt;
      area.addEventListener('mouseout', function(){mouseOutEvent(this)});&lt;br /&gt;
      if(area.shape==&amp;quot;rect&amp;quot;){&lt;br /&gt;
        area.addEventListener('mouseover', function(){rectMouseOverEvent(this)});&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    for(var i=0; i&amp;lt;areas.length; i++){&lt;br /&gt;
    	var area2 = areas[i];&lt;br /&gt;
      if(area2.shape==&amp;quot;poly&amp;quot;){&lt;br /&gt;
        area2.addEventListener('mouseover', function(){polyMouseOverEvent(this);});&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
        for(var i=0; i&amp;lt;areas.length; i++){&lt;br /&gt;
    	var area3 = areas[i];&lt;br /&gt;
      if(area3.shape==&amp;quot;circle&amp;quot;){&lt;br /&gt;
        area3.addEventListener('mouseover', function(){circleMouseOverEvent(this);});&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  //The drawAll function runs through all given areas and draws them on the canvas.&lt;br /&gt;
	function drawAll(){&lt;br /&gt;
    &lt;br /&gt;
    ctx.clearRect(0, 0, canv.width, canv.height);&lt;br /&gt;
    for(var i=0; i&amp;lt;areas.length; i++){&lt;br /&gt;
    	var area = areas[i];&lt;br /&gt;
      drawArea(area); &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
	function init(){&lt;br /&gt;
    drawAll();&lt;br /&gt;
    addEventsToAreas();&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  mw.loader.using( ['mediawiki.util'] ).done( init );};&lt;br /&gt;
  var mhs2 = document.getElementsByClassName(&amp;quot;imageMapHighlighter&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  if(mhs2.length &amp;gt; 0){&lt;br /&gt;
   start(); &lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>Simon Stier</name></author>
	</entry>
</feed>