From owner-p4-projects@FreeBSD.ORG Wed Aug 1 00:21:23 2012 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C00121065672; Wed, 1 Aug 2012 00:21:23 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 823DF106564A for ; Wed, 1 Aug 2012 00:21:23 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 6B6068FC12 for ; Wed, 1 Aug 2012 00:21:23 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id q710LNLn068855 for ; Wed, 1 Aug 2012 00:21:23 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id q710LNVP068852 for perforce@freebsd.org; Wed, 1 Aug 2012 00:21:23 GMT (envelope-from brooks@freebsd.org) Date: Wed, 1 Aug 2012 00:21:23 GMT Message-Id: <201208010021.q710LNVP068852@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 215204 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Aug 2012 00:21:24 -0000 http://p4web.freebsd.org/@@215204?ac=10 Change 215204 by brooks@brooks_ecr_current on 2012/08/01 00:21:21 Add a show sandboxes toggle that lets you see what areas are derived from data generated in a sandbox. Affected files ... .. //depot/projects/ctsrd/beribsd/src/ctsrd/browser/browser.c#17 edit .. //depot/projects/ctsrd/beribsd/src/ctsrd/browser/images/browser.png#5 edit Differences ... ==== //depot/projects/ctsrd/beribsd/src/ctsrd/browser/browser.c#17 (text+ko) ==== @@ -64,11 +64,17 @@ #define vred(v) fb_colour((v), 0, 0) #define vgreen(v) fb_colour(0, (v), 0) #define vblue(v) fb_colour(0, 0, (v)) +#define vyellow(v) fb_colour((v), (v), 0) +#define vcyan(v) fb_colour(0, (v), (v)) +#define vmagenta(v) fb_colour((v), 0, (v)) #define black vwhite(0) #define white vwhite(0xFF) #define red vred(0xFF) #define green vgreen(0xFF) #define blue vblue(0xFF) +#define yellow vyellow(0xFF) +#define cyan vcyan(0xFF) +#define magenta vmagenta(0xFF) /* * Each file is displayed in a 266x40 box: @@ -119,6 +125,9 @@ #define SB_MINROW (fb_height - 38) #define SB_MAXROW (fb_height - 1) +#define SB_SHOW_MINCOL 606 +#define SB_SHOW_MAXCOL 793 + /* Start offsets for browser columns */ const int colstart[] = {0, 267, 534}; @@ -179,6 +188,15 @@ { 0, 0, 0, 0 } }; +static int sbshow = 0; + +/* + * baseimage is the black and white background image with any disabled + * protection modes grayed out. After init_bgimage() runs it will not + * be modified. bgimage starts equal to baseimage and is updated as + * the sandbox mode changes and showing sandboxes is toggled. + */ +static u_int32_t *baseimage; static u_int32_t *bgimage; static u_int32_t *icons; static magic_t magic; @@ -433,7 +451,10 @@ bgimage = malloc(sizeof(u_int32_t) * fb_height * fb_width); if (bgimage == NULL) err(1, "malloc"); - read_png_file(BASEIMG, bgimage, fb_width, fb_height); + baseimage = malloc(sizeof(u_int32_t) * fb_height * fb_width); + if (baseimage == NULL) + err(1, "malloc"); + read_png_file(BASEIMG, baseimage, fb_width, fb_height); for (sb = 0; sbdata[sb].sbtype != 0; sb++) { if (sbdata[sb].enabled) @@ -441,10 +462,13 @@ for (j = SB_MINROW; j < SB_MAXROW; j++) { for (i = sbdata[sb].bcol; i <= sbdata[sb].ecol; i++) { pixel = (j * fb_width) + i; - bgimage[pixel] = vwhite(((bgimage[pixel] >> 24) & 0xFF) / 2); + baseimage[pixel] = vwhite( + ((baseimage[pixel] >> 24) & 0xFF) / 2); } } } + + memcpy(bgimage, baseimage, sizeof(u_int32_t) * fb_height * fb_width); } static void @@ -464,22 +488,33 @@ for (j = SB_MINROW; j < SB_MAXROW; j++) { for (i = SB_MINCOL; i <= SB_MAXCOL; i++) { pixel = (j * fb_width) + i; - if (bgimage[pixel] != black) { - /* XXX: Assuming we're either blue or white */ - value = (bgimage[pixel] >> 24) & 0xFF; - if (value == 0) { - printf("unexpected zero value, pixel %08x\n", - bgimage[pixel]); - value = 0xff; - } + if (baseimage[pixel] != black) { + value = (baseimage[pixel] >> 24) & 0xFF; bgimage[pixel] = (i >= bcol && i <= ecol) ? vblue(value) : vwhite(value); } } + for (i = SB_SHOW_MINCOL; i <= SB_SHOW_MAXCOL; i++) { + pixel = (j * fb_width) + i; + if (bgimage[pixel] != black) { + value = (baseimage[pixel] >> 16) & 0xFF; + bgimage[pixel] = (sbtype == SB_NONE) ? + vwhite(value / 2) : (sbshow ? + vyellow(value) : vwhite(value)); + } + } } fb_post(bgimage); } +static void +toggle_sbshow(void) +{ + + sbshow = (sbshow + 1) % 2; + update_sandbox(sbtype); +} + static const char * get_desc(int dfd, struct dirent *entry) { @@ -555,6 +590,10 @@ fb_post_region(textbuf, colstart[(s/NROW)] + TEXT_OFFSET, FROW + (RHEIGHT * (s % NROW)) + BORDER, TEXTSPACE, CHAR_HEIGHT); + if (sbshow && sbtype != SB_NONE) + fb_fill_region(yellow, colstart[(s/NROW)] + BORDER - 1, + FROW + (RHEIGHT * (s % NROW)) + BORDER - 1, + ICON_WH + 2, ICON_WH + 2); fb_post_region(icon, colstart[(s/NROW)] + BORDER, FROW + (RHEIGHT * (s % NROW)) + BORDER, ICON_WH, ICON_WH); } @@ -595,7 +634,8 @@ } else { if (ts->ts_x1 >= SB_MINCOL && ts->ts_x1 <= SB_MAXCOL) { - for (i =0 ; ts->ts_x1 < sbdata[i].bcol || + for (i = 0; + ts->ts_x1 < sbdata[i].bcol || ts->ts_x1 > sbdata[i].ecol; i++) /* do nothing */; assert(sbdata[i].sbtype != 0); @@ -605,6 +645,11 @@ update_sandbox(sbdata[i].sbtype); return (ACT_REFRESH); } + if (ts->ts_x1 >= SB_SHOW_MINCOL && + ts->ts_x1 <= SB_SHOW_MAXCOL) { + toggle_sbshow(); + return (ACT_REFRESH); + } } } else if(ts->ts_gesture == TSG2_ZOOM_OUT) { if (ts->ts_count != 0) ==== //depot/projects/ctsrd/beribsd/src/ctsrd/browser/images/browser.png#5 (text+ko) ==== @@ -1,10 +1,46 @@ PNG  --2?#9&@|O*""-,R{'"V[P{@-駟(:g?Vlٲxn61hР8Sg?Y\{1k֬={vlV1cƌ뮻hkkkcԨQ%ëbvmF۶m?>F iK g]v|UW]U /ܠ j-(\Zf^{ꍞ47t|#3 _ԁX̞{N;JwqGJ)U~R}7|s֣pdܹH={LӧOO)+qD)oBkqGEl6fΜGɓ'odSOEDM4ȽWvaeZlY\veGeee 0 w7uXSRJ/5k{ưΗ`?8#saz+<gyfq;E]Tl׺uFt%LoF׿I&?.]{`^fNJ8nݺŔ)Sb裏Ɣ)SK.$z[L:5F555KV<087n\u濦Xp[l_~ylqg[ne]vѯ_{c…7ztE?СC\yqW>unO{l|qWrǀbРAFfbm۶??w;C̜93&L㥗^3-[%\-o1g8# +2<[̟??FvUc+~8ꨣ_!C稣#<2F>`qx{quEƍO o}[1cƌxGbذape]⬳Ί^zEeee{o7'ZD|qYo{ưVLVw V~ߦR1bDqع瞛RJN\sMҁaÆ3M48nſ?ty>S%\ưV[G}lٳg~w?,[|yO?4kn]u,ԧ~RZqŔ)SJhѢtGLwꩧ۴ifJ[-Z;/Ғ%KU%X9?un睊I)4vد4c=6-]?i.J%ĉS׮]Lװa /r9+?}`MHL)t]bV-S-J'NLַR6mR޽ӿRJӦM+y - ~%*@r6k#|Gֶ6m>쳔RJ]w]jREEEҥK/~Q.ݺu+NS iO}I[ou߿z7RJ)3tWR=ztիWjذajڴi߿9sfJ)N:ؾ>6XW /Nd8D)6v 7ܐSV>(٬wcCя~3gΌN:ū=z(io~3hԨQ+q뭷FĊˋ -P 4iiӦ\7Ka^xa~1{'OKFuuu|.{1}zoRX}p>{wmEEEO-Zr6e_eo 4-ZQޛnnnkoB/W{eĊGYG[o5n+_.yg&LHCc,XtEo[lYl߰a؇+ 8(ӥKq{麮cᑢ:u*M81ґGYgza}vu⺤W_>nl: N)ӧaÆG}4͘18|Ĉδ_}>`K4eʔ4gΜ㏧R?YoW~ '|>4dȐtW{8O`sMw^:th߆[nX}*M<9CMC IӧOO˗//ZSJԷo6m߄6VޟEp@q=z(Oz RJM!HD-Ze~{jԨQ4~zZdIڕiuƧ7tSzK׸qg3&}kr_뺎)$"%\Rlr\ No newline at end of file +++9_sȑ#kjժ)66VӺu 6T +BΓ 6h߾} +B_4ibk֬lݺn))Icƌ zēЌ$r-… _͓yIz%I23}g.]z~%I]vuQJٳuQI9GJo~,Y2`>*V!CüwG^xᅐJN8QRλA*U*+ Sjjv0>;)ߩ.[l?+.#+sʗ/O7|(Qo+uP߾}:য়~ +nȧ@$TRſHZZeggܹs'k$YJ {6lhaaaV~}_jf9@'%%$Dûuf7fftR֭UPZliv͟rʖif9MڵRJYƍ?˗h. +^.=j6l7ЂƶmۂZ*+ Ma6GOF +[ʕ+I'NXZZ]wuV~}4hܹ̞  ^{ըQ#߲|r3++#+/k*ժUw}^XbyV3n-h|`ff?(߱,8d[FF۷ώ?Y>zh33~8ѣG-55^xᅐw_tMflYſ7_6qwfʕm߾}ff6|xJ*Ur7TW^yr$Fw(n喀irԭ[7ok({7.. ǽp'LA1˹uӿy+ .MQ6Gٲe1˨Qǚ4irW_}effCPׯ_ƌcff?o53?0)w?΁žcg@B}L<J^, B<ȑ#G/ܝm? rIsqkԨQ!P~mtvwϬ܎9b?~(>[mr]3gÊ럷eʔ1)u. ӏ?z/gffֺuB틄{WNlٲ-`u/wرߝ_zzz |qYf>}jA^$GNzVJy_|-Wr}??~ȳ˗@YZ5/_^f*|˖-өS h׮]ֱQFrz+Ƈرc*S6ltEEE +婧w97鬬,رC*SLw>Dg֒%K +8JHrry"͛*w{n?~<|ǎ͛5k滎K/T+Vz&Ѫ[$̂Zt86ޒ.Ny?{Ws-ܢ'j̙Aӹ7E8_֬Y]*>>@Ӈi + SjjZT5dh!d޽ڶmjԨryYYY!/¥Q)3vXkȑZ+++K ,رc5y<>α%J;>U=zNP؟K'NRA9rDwuW5j9sz9rj +nݪ6mڨ\rѣ$O?-P}5j{GGO͙3GׯҥKUjUtyӕ.]:iʗ/5j(,,,d=*U$)Cu_Կ0s6A6mR>}ZݺuS=teiȐ!ׯ| +s4IRʕ2an? ?Sۻw222t%h?~p I9SN!OkVqqq/jժ3.3sGyD}Ucwoqxl4p@M2%nI9=zhI9?O +#e˪N:!S:.s;ufϞٳgKT1coC=ѣG`+9/lcΝ*))IuQݺu5m4bz̙4hڵkݻԩS~gbf,)߼ 7СCE߾}զM8p@W\qEwY T3_ddVݻwMP"##.wgsK9sZjƍkzu֭[5aM0Aaaaѣf͚/;9 v?W|7]vr.w^s5!ǷhBƍUT)ر\û[5e+E|l"33S>$iĈL}Sؿ%55USN$jJ$7NR·{4ORԾ}{Iy!HJJ +9[nK+JAA;" UVB<#z!3icccVcra'N03+"`={YN')͚5 WBz~}͛uaÆ?T @EF}4hrmذ̂; jѢ++X + +} +Zjr{ꩧeo|Uݻ,9P-\}vΟ??ϝ;,[M6yk׮%of9nͫ I9m(9֢E 3iuiӦ𰰰bرfK3?\ʗ/_-IEի}'-X dǧ裏}znflͫu@'EQcs/k5w111ffPa[{gs4i.\hfM{:zhPzͫ߭4lԱ_ +VFFFPӟ,MX5k w+)))r7{6 . %<