From fbb032c7105d7f6233816ed41d04dcbefd8b3ba1 Mon Sep 17 00:00:00 2001 From: Chad Little Date: Sun, 10 Mar 2013 14:16:16 -0700 Subject: [PATCH] Document icons sprite sheet. Summary: Adds 32 and 64 px images to represent basic documents. Test Plan: Differential Reviewers: epriestley, btrahan Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D5317 --- resources/sprite/docs_1x/audio.png | Bin 0 -> 1519 bytes resources/sprite/docs_1x/doc.png | Bin 0 -> 1582 bytes resources/sprite/docs_1x/file.png | Bin 0 -> 1294 bytes resources/sprite/docs_1x/image.png | Bin 0 -> 1804 bytes resources/sprite/docs_1x/movie.png | Bin 0 -> 1531 bytes resources/sprite/docs_1x/pdf.png | Bin 0 -> 1540 bytes resources/sprite/docs_1x/place.png | Bin 0 -> 1628 bytes resources/sprite/docs_1x/zip.png | Bin 0 -> 1683 bytes resources/sprite/docs_2x/audio.png | Bin 0 -> 2087 bytes resources/sprite/docs_2x/doc.png | Bin 0 -> 2268 bytes resources/sprite/docs_2x/file.png | Bin 0 -> 1566 bytes resources/sprite/docs_2x/image.png | Bin 0 -> 2851 bytes resources/sprite/docs_2x/movie.png | Bin 0 -> 2181 bytes resources/sprite/docs_2x/pdf.png | Bin 0 -> 2138 bytes resources/sprite/docs_2x/place.png | Bin 0 -> 2335 bytes resources/sprite/docs_2x/zip.png | Bin 0 -> 2518 bytes resources/sprite/manifest/docs.json | 51 ++++++++++++++++++ scripts/celerity/generate_sprites.php | 3 +- src/__celerity_resource_map__.php | 23 ++++++++ .../celerity/CeleritySpriteGenerator.php | 32 +++++++++++ webroot/rsrc/css/sprite-docs.css | 51 ++++++++++++++++++ webroot/rsrc/image/sprite-docs-X2.png | Bin 0 -> 5965 bytes webroot/rsrc/image/sprite-docs.png | Bin 0 -> 3055 bytes 23 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 resources/sprite/docs_1x/audio.png create mode 100644 resources/sprite/docs_1x/doc.png create mode 100644 resources/sprite/docs_1x/file.png create mode 100644 resources/sprite/docs_1x/image.png create mode 100644 resources/sprite/docs_1x/movie.png create mode 100644 resources/sprite/docs_1x/pdf.png create mode 100644 resources/sprite/docs_1x/place.png create mode 100644 resources/sprite/docs_1x/zip.png create mode 100644 resources/sprite/docs_2x/audio.png create mode 100644 resources/sprite/docs_2x/doc.png create mode 100644 resources/sprite/docs_2x/file.png create mode 100644 resources/sprite/docs_2x/image.png create mode 100644 resources/sprite/docs_2x/movie.png create mode 100644 resources/sprite/docs_2x/pdf.png create mode 100644 resources/sprite/docs_2x/place.png create mode 100644 resources/sprite/docs_2x/zip.png create mode 100644 resources/sprite/manifest/docs.json create mode 100644 webroot/rsrc/css/sprite-docs.css create mode 100644 webroot/rsrc/image/sprite-docs-X2.png create mode 100644 webroot/rsrc/image/sprite-docs.png diff --git a/resources/sprite/docs_1x/audio.png b/resources/sprite/docs_1x/audio.png new file mode 100644 index 0000000000000000000000000000000000000000..2f06fc89512559b7e7c4a6ca8771252c2bcdaf17 GIT binary patch literal 1519 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 Ps08bP0l+XkKj8#*U literal 0 HcmV?d00001 diff --git a/resources/sprite/docs_1x/file.png b/resources/sprite/docs_1x/file.png new file mode 100644 index 0000000000000000000000000000000000000000..5118a9589dce4000280f6c83c7cdc84fa1121675 GIT binary patch literal 1294 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}k|nMYCBgY=CFO}lsSJ)O z`AMk?p1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3m8Da#=fE;F*!T6 zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRu#Dg zxv3?I3Kh9IdBs*0wn|`gt@4VkK*IV;3ScEA*|tg$M@9GsC^+XAr7D=}8R#Y(m>DRT z8R{7to0yxM>nIo*7#ips80i}t=^C0_85>y{7$`u2lAVH0QA(Oskc%7CuA-DQTcwPW zk^(Dz{qpj1y>er{{GxPyLrY6bkQqisxCgqow*eWSOjjhNnfE$}v3=O8_{9OHt!~%UoJp+)JAb!m)@b$&7G&dKny0|1L z72#g21{a4^7NqJ2r55Lx7A28b|`kG;1RgHYW&Z3HgLVb()xW0e?+U{7I7;kmeZq<_Wl}8+wG9*^6u4N1^ znrInw(7)jO`WHtTqc*k+iX@-k;+7En?$M3a`+gPn3GY0{YW3JnA$_ZM@g04pD-R_< zTR8Xkc(~s=@>B4_>a|}U?>cUxcdiDLW`$Na9uoKkAgv}JTpbxBL9 zOOkJ0u|%^3W+{1`!8#xI#q^JLo0mgQ?2&c55U*EBeF+w&^zt%}~+_N{j()t&LbaY*a$-gaqwRtbhT WD_7Kfl+5-8l~A6pelF{r5}E)wvC|&_ literal 0 HcmV?d00001 diff --git a/resources/sprite/docs_1x/image.png b/resources/sprite/docs_1x/image.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1f4049198fcbd4591f30cfa498f65f9661260d GIT binary patch literal 1804 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}k|nMYCBgY=CFO}lsSJ)O z`AMk?p1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3m8Da#=fE;F*!T6 zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRu#Dg zxv3?I3Kh9IdBs*0wn|`gt@4VkK*IV;3ScEA*|tg$M@9GsC^+XAr7D=}8R#Y(m>DRT z8R{7to0yxM>nIo*7#ips80i}t=^C0_85>y{7$`u2lAVH0QA(Oskc%7CuA-DQTcwPW zk^(Dz{qpj1y>er{{GxPyLrY6bkQqisxCgqow*eWSOjjhNnfE$}v3=O8_{9OHt!~%UoJp+)JAb!m)@b$&7G&dKny0|1L z72#g21{a4^7NqJ2r55Lx7A24qDV>3fjOH(I9LstU} zb2D=bM@Kg|7Z(=`XHyfHUYGpj(%jU%5}4i;gkB?@dO-;R6c|=6sYRJ(sVQzn`MC;U z4_js8bc?AQPV=C8Q*gV*0Hy|MvFgJO+IEGZ*dNbYIBh*o%;i}K+PocAxrY#HSonOJN^wyPiSBFAYvZL#j zWwBehqFf%Fa}{v;vcOf*@ya4I-5xVVFYV2@gT0OAGiNT_KKE@<*$9`h@+A9ob7b zZ4WhkIGuW?XrY6K*r`^bgX$?!(z0T&4ht^uv3U9EpS05+F{@U^vK8H;T-`CpSXw<5 zJtL&o{VL;>lAGVc{^p}@_4}ar;3@N}Pg7TH2)Usf!uh>b_RDha$U|Bo ztJkE(v`u)iQS$Cz@n7{E*ISlnY_OD?{U&))W#7T@7G>iM@8deIGn~vOo-YBV>}9yZZ&qENgD0@~%3h68I)z;RbalMz0-ZS(`E*FKk-Si%r}5By!|hbA3!QULRKX$yQRFSte zg~=<~<)806nYzL1N?qb+@A-KTnEhs2_c9!Ki7`-?vs}2B-H?DMj5wcMV=Q&Gmox zVck8+>ED=?L-haaa8D3V*NM+~d{=R|OnLBLpR#K0nq`0HDLwP{2+GtmO zTi3K+m{ZcJviRfbbIzHjQ}bpdi5&4eEwMrmdKI;Vst09rV}X8-^I literal 0 HcmV?d00001 diff --git a/resources/sprite/docs_1x/movie.png b/resources/sprite/docs_1x/movie.png new file mode 100644 index 0000000000000000000000000000000000000000..0eb10e2e7d3f1d9ba91fa07ba967c2774276bf77 GIT binary patch literal 1531 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}k|nMYCBgY=CFO}lsSJ)O z`AMk?p1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3m8Da#=fE;F*!T6 zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRu#Dg zxv3?I3Kh9IdBs*0wn|`gt@4VkK*IV;3ScEA*|tg$M@9GsC^+XAr7D=}8R#Y(m>DRT z8R{7to0yxM>nIo*7#ips80i}t=^C0_85>y{7$`u2lAVH0QA(Oskc%7CuA-DQTcwPW zk^(Dz{qpj1y>er{{GxPyLrY6bkQqisxCgqow*eWSOjjhNnfE$}v3=O8_{9OHt!~%UoJp+)JAb!m)@b$&7G&dKny0|1L z72#g21{a4^7NqJ2r55Lx7A2a;LS$IIf%wY)XF*=5_VKVSYn`u)9ImggT@9&e4W zwR*nidFB1*zwOR{|Ndv5ddDJ-jzFD;)doC^4IX*i`BxC2u5g=6^6_dxBF=W7dko1w!WziF0mme_JLPF!9%Vu{XEUE4U^%R<{)ReV1?4{vay% zY`3QHkM15Td#>q;W_KERp9%@|Hyw@Jv0ifzv-W9K1-{RY+BVIq1^m;d1veZmzrlEZ zA>%u(qsv`ekMq?ZipprLoYj|KAZzx@{{@oCSxh*Wnw&+w8s^FuTF^-dlBn z`x%k-3kB1ro@PF`GulU|Y1I|e)8CK2H22-9YA7SBm~j>bfL#KRDs%UuW%G z$`va&{pEaic*eBbbN(2-igxh3`gTXlnqa&9pscw8ar37g*uH`3)*O)~-3&{_9~+(Y<>`Uh_YG@7Z*~Y_s?j z*W0yRFPfQMd)_dAte<&dcf*C^_=VlKh`L8 z_a%TneiK8lcQdH6nXRnWwnti>|ZA38bPud{VtF8g?L?LVOehBztSGv7JY QbwI_jr>mdKI;Vst05>sFg8%>k literal 0 HcmV?d00001 diff --git a/resources/sprite/docs_1x/pdf.png b/resources/sprite/docs_1x/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..514fb9c52bf9608ee1f7cc5c44eac78d12aa7b81 GIT binary patch literal 1540 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}k|nMYCBgY=CFO}lsSJ)O z`AMk?p1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3m8Da#=fE;F*!T6 zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRu#Dg zxv3?I3Kh9IdBs*0wn|`gt@4VkK*IV;3ScEA*|tg$M@9GsC^+XAr7D=}8R#Y(m>DRT z8R{7to0yxM>nIo*7#ips80i}t=^C0_85>y{7$`u2lAVH0QA(Oskc%7CuA-DQTcwPW zk^(Dz{qpj1y>er{{GxPyLrY6bkQqisxCgqow*eWSOjjhNnfE$}v3=O8_{9OHt!~%UoJp+)JAb!m)@b$&7G&dKny0|1L z72#g21{a4^7NqJ2r55Lx7A2j`DBS%+fCr3AP3s)zYUYGpj(%jU%5}4i;gkB4rdO-;R6c|=6sYRJ(sVQzn`MC;U z4_js8c8e)a^PqZDaJ$6}r(S(K1si=(v?4__Oeo034a5YeNKopuQ$Qs9)Vvg1r6MJJ zJJCHeH!(0URe8ENhE&|zGu_)GBv9h``w$b09`0%jTOVJyqv1UPL9IOxiuFYxn#yr=D<}V=5)ZkKrUobu)>*8kA~M;i5g6O zO$rek6&G;Wu)A9%U!EkQB>am(FQxi~B0J|B{vBLdSVlw@d{?s2WB0cG+JkPubL^iSmrXn)Q;9eD@;?~S}mM%&;Nm5ycuKLk3*H) zyx;h5ydV8xVs7#o!KZ$U4jg{XyUwMBQ~lsKYnyP7s(ox?l3km6b>9e=C>^-7sqCKj ztGa}blOUu*%)Tr W+^^zy<$D^aT=sPJb6Mw<&;$VUC_APA literal 0 HcmV?d00001 diff --git a/resources/sprite/docs_1x/place.png b/resources/sprite/docs_1x/place.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e817fcda257b565e202bce57dff739acf957f7 GIT binary patch literal 1628 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 II;Vst04lejN&o-= literal 0 HcmV?d00001 diff --git a/resources/sprite/docs_2x/file.png b/resources/sprite/docs_2x/file.png new file mode 100644 index 0000000000000000000000000000000000000000..6323e9ff787706b5dc3e637a7c2472e515b57a68 GIT binary patch literal 1566 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 Bu@L|O literal 0 HcmV?d00001 diff --git a/resources/sprite/docs_2x/movie.png b/resources/sprite/docs_2x/movie.png new file mode 100644 index 0000000000000000000000000000000000000000..216ea40fe6344bea007445b5e2a1869af7baba0a GIT binary patch literal 2181 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 b&&bA5=w!V#R;tY&)MW8=^>bP0l+XkKf_%@l literal 0 HcmV?d00001 diff --git a/resources/sprite/docs_2x/zip.png b/resources/sprite/docs_2x/zip.png new file mode 100644 index 0000000000000000000000000000000000000000..d969383650acb5977a73021bcac5b5ce16f5f595 GIT binary patch literal 2518 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hE{(JaZG%Q-e|yQz{EjrrIztFe_w+M3hAM`dB6B=jtVb)aX^@7BGN-jeSKyVsdtB zi9%9pdS;%j()-=}l@u~lY?Z=IeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~ za#KqZ6)JLb@`|l0Y?Z*~TICg6frRyy6u?SKvTcwn`Gtf;oFf&jv zGt@IQHZeCh*HJJsFf`CNFw!?P(ls=+T7#d8;`MLTPi3R$GdIlgbLHwFq;OmQDX>KlDb#X~h zD#E>34K5C;EJ)Q4N-fSWElN%eN=;J+xv9X)xhOTUB)=#mKR*W+iUAq zl|!pr{wCaF`=@qiD%-QlYuh7JVvg=_nLR0GU*iX7r!(GvoOft(KC9H#Q`xg@Yks4f z$OU&H{xYM7LH*x9{*^nl;M<&g&vOp>to^I+#QxCxwo}CFv&V`KS^2=QGLrc?D;lOU}EiEcd-gbly}Gw)(F()6RcZOx)$mXfcbS zP21)$lf;J|<_%wSyu26iY8igk<~X~JCE?OCq4OW)<-UJ&>R5JU)(3-!vTOe;9nx~D zy~A`uO6ruDu7=f()T?x~d=3O(i)Euwsc**19h z{l?TlhcDCCKe&`4f3tq$Y4do8`+jF-zwg+SUwKLDgXlxH+{`nocb*@-VYN1Q^TUWX zj?WLKrfI+BPAGrp@5Ov4W8LvL@p(Ud&3Px7Ox0SSuMonr{K64cCxf?9oE70?= z_vnST5RQcQ?%m0v_e3x5sNyt#G*?SkIVSx!o55DWX@_)0AMX2-G4cJ{i#lffKhA0$ z-!`v+`_99Nqq&<-@0s>trY~>8{r}d9>S;4Sw=_q|?|XN+w$qvI{ny3)9Ol`x3S?S} z7W(qucsyx)J(IZR%j`qBjQi`?`G;t}J(Xv$X5Ifzj+r-K{F~DvKH=5csFzC__x&t# z$^5c=o5_LRx~uDcGuixR40^PYah|5a<(%+aQ8`=oFq?jR zzJKxsvo{m9k8ETy+QxdJqv5%UL3I1K%>o-NF0_3vlr??2^~J{-xr`tD&e;~Uy1KN_ znN#Cc!OHaD)Q9 z56PrRepIPF!x?I}gdw%CWWM8lwv_JaOOO1s^@xzT*74@zzh8mwT{EVC$%tV5a`@GE z=`V9was6Kp2Db2`+Zm-k=EO6ASb6I|L%as>{PWK3o2;kh)*V z^zp#ag2Q`Q=DVn@dY|I&@UO_WX}brv(xg1o64%&6wZcnH8;;*x6?6W$b)SajF7d)u z`%XXo&3uz%ONMjD*S8H5-`;vtcyO!xl+&rfE-S?>IMzNrl)d*;pIe3l_amN}lk!z^ zoU;BgJp5~6a$w4?mdcgcx-%wy{Fk-m{|cSkw=bHtH28>Rmhetqx1Ce)l?LyLB^UJm zs(Bp^tz>&>7^u}e`x%$3Zse?`EoXP$(AH7x+l%vmn5@3`rF!3x_4);Ffz(RG{twC>>E>^nWFvsgBGOv(D|W9;&Biih)o@&bo% zZQj3S4s9+x!WekbyG2|yG*)w!wR(xt!#GvGj27M*!r=-ctZN<9)E>OLCww)(+Lt@S zSV)|q{UW!^&VA>nKAp^Yf7h2>bAwx#xGlCSHOT2sd?dR#)Q&NHwNQy@tkBv6jFFd^ zB$VCcuYR6w>t31WGUfHeN&P;ie^hiC>{tpr6Yon()66dQ zpY3;1Y}gYPxYB$s}|Sw3%?i0 z`W@;KPh4H`_Vsh7pG#i++93Zx>W|vQH~i|W4|ZuRty!h $generator->buildConpherenceSheet(), 'apps-large' => $generator->buildAppsLargeSheet(), 'tokens' => $generator->buildTokenSheet(), -// TODO: @chad: should we actually remove this? -// 'apps-xlarge' => $generator->buildAppsXLargeSheet(), + 'docs' => $generator->buildDocsSheet(), 'gradient' => $generator->buildGradientSheet(), ); diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index 755648e2d1..b4dc528588 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -497,6 +497,20 @@ celerity_register_resource_map(array( 'disk' => '/rsrc/image/sprite-conpher.png', 'type' => 'png', ), + '/rsrc/image/sprite-docs-X2.png' => + array( + 'hash' => '57d3286ce88133f3ec9240e35f6bb897', + 'uri' => '/res/57d3286c/rsrc/image/sprite-docs-X2.png', + 'disk' => '/rsrc/image/sprite-docs-X2.png', + 'type' => 'png', + ), + '/rsrc/image/sprite-docs.png' => + array( + 'hash' => 'b2b089072d6eddd831402a77c02b5736', + 'uri' => '/res/b2b08907/rsrc/image/sprite-docs.png', + 'disk' => '/rsrc/image/sprite-docs.png', + 'type' => 'png', + ), '/rsrc/image/sprite-gradient.png' => array( 'hash' => '92aebaab67dcc6baf2ea99294368d895', @@ -3455,6 +3469,15 @@ celerity_register_resource_map(array( ), 'disk' => '/rsrc/css/sprite-conpher.css', ), + 'sprite-docs-css' => + array( + 'uri' => '/res/b32f93bc/rsrc/css/sprite-docs.css', + 'type' => 'css', + 'requires' => + array( + ), + 'disk' => '/rsrc/css/sprite-docs.css', + ), 'sprite-gradient-css' => array( 'uri' => '/res/e62e7a0f/rsrc/css/sprite-gradient.css', diff --git a/src/infrastructure/celerity/CeleritySpriteGenerator.php b/src/infrastructure/celerity/CeleritySpriteGenerator.php index 5763ed4874..1fbc3a213d 100644 --- a/src/infrastructure/celerity/CeleritySpriteGenerator.php +++ b/src/infrastructure/celerity/CeleritySpriteGenerator.php @@ -256,6 +256,38 @@ final class CeleritySpriteGenerator { return $sheet; } + public function buildDocsSheet() { + $icons = $this->getDirectoryList('docs_1x'); + $scales = array( + '1x' => 1, + '2x' => 2, + ); + $template = id(new PhutilSprite()) + ->setSourceSize(32, 32); + + $sprites = array(); + $prefix = 'docs_'; + foreach ($icons as $icon) { + $sprite = id(clone $template) + ->setName($prefix.$icon) + ->setTargetCSS('.'.$prefix.$icon); + + foreach ($scales as $scale_key => $scale) { + $path = $this->getPath($prefix.$scale_key.'/'.$icon.'.png'); + $sprite->setSourceFile($path, $scale); + } + $sprites[] = $sprite; + } + + $sheet = $this->buildSheet('docs', true); + $sheet->setScales($scales); + foreach ($sprites as $sprite) { + $sheet->addSprite($sprite); + } + + return $sheet; + } + public function buildGradientSheet() { $gradients = $this->getDirectoryList('gradients'); diff --git a/webroot/rsrc/css/sprite-docs.css b/webroot/rsrc/css/sprite-docs.css new file mode 100644 index 0000000000..d6890ee9e9 --- /dev/null +++ b/webroot/rsrc/css/sprite-docs.css @@ -0,0 +1,51 @@ +/** + * @provides sprite-docs-css + * @generated + */ + +.sprite-docs { + background-image: url(/rsrc/image/sprite-docs.png); + background-repeat: no-repeat; +} + +@media +only screen and (min-device-pixel-ratio: 1.5), +only screen and (-webkit-min-device-pixel-ratio: 1.5) { + .sprite-docs { + background-image: url(/rsrc/image/sprite-docs-X2.png); + background-size: 99px 99px; + } +} + + +.docs_audio { + background-position: 0px 0px; +} + +.docs_doc { + background-position: -33px 0px; +} + +.docs_file { + background-position: -66px 0px; +} + +.docs_image { + background-position: 0px -33px; +} + +.docs_movie { + background-position: -33px -33px; +} + +.docs_pdf { + background-position: -66px -33px; +} + +.docs_place { + background-position: 0px -66px; +} + +.docs_zip { + background-position: -33px -66px; +} diff --git a/webroot/rsrc/image/sprite-docs-X2.png b/webroot/rsrc/image/sprite-docs-X2.png new file mode 100644 index 0000000000000000000000000000000000000000..01e95932eb40a63ea0f1fbe959f144da64ce8807 GIT binary patch literal 5965 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 KelF{r5}E+THVxJQ literal 0 HcmV?d00001 -- 2.54.0