Skip to content

Commit 94ea806

Browse files
committed
feat(font awesome 6): implemented icon stack
1 parent 7d9e04c commit 94ea806

2 files changed

Lines changed: 58 additions & 2 deletions

File tree

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\API\v3\FontAwesome\v6;
4+
5+
use App\Actions\FontAwesome\v6\GetIconMarkup;
6+
use App\Actions\FontAwesome\v6\GetLabelMarkup;
7+
use App\Http\Controllers\Controller as Controller;
8+
use Illuminate\Http\Request;
9+
10+
class IconStackController extends Controller
11+
{
12+
public function show(Request $request)
13+
{
14+
// GET MARKER CONFIG
15+
$markerSize = $request->get('size', 100);
16+
17+
// FOREGROUND ICON
18+
$foregroundIcon = $request->get('icon') ?: null;
19+
$foregroundIconColor = '#'.$request->get('color', '000');
20+
$foregroundIconMarkup = GetIconMarkup::run($foregroundIcon);
21+
22+
// FOREGROUND ICON SHIFTING
23+
$foregroundXShiftPercent = $request->get('hoffset', 0) / $markerSize * 100.00;
24+
$foregroundYShiftPercent = $request->get('voffset', 0) / $markerSize * 100.00;
25+
26+
// FOREGROUND SIZING
27+
$foregroundIconSize = $request->get('iconsize', $markerSize / 3);
28+
$foregroundIconHeightPercent = $foregroundIconSize / $markerSize * 100.00;
29+
$foregroundIconYOffset = 50 - ($foregroundIconHeightPercent / 2.00) + $foregroundYShiftPercent;
30+
$foregroundIconXOffset = 0 + $foregroundXShiftPercent;
31+
32+
// BACKGROUND ICON
33+
$backgroundIcon = $request->get('on') ?: 'fa-solid fa-circle';
34+
$backgroundIconColor = '#'.$request->get('oncolor', 'CCC');
35+
$backgroundIconMarkup = GetIconMarkup::run($backgroundIcon);
36+
37+
// LABEL
38+
$labelMarkup = GetLabelMarkup::run(request: $request, markerSize: $markerSize);
39+
40+
$mapMarkerMarkup = <<<EOD
41+
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 100 100" width="{$markerSize}" height="{$markerSize}">
42+
<!--! Generated with MapMarker.io - https://mapmarker.io License - https://www.mapmarker.io/license -->
43+
<svg fill="{$backgroundIconColor}">
44+
{$backgroundIconMarkup}
45+
</svg>
46+
<svg fill="{$foregroundIconColor}" height="{$foregroundIconHeightPercent}%" x="{$foregroundIconXOffset}%" y="{$foregroundIconYOffset}%">
47+
{$foregroundIconMarkup}
48+
</svg>
49+
50+
{$labelMarkup}
51+
</svg>
52+
EOD;
53+
54+
return response($mapMarkerMarkup)->header('Content-Type', 'image/svg+xml');
55+
}
56+
}

routes/web.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,11 @@
114114
Route::group(['prefix' => 'v3', 'namespace' => 'v3'], function () {
115115
// FONT-AWESOME
116116
Route::group(['prefix' => 'font-awesome', 'namespace' => 'FontAwesome'], function () {
117-
// FONT-AWESOME 5
117+
// FONT-AWESOME 6
118118
Route::group(['prefix' => 'v6', 'namespace' => 'v6'], function () {
119119
Route::get('icon', 'IconController@show');
120120
// Route::get('pin', 'PinController@show');
121-
// Route::get('icon-stack', 'IconStackController@show');
121+
Route::get('icon-stack', 'IconStackController@show');
122122
});
123123
});
124124
});

0 commit comments

Comments
 (0)