You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
4.2 KiB
109 lines
4.2 KiB
<?php
|
|
|
|
## give a visual representation of pages and group
|
|
$RecipeInfo['WikiBrainMapping']['Version'] = '2011-05-15';
|
|
Markup('WikiBrainMapping', 'directives', '/\\(:WikiBrainMapping:\\)/e', Keep(WikiBrainMapping()));
|
|
|
|
function WikiBrainMapping(){
|
|
$sourcepagename = $_SERVER["REQUEST_URI"];
|
|
// apply changes done to graphprocessing.php to insure proper URI format
|
|
$sourcepagename = preg_replace("/(.*)\?.*/","$1",$sourcepagename);
|
|
$sourcename = preg_replace("/.*[\.\/](.*)/","$1",$sourcepagename);
|
|
$sourcegroup = preg_replace("/\/(.*)[\/\.].*/","$1",$sourcepagename);
|
|
if ($sourcegroup == "/"){
|
|
$sourcegroup = "Main";
|
|
# consider instead filling the pages array with
|
|
## groups names
|
|
## "neighboors" wikis from InterWiki page
|
|
# list page, remove pagenames, sort|uniq ... then what? maybe whole different process
|
|
}
|
|
|
|
global $FarmD, $WikiTitle, $ScriptUrl;
|
|
$processingpath = '/pub/libraries/processing.js';
|
|
$processingfile = "/pub/visualization/wikibrainmapping.pjs";
|
|
$processinglib = "<script src=\"$processingpath\" type=\"text/javascript\"></script>";
|
|
|
|
# eventually modify to use a dedicated folder
|
|
# generate a file per page
|
|
if (!file_exists($FarmD.$processingfile))
|
|
if (!touch($FarmD.$processingfile))
|
|
print "Creation of the processing file fails, check write permissions for pmWiki and $processingfile.";
|
|
|
|
# cached version (to comment during tests)
|
|
#if ( (time() - filemtime($FarmD.$processingfile)) < 3600 ) return $processinglib.'<canvas data-src="'.$processingfile.'" width="'.$canvaswidth.'" height="'.$canvasheight.'"></canvas>';
|
|
|
|
$canvaswidth=500;
|
|
$canvasheight=300;
|
|
|
|
$groupname = $sourcegroup;
|
|
$pages = ListPages("/$groupname\./e");
|
|
$pages = MatchPageNames($pages,array('-*.*RecentChanges,-*.GroupFooter,-*.GroupHeader'));
|
|
$pagesnum = count($pages);
|
|
$processingsetupcode = "
|
|
PShape s;
|
|
void setup(){
|
|
frameRate(15);
|
|
size($canvaswidth,$canvasheight);
|
|
strokeWeight(2);
|
|
|
|
PFont font;
|
|
font = loadFont(\"FFScala-32.vlw\");
|
|
textFont(font);
|
|
|
|
sright = loadShape(\"/pub/illustrations/flat_brain_right.svg\");
|
|
sleft = loadShape(\"/pub/illustrations/flat_brain_left.svg\");
|
|
smooth();
|
|
";
|
|
$processingdrawcode .= "
|
|
void draw(){
|
|
background(255);
|
|
";
|
|
|
|
$processingdrawcode .= "shape(sright,300, 400);";
|
|
$processingdrawcode .= "shape(sleft,200, 400);";
|
|
$processingdrawcode .= "fill(0,0,255,255);\n";
|
|
$processingdrawcode .= "text(\"flattened left hemisphere\",300,10);\n;";
|
|
$processingdrawcode .= "text(\"flattened right hemisphere\",100,10);\n;";
|
|
|
|
$target_area["x"] = 150;
|
|
$target_area["y"] = 100;
|
|
$target_area["width"] = 50;
|
|
$target_area["height"] = 60;
|
|
|
|
//replace with actual list of pages
|
|
for ($pagen=0;$pagen<10;$pagen++){
|
|
$x = rand($target_area["x"],$target_area["x"]+$target_area["width"]);
|
|
$y = rand($target_area["y"],$target_area["y"]+$target_area["height"]);
|
|
//draw cercle in the area
|
|
$radius = 3;
|
|
$processingdrawcode .= "fill(255,0,0,100);ellipse($x,$y,$radius,$radius);\n";
|
|
//draw diagonal line of edits
|
|
$linelength=10;
|
|
$processingdrawcode .= "strokeWeight(1); line($x,$y,$x+$linelength,$y-$linelength);\n";
|
|
//replace with actual list of edits
|
|
$maxdiff = rand(0,10);
|
|
for ($diff=0;$diff<$maxdiff;$diff++){
|
|
//draw points on the line of edits with smaller stroke weight
|
|
$diff_pos = rand(0,$linelength);
|
|
$processingdrawcode .= "strokeWeight(2); point($x+$diff_pos,$y-$diff_pos);\n";
|
|
}
|
|
}
|
|
$processingdrawcode .= "fill(255,0,0,255);\n";
|
|
$processingdrawcode .= "text(\"Note that currently points are randomly generated\\nand randomly positionned on a designated area.\\nNo mapping has been done between function and position.\\nGyri and sulci are also not represented.\",10,200);\n;";
|
|
$processingsetupcode .= " }";
|
|
$processingdrawcode .= " }";
|
|
|
|
$result = $processinglib.'<canvas data-src="'.$processingfile.'" width="'.$canvaswidth.'" height="'.$canvasheight.'"></canvas>';
|
|
|
|
$write_result = file_put_contents($FarmD.$processingfile,$processingsetupcode.$processingdrawcode);
|
|
if (!$write_result)
|
|
if (strlen($processingcode)>0)
|
|
print "Creation of the feed file fails, check write permissions for pmWiki and $processingfile.";
|
|
else
|
|
print "No code to generate, did you correctly generate your Processing code?";
|
|
|
|
// ----------------------- return the processed result -----------------------
|
|
return $result;
|
|
}
|
|
|
|
?>
|
|
|