Wykres kołowy z efektem 3D i legendą. [PHP]


Skrypt wyświetla dwa wykresy kołowe na podstawie danych wcześniej zapisanych do pliku. Pierwsze koło przedstawia systemu operacyjne odwiedzających stronę, a drugi ich przeglądarki www. Dodatkowo dynamicznie jest tworzona legenda. Wszystkie loga/znaczki (obrazki) zapisałem używając kodowania base64, dzięki czemu nie muszę mieć ich w osobnych plikach tylko wszystko razem - wygodniej przy tak małym projekcje. Nadmienię, że korzystając z base64 wszystko będzie 33% więcej zajmować, ale za to minimalnie szybciej pracować.
Tyle tłumaczenia ;] Kod postarałem się opisać w miarę logicznie i zrozumiale.


<?php
// Tworzymy obrazek i definiujemy kolor czarny i biały
$image ImageCreateTrueColor(225160);

$black ImageColorAllocate($image000);
$white ImageColorAllocate($image255255255);

// Zalewamy wszystko na biało i dodajemy 1 pikselową czarną ramkę
ImageFilledRectangle($image00225160$white);
ImageRectangle($image00224159$black);

// "moc" cienia a raczej ile będziemy odejmować od jasnych kolorów by uzyskać ciemniejsze
$cien 40;

// Tworzymy całą paletę kolorów dla każdego systemu i przeglądarki oraz ich cienie
$color_linux ImageColorAllocate($image23617183);
$color_mac ImageColorAllocate($image13843226);
$color_windows ImageColorAllocate($image102205170);

$color_linux_cien ImageColorAllocate($image236-$cien171-$cien83-$cien);
$color_mac_cien ImageColorAllocate($image138-$cien43-$cien226-$cien);
$color_windows_cien ImageColorAllocate($image102-$cien205-$cien170-$cien);

$color_firefox ImageColorAllocate($image255204153);
$color_safari ImageColorAllocate($image10910585);
$color_opera ImageColorAllocate($image1654242);
$color_chrome ImageColorAllocate($image691390);
$color_ie ImageColorAllocate($image95158160);

$color_firefox_cien ImageColorAllocate($image255-$cien204-$cien153-$cien);
$color_safari_cien ImageColorAllocate($image109-$cien105-$cien85-$cien);
$color_opera_cien ImageColorAllocate($image165-$cien42-$cien42-$cien);
$color_chrome_cien ImageColorAllocate($image69-$cien139-$cien0);
$color_ie_cien ImageColorAllocate($image95-$cien158-$cien160-$cien);

// Otwieramy plik z danymi i ładujemy je do zmiennych
/*
Zawartość pliku z danymi przy takim ułożeniu powinna wyglądać tak:

linux|54|
mac|8|
windows|554|
firefox|180|
safari|15|
opera|19|
chrome|24|
ie|381|

Powyższe dane są skopiowane z mojego pliku ;]
Jeżeli "instalujesz" skrypt u siebie, pewnie chcesz zacząć liczyć od zera.
I tu pojawia się mikro problem gdyż jeśli damy wszędzie zera, php się obrazi że chcemy dzielić przez 0.
Dlatego, niestety albo przerabiamy skrypt na własną rękę :P lub po prostu wklejamy:

linux|1|
mac|1|
windows|1|
firefox|1|
safari|1|
opera|1|
chrome|1|
ie|1|

*/
$list file(" PLIK / Z / DANYMI /");
for(
$go "0"$go count($list); $go++){
list(
$eq$number) = explode("|"$list[$go]);
    switch (
$eq) {
    case 
"linux"$linux=$number; break;
    case 
"mac"$mac=$number; break;
    case 
"windows"$windows=$number; break;
    case 
"firefox"$firefox=$number; break;
    case 
"safari"$safari=$number; break;
    case 
"opera"$opera=$number; break;
    case 
"chrome"$chrome=$number; break;
    case 
"ie"$ie=$number; break;
    }
}

// 16 na 16 takie rozmiary mają wszystkie ikonki
$xx 16;
$yy 16;

// zmienne z zapisanymi w base64 ikonkami
$base_16x16[linux] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kLBxElAgj7lmMAAAIeSURBVCjPZVBNSFRhFD338z2dmSQFfZAJzSpokRgJUTFZIES0EIzZVCspd7ZrIW50Ga2NQF32aKGBQqsW4c8mKSKUFMkc0BkmZ/J3/vR933dvi0c26Vmde+69nHsuiQj+QkSIKCShQkQhD3UATvV0SDY2Nufn5zzPSyQSsVgMJyAhmFlERPb29np6HgBoavKGhoaNMVVNERGFKm+GZLMZx43E6hvu37v7bnIilUqdMFBVVkxMjhtr9dRgX5uhrdbWC1rr42CnMpACiQkqN+KrnVfW06V472Bxe2cnzH2888+BIAq0vbOrmx+vBQMtbaPtHdfHRkettcx8KrSItTaXyyWTyZ/rP0rlQqFwMDLyCoDv+1IFVBe+7/f3PxMRYwJjgkwm3dXV5XnefwvMHH5NB/pm4vbK8vcgODTmyJhARHp7nwD4ODMTPpeZlYABBpDeTEf1t2h9MwggEAFS0nofQKlcPD5fAcJQWyvjdalHbwesP/40m90VgUAd/fp03s51d9Teac9qQBgCKAgIRKXlBlo60+hecj+8n34jjEq58nVxua+7PPEyKmsvzO/PoqAgDiAEgM4eFOuU7He2ObP51NT01MLCl6XZ12PPi4VSU03LNTAioqCYmK0IH5Zzlfzqfn5xfXG+XH/LbbyoyFFBNpKfjF9Nnrv80HVqWViByLBWopjAYmGt0brOjSrXAWDN0aHWETciJErVACQifwB4t3oxdoWNwwAAAABJRU5Erklinux|54|
mac|8|
windows|554|
firefox|180|
safari|15|
opera|19|
chrome|24|
ie|381|Jggg=="
;
$base_16x16[mac] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kLBxEkNjBUU5cAAAIySURBVCjPbVJLTxNRGD3fvZeZzpR3CQ0WRIlFwgITcePGRF2Y+BdM/IHsDIkr3BEWxhdBN0aFQKO2pXTaDm1n7r3f52Ik0ejZnu+R8yARwd9gZgKx8DAbjy+z+fkZRURKFazCPyBSRNJN+i92998dfRHhP1nzvwUG1MHrTyoIl68tKK3o6q4IlLAIiwh7ZgCj8XCYjQFMaLuyGFcXZobDEQjMXoSJhNgzCESUpOnu7p7Nyfms1++t12/leX7RSTqdpFarPX/2VAREMCAQSX9wubPz8tHjB0GovCfnfK/X09oMlka542azdXLauLl6XUQKDWrv1cHm5m1r88GldZazLLPW2dyNxrkOg+XqzMpyrXDTFI8uknShWj3v9HLrvGfvvXOcWztI84lg9PDJfaM1REBkiBggKN1JBuFEmGfOOuu8AwiklDbjLC2X48I+AEqEADU7N9ds95Je6rwobYKgFARBGIZT5dh7+Xr6A0DhpiEFAOv1WmP/aGmxHJUmSTGzADBGK23iKPxw+K3bTe7d2RCBgRCI6zeW3h9+DsJ4vjJrjBEREdFaK0VZlpeiqWarBZBADABhRKV4Y33tZzuLJuPp8pRAvHNFwKUoP++c1FcrAAii6KpY21s3FEat9rl1abvdODs7bra/Z3bYODsm6tfrayICUlS0VQREnPQv37z9OB5mlcp0XI7SQdrpJnOz09t3t+IoKiaJmYkIAAsTyDnLzFqTUoaZnfPGaK2J6LewXzW9TYnH7c8cAAAAAElFTkSuQmCC";
$base_16x16[windows] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kLBxEkG3WLD+IAAAJ0SURBVCjPTZLLS1RhGMaf9zvfnMuMM6OOlzKzMivMFpZYENKuRFsELVoUEbWKtm7sP2gbtIjWFYQEIYQNGFEZ0QWyG1FKEl5m0tFzzjiXM875vrfFZPksH57fs/oRMwMMgBkgwtYwAwCoNqhF1noiDrXSfoYKGawuVDkpOg+ZyW0EvYkBYBAk/v4K7WfU3ctWXVJ9nVqe38jE+4/cmrAdCQJYgQ0IaKXEJgt8fGhWCghKRqkS5P3cby/96c7NsYtza6+96tKM/+jeq9FytSi1ZkCzMDCd1qkGubJSDDZcl1rPDaVn0jPuePbd/badLbn17H4asaQpmJgFKXceq/PEdapQLrhBzuWmU0NfZp/WN6IxnnLMRi5ZnU0D0rClADMMymfl8NVyc6/uKyWPvk+Nv1s0fgWVohOLOFa9onVb79gW2wdiqQED1Rcr+5fcAysL8sdcBF7P9dFrz2dvR+KI2CLiGF45Z1QGtjd0MEMKoBDol9NWc0Lmfcp7G68nvUtnRU9C9l1If1ubkKA+s6vr2LDlxMFKAlhaNqpgSAoq5Pul3W1OTE5Njo0c69s1ePBENBq4i09c1ZZM7WaG1Aiza1oroxCE3rq5thycPF4/+/lBcwssXqzknzlqNesmO3oHAYBIhCH9nOP2uvKelmp7q7+xXu4+UMxl3iYcqrfMqC3DalgU/bGYA60JJKUQ5wZVNFoHaMC+csZennvz4XsxHpFGNKKNsORRouM8No2QgoTjRJmJySAlWlOiIXlY0A3tPbbjQVnG/ET3rr2nmQEwERH/c4uBLbIqpcNqAWSalk0AgwnEjC3Af6zWERHANeuppjSAPyM5NU7CatJbAAAAAElFTkSuQmCC";

$base_16x16[firefox] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kLBxElEhVMhgcAAAOZSURBVDjLTdPbb1N1AAfw7+/3O+f09H5qaaXtZHQtW8cmAhOSdfXCgBDjzIxCMhNj4oMm8q4SjTwoIYvKiy8mhsSQYELUmCmJwzDUCDPNHERgbmMXBu26rRfWe7tz6fn5ZOLnf/gQ/M/Ic6N0vjscECjecAaUl3o73HvW8irWHtVmqosrP4Xqyxd+uTy0Dhw2C18BSv8oSHbpAvxsxXP2PJXOrUVfD3dt//jpnpCt3Ql0trtgmByz96soL05D/3u8ORi8e/rV3tvnyXGUAECw//mjxahsfFhK7Xr+MSXcF3CoGNy8yJNbcZLnIWSyDdQ0Crkp870e3To0VPxMax1O1Me2v2cbvrhA7rzic8he2x9SZMc+LllhFFM85Y6Qb576BJrOUS014fPZUN2sYeLsJb7PnyWXv/gdqLTNGeWeOHv/zT43YdV3UUk7eSkPqquErmXgXc/AMA2o7TG0NAMUFNF4L3HuT2Bj0cIP0kkfCXTdEUS77YRebQU4LByUEkI4PB47Yh4TKZeCZqmJhel7yCyksD++Bw7Zii2VEi3qhajc7Ke8tfUyDBOcgzAGMIHB6hBwJXQMSRKDWWkiu7SKwv2HWJmeQSldgGRuwN4VgbmYHxYa6ZIsUgNMYMit6ridbODWi2+h4A6iRSoAKII+Beu3SlienAKZn0LspA60ZtEqWj20MpuTmchAGcPqP2W0KSq6+BLqGzUg9wiPl5bhEwisZgtGYQO7Y5041jUHbfUBaNvuJUGt2a/p5eoBwQoe2SURuVlDtDKGA9oUfGIFTWbB1/koxlc3YZNlhKw1wC9xM9tNWHssKXDB921pqXjK+6RJnDscIHWCSpXht2kVc0YM9zQv/pq/C0DBB0ckJHp+hV4rENZxCLxavMRGRG+ZaOpeJqmdosI4F0xisUuIhjgWGm6sb3bAb6P46FAaw9E8gkqGi519hLozN3n94SgBgKsdO58VzNzYtn6vh4oal1wGoSKHLAmQJRGgAhpbJvRikdsHDKK88ISuLagjzkTqB/JfpIlI8G0tW/jcss3mBDfgijq46AARFQpmMzm1NIi1uw53nOqtFeWMciN3hnxKTHLj+Akkvv8OADAeCBzVy9VTIjMGwQFmFyG6OSwBDY5uAa6YbVKQ5HPXT6bHXgPh9SsDIAAwcfAZHJm6DgD4ORy2y37XTrPZGOD5XEhUJDh6/A+cnY6kKNfTHadnagCw9uVRBN+5in8BVL+KjcI/XMUAAAAASUVORK5CYII=";
$base_16x16[safari] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kLBxEkJMPtIt8AAAOlSURBVDjLTZNfTFtlAMXPd7/7p7ctlNtyofwZTEBYkyIGMEaIEZiBBJ2ZT4aNmJFpnBITExLNiM9qXDK2GIwmhhl8mUqUkEhY0EzHcA7n6CKBAWVtKRRa2kJXenvb297rA4l63s8v5+F3CP6XkZERzM7OMqIoNnMc9+SJhhM/1TfUq+ffOJ9LK2kdAF49fRo/Tk7+2yEA0NPTg5mZGRBCMDQ0VN7V1XVB1/UzZrN4m6FUpYT6VFW9093TPQ8gPzg4iNHR0SNAU1MTPB4PCCEYHx9/rb29/f0/7vzemMlkOTWTB6EEIk8hCEKCF0y/XLl65d25W3OhcwMD+PrataMFADA2NvZWW1vbpW+vXy8gZicqquoMjgqgPMVeOELUgy2kUxHYJYf3ux8mOuZvzW13dHSAAsDw8PDTra2tX0xNTcmaUINjtY0QRAsRBBNR0gaxFTnA6AIYljNC216HXCzXLSwsTPj9fp1pbm5hZVk+s7T0oDKmlxqMVIGVrTj+fBgGeIr7m48RXrwHsuHByr5EKuvcyOW0k2fP9ncCAO3r67NmM5nLotXuWI4WImUwRKMMHMVWMBY7ytZ/g+3BJKYLO1DqLIPGcka9zPKx2L4PFHO0qqpaKrIVfsRay7CWsBBfNIttVcOjuAHH2ixOrnyO4MsXIT7RiHAiC0WjcJfkSWRvL+IscU6x+XzOJBXZkMozYAUTau0i2pvKYS0Q0Fpci8ujSTzm6rG+EUYySVAu6qS7zEAkErEqqTTDut3uQ5NoUZyyaL6rmZESzPjGs4f3nhHx2Y0gyk69DVHXoIkU8QOKGnpo5DJ+srbu3U0mEnlmcfG+su5dv1vI63AW5IwgOLzgKsCEL41Vuxs1Thv+TjIwSxJ4qwnnWuzEs7SMra2teyurD7N0dXVVk+wOLplSXhnoeZaENQN7gg3JglKkCA+SNJDgRRCOoP84i1o9go8/vRSIx+OfZFQ1TAFgw+sNaFquhWFQ885Lz2EnAyPFmYjFKmDf4FFdlDf6Kwy0Ckny5oVBbXszeDUej30PANTlciEajaYTBwcLj/y+p/w+X/WphhLSLgFN5iy6pEM8z8VI8K958sHwh8pmIPDl7u7ORQDgef5I5d7eXkxPT4NlaakkOV4vluV+l8vlrjxWwfC8gO3QzuHy8vKv8Vj0q2AgMAXAsJjNSCnKf1/ofLETN3++CQCM3e4oIgypoCwr8zyv8RwfSqeVnZ1QSAEAk8kEVVUBAP8AftmAMMnB1FAAAAAASUVORK5CYII=";
$base_16x16[opera] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kLBxEkLiM4y8EAAANUSURBVDjLbZNbbBRlFMf/3zffzOy1s9vdtpRm6bbbsd1a+6BJESvUgooloRi1rYrGkGhifFDCA8YH45MxwRA1ohETbWJKYyIxgWovkvBAeSB4AaVUsbDQUrZl3el2d/Y2l53PBwNpiufp5Pzy/+UkJwf4nzoebbjbn90YFJKdcZf9+HaZf/ElvTPPHHwbfMdmkPXh7zo6MDAzg9cB+aU29THRcR6VRTEuiMySqqr+lJrV89G+3dNk6LnCb4cO3SsAgHdDSnBXVD0sc+dF6vHKw8nkxZKeXXha8fRXKwHT7/WNxWNN++nwsUW2NlgvufBqwwZxV7TlvZjbt08v5HDRLc19krj2MADDQ8MjA4TvTeWyz8qMMfOFgSG6VrBklhFs72yObdnyVigSQTiyCanZ348CMADgs4z+edHh4JUKz2RX9xSC1d10/fqtbfFXanb2gW7t5ggHsXI7feYOs0zj15tWBUygRE+nUSbstXsE9Xq+F7/8DLjcxABQNKy5NdjQOTICZWCSC6XriS62XqBdntmUWlwEc3vh6BreB1bXcsIkTZbcwQooeE6vZV+PnnVTQrdJkvgyCyibCweG6m7lMzCcCur8VRiduDzpBhkTKPmxf2f8RiAQtoJ+P8q2DcYJo4LAPqaCMAlC93plydQyqauFUg75nAYui5xblScN0z7CuX1t8tyNj1oe7PJEmlpQE6qDJLAsFRjb7QAwTQvEspuL6v21TrkAyzaBKj/xactvcAJdL5To6oq+n6pqo9izjYfVGKjE/qayJB4lHKCE8HQ64/I+NRjM6VkOQriRy6H3209nBUUZEKicu53W4P9nCWiLg6gqknr2OBVE6QPZJY6BgHDuABvbsdD6EATuIL20CH9b0/ODPY1TnlDoHfOvC2ZrsQSsaGTZLCcLjY3fEACYvpCRkvMLB2yrPOiAduRvJUT52Ieomb+Czp4dZnVdw8Gpn6YSvtqG0Sdi9/kysWjq0vXEvt7hr8bJ9xOzeKavHQBw4tSVSLlYfMBh4tb8/FyXNf1Di3L1j/pqyxCNYhFKIKwpkabxm7JwZM/oyHkA/z3TydMJ9G9vvnvr8dMJZnsV6dKZCdE7OSJ4E7MkILsJ9wfs5ZoNpTfHTxgAcPiRbvwL9y1V+7gFg70AAAAASUVORK5CYII=";
$base_16x16[chrome] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kLBxEkEgxXt0YAAAOeSURBVDjLPctdaFtVAAfw/7nn5N7c3HuTNG1at3SLWtvR0TJT1rKuK7ayjhWpVuksWNiXCI4pzgcRESlTRHzQh0ERhSFzTKYTLZv6IKzIHtbiOmelm9hEl2Tt0qXmo/m4ublfxyf9vf8IABx560Wc++AsAODL3bvFRk3TyoHAzoZQKOahVNisVH5TDON2nvPNidlZEwCmNQ2ny2WQqZkjuHDyHAAgdGwwcmWpOu1R1Rc8+bwC0wQAwOeDyZhR1fWL1UJhZiyTWQSAaUnC/1658ebxp48eurW2bx9f8fl4HODp5mY3HYm4K4LAlwH+uyjyBVFc/56Ql/57FACe+mZ89PG2XWcDdkv0ieQ6V/N5Uj40get+H7kXbiItw0PYInnhTaW44jiqSunQcyF58Yua9Tc9+NlYgDTQ80G/PyrLEleD3SRDKT4sciwPnEBcacO36SQi3R2IVivEm81yhXOJRpSugwPNF+nWkdYDVpP7+mp9jWthlRh1Py6nKe4OvIr2aCciXd1IbzuAn+8m4GkxkfIxkhT8nHK65e4OZ1Fgfs9kUS/Csi0U9Dyk5gbEDReWJSPodbBVtdCIOoyghuBwO/rPhNH8kYL5/S3IWrWjzHacPl3XwURG7nvXISkETiGB+8Uk5lPtCGYYEpUi6n/8iobeEB4N/YWonCPdrTKSKW8PM4w6rTt1VMUqBI+AhBrHzl1BWLc/x53yKFzqg5peQGctjt7YCHg9A9uV4boETBIZVQb9e12RdxmOwZnASNbNYk9sL5RcDoGbc2gvLyEWqOCN1/rxiP8CXLsK0yKo6iLyJfkmQ5F/LajCZLlUhiAIcLmLq8ZVxAIxPPvydnTvYAj67kFjl8BradiOAKNOueWqJFdWv2Ky6J3jtrCSN/Mdpc0Sh85IRyqKydESeh5LgPI8YGXAa5twHAGmKfBaXSZFPZxjoucSfXAtY/SM9a6Lsm98tbTGYit9/OPjYdL58A0IZhawH4A7JTgOgVGnvFL1EcPd7mYLysn9U3PXKQAkfvzzztDzw1VVaeg3meHtFAtoD8U5nA3iOga3bBGmKRPdCpOava2ysam8Ozjx0wwA0MFTw0gvJLE8u7QwMvHkvEcVmm5teDtWcxJpaxThE4PEcCKkbIRRqGrfFcraqT3P/HAeAM6c7gUBgLH3xnHlnVkAwOFPj8kb/5QekiQ2REQ3crjVTjWaq1lFU5fyRac4MnXNAIBP3u/Dibd/wb91xJ9RV/kWuAAAAABJRU5ErkJggg==";
$base_16x16[ie] = "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kLBxElC3EnLscAAANfSURBVDjLlZNtTFN3FMaf/31pae0qtA5LgQAFukCIOurC1kHiyBhiTHSRJboNWOaiYXOSsIX4QmJiNs2+LFkcbuwlyzBG0Ck6xZdo1EgYsk0ilrEUWliDldaW29Je+3Zv738fCCTui9n5es7vyZNzzkPwP4o+OUjEcScvpdSyoeakMtNbC/Lfoc2d3+DSZ61Pg/QQjz8vV0bCaY3MZKtigUg4pWRMFL99U3xKwFxSgUeucQDgGrY21lU3vFdkNw2xJVLfmkCUGXzRGvrN6TAGVCuMVqIxCEWNA+5luHTdywCAfGtFQ0v7odneQWfMO/Fdcn7ojeTV+w/SHd+eEawbtrcCgOdai8l7vdkEANySwNT9uygotzXlrH21J6+yDOvVXQh7nXJP5KgSj/mYmD47q3DT1uMRhckvqP/5QPju+yoAYD/Y047R34dRXVlZNENMF2s2mlXtthES908+2tFr/9IxMX7GlVYbPVxWfpB7jkaTKbtZonf2HT3n/qV7J3Bv5O9FC3zx4R0db8rTo83KvbM1tP6tTUeMgLEEyMrb9fk23eEBUdN5nmp3fa1oX6j7cck5Z6sqAwC822ywtLxuYleFbuHjm3ZcS5S3qQ8e+DCu0wJqnpXklFYJeaD4BULSSkHd2tWa62P+OLd4ppHsi1e+L6nCMM55ijAwacPKcnNQp8E8yyRApQRV4iIjJcKgkkg4FX2YV2FnMdYPjiavEiDQ/FohX7UwNYfdNzopmycRLY11ezurjwDAO0179Q8sG7clMlYRusKIlXrW/dPJfhEAOMpqzZCCe3XiCFrP25BM64jekgNdNvuJdV9vhrgQ/WfYUtYkKPoNUSGC9GwIBX5fy/IOCKtRpFAgMxKMukPzq/czwtBp7pWdyC3ONNhqLfsJw6RHp+Oq6OQCqOBCzhNnl2fG0QMATbvbwAClQuLxzMBCRHZcunDlrFl+uD4x+seEd1pIeoW07A/L1OeLxcWxv4LPz95qm3P078ld1wgAONH91WIWvH1rXkqIQgeTkr4ozNeFwOv4tjv1VcfmaimnymCYx3P+LcKvt0/fPhU31XwE32DX8gcTAJA8nzKzl09tJlTJ5TNz3Rot7zFsGZ4iBMozI+q7YAcABKaPwXXczLv66pilnuuH0mfy/wKKN3hTR+9mHAAAAABJRU5ErkJggg==";

// Systemy wykres
$systemy_je 360/($linux+$mac+$windows); // w tej zmiennej mamy ile ma wynosić 1 przesunięcie w kole
$systemy_start 20
/* 
ta zmienna jest raczej dla polepszenia wyglądu wykresu, gdyż funkcja (którą zaraz będziemy rysować poszczególne kawałki koła)
zaczyna rysować od hmm godziny 9 :D dlatego gdy będzie lekkie przesunięcie,
zaczniemy rysować np. od 11 i dzięki temu wykres nie będzie wyglądać tak symetrycznie
*/
  
$linux_end $systemy_start+$systemy_je*$linux;
    
$mac_end $systemy_start+$systemy_je*($linux+$mac);
$windows_end $systemy_start+$systemy_je*($linux+$mac+$windows);
//powyżej policzyliśmy dla każdego systemu ile w kole się wyrysuje

// rysowanie pierwszego koła
$x 55;
$y 42;
$width 105;
$height 80;

// najpierw cień
for ($i $y+10$i $y$i--) {
    if(
$linux<>0ImageFilledArc($image$x$i$width$height$systemy_start$linux_end$color_linux_cienIMG_ARC_PIE);
    if(
$mac<>0ImageFilledArc($image$x$i$width$height$linux_end$mac_end$color_mac_cienIMG_ARC_PIE);
    if(
$windows<>0ImageFilledArc($image$x$i$width$height$mac_end$windows_end$color_windows_cienIMG_ARC_PIE);
}
// a dopiero później zwieńczenie
if($linux<>0ImageFilledArc($image$x$y$width$height$systemy_start$linux_end$color_linuxIMG_ARC_PIE);
if(
$mac<>0ImageFilledArc($image$x$y$width$height$linux_end$mac_end$color_macIMG_ARC_PIE);
if(
$windows<>0ImageFilledArc($image$x$y$width$height$mac_end$windows_end$color_windowsIMG_ARC_PIE);


// Systemy legenda
function wklej_ikonke($i$co$mini_color) { // funkcja ta wkleja nam ikonki i rysuje kwadracik z odpowiednim kolorem w środku
global $ikona$pozycja_x$pozycja_y$xx$yy$image$black;
ImageFilledRectangle($image$pozycja_x+$i*20+4$pozycja_y+24+2$pozycja_x+$i*20+10$pozycja_y+24+8$mini_color); // środek kwadracika
$base_ikona base64_decode($co); //dekodowanie ikonki
$ikona ImageCreateFromString($base_ikona); // tworzenie obrazu ikonki z tekstu
ImageCopy($image$ikona$pozycja_x+$i*20$pozycja_y00$xx$yy); // wklejanie gotowego obrazka ikonki w odpowiednie miejsce
ImageRectangle($image$pozycja_x+$i*20+2$pozycja_y+24$pozycja_x+$i*20+12$pozycja_y+34$black); // rysowanie czarnej ramy dla kwadracika
}

// Tutaj zamiast pętli takie cóś
$pozycja_x $x-($width/2)+5;
$pozycja_y $y+$height;
$i=1;
wklej_ikonke($i$base_16x16[linux], $color_linux);
$i++;
wklej_ikonke($i$base_16x16[mac], $color_mac);
$i++;
wklej_ikonke($i$base_16x16[windows], $color_windows);


// Przeglądarki wykres (analogicznie jak wykres dla przeglądarek, więc pomijam opisywanie)
$przegladarki_je 360/($firefox+$safari+$opera+$chrome+$ie);
$przegladarki_start 20;
$firefox_end $przegladarki_start+$przegladarki_je*$firefox;
 
$safari_end $przegladarki_start+$przegladarki_je*($firefox+$safari);
  
$opera_end $przegladarki_start+$przegladarki_je*($firefox+$safari+$opera);
 
$chrome_end $przegladarki_start+$przegladarki_je*($firefox+$safari+$opera+$chrome);
     
$ie_end $przegladarki_start+$przegladarki_je*($firefox+$safari+$opera+$chrome+$ie);

$x 170;
$y 42;
$width 105;
$height 80;

for (
$i $y+10$i $y$i--) {
    if(
$firefox<>0ImageFilledArc($image$x$i$width$height$przegladarki_start$firefox_end$color_firefox_cienIMG_ARC_PIE);
    if(
$safari<>0ImageFilledArc($image$x$i$width$height$firefox_end$safari_end$color_safari_cienIMG_ARC_PIE);
    if(
$opera<>0ImageFilledArc($image$x$i$width$height$safari_end$opera_end$color_opera_cienIMG_ARC_PIE);
    if(
$chrome<>0ImageFilledArc($image$x$i$width$height$opera_end$chrome_end$color_chrome_cienIMG_ARC_PIE);
    if(
$ie<>0ImageFilledArc($image$x$i$width$height$chrome_end$ie_end$color_ie_cienIMG_ARC_PIE);
}
if(
$firefox<>0ImageFilledArc($image$x$y$width$height$przegladarki_start$firefox_end$color_firefoxIMG_ARC_PIE);
if(
$safari<>0ImageFilledArc($image$x$y$width$height$firefox_end$safari_end$color_safariIMG_ARC_PIE);
if(
$opera<>0ImageFilledArc($image$x$y$width$height$safari_end$opera_end$color_operaIMG_ARC_PIE);
if(
$chrome<>0ImageFilledArc($image$x$y$width$height$opera_end$chrome_end$color_chromeIMG_ARC_PIE);
if(
$ie<>0ImageFilledArc($image$x$y$width$height$chrome_end$ie_end$color_ieIMG_ARC_PIE);


// Przeglądarki legenda
$pozycja_x $x-($width/2)-15;
$pozycja_y $y+$height;
$i=1;
wklej_ikonke($i$base_16x16[firefox], $color_firefox);
$i++;
wklej_ikonke($i$base_16x16[safari], $color_safari);
$i++;
wklej_ikonke($i$base_16x16[opera], $color_opera);
$i++;
wklej_ikonke($i$base_16x16[chrome], $color_chrome);
$i++;
wklej_ikonke($i$base_16x16[ie], $color_ie);

// To obrazek jest i destrukcja ;]
Header('Content-type: image/png');
ImagePng($image);
ImageDestroy($image);
?>



Całość wygląda tak:


Pozdrawiam.

Komentarze:

bialko 18:56:01 17.06.2010r. IP 77.253.239.42
SUPER ! Tylko przydało by się, wygładzić jakoś krawędzie ;)

Dodaj komentarz:
Nick
E-mail (nie będzie publikowany)
Twoja strona, blog (bez "http://")

Przepisz kod z obrazka

Powrót do listy publikacji.
Polot.Info | Wirtualny Przyjaciel
(CC) Kacper Placha