1 // Copyright (C) 2018 The Android Open Source Project 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // TODO(hjd): Dedupe these. 16 const SLICE_HEIGHT = 32; 17 const TRACK_PADDING = 5; 18 19 /** 20 * Checker board the range [leftPx, rightPx]. 21 */ 22 export function checkerboard( 23 ctx: CanvasRenderingContext2D, leftPx: number, rightPx: number): void { 24 const widthPx = rightPx - leftPx; 25 ctx.font = '12px Google Sans'; 26 ctx.fillStyle = '#eee'; 27 ctx.fillRect(leftPx, TRACK_PADDING, widthPx, SLICE_HEIGHT); 28 ctx.fillStyle = '#666'; 29 ctx.textBaseline = 'alphabetic'; 30 ctx.fillText( 31 'loading...', 32 leftPx + widthPx / 2, 33 TRACK_PADDING + SLICE_HEIGHT / 2, 34 widthPx); 35 } 36 37 /** 38 * Checker board everything between [startPx, endPx] except [leftPx, rightPx]. 39 */ 40 export function checkerboardExcept( 41 ctx: CanvasRenderingContext2D, 42 startPx: number, 43 endPx: number, 44 leftPx: number, 45 rightPx: number): void { 46 // [leftPx, rightPx] doesn't overlap [startPx, endPx] at all: 47 if (rightPx <= startPx || leftPx >= endPx) { 48 checkerboard(ctx, startPx, endPx); 49 return; 50 } 51 52 // Checkerboard [startPx, leftPx]: 53 if (leftPx > startPx) { 54 checkerboard(ctx, startPx, leftPx); 55 } 56 57 // Checkerboard [rightPx, endPx]: 58 if (rightPx < endPx) { 59 checkerboard(ctx, rightPx, endPx); 60 } 61 } 62