| /* |
| * Copyright (C) 2014 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.launcher3; |
| |
| import android.graphics.Canvas; |
| import android.graphics.ColorFilter; |
| import android.graphics.Rect; |
| import android.graphics.drawable.Drawable; |
| |
| public class BorderCropDrawable extends Drawable { |
| |
| private final Drawable mChild; |
| private final Rect mBoundsShift; |
| private final Rect mPadding; |
| |
| BorderCropDrawable(Drawable child, boolean cropLeft, |
| boolean cropTop, boolean cropRight, boolean cropBottom) { |
| mChild = child; |
| |
| mBoundsShift = new Rect(); |
| mPadding = new Rect(); |
| mChild.getPadding(mPadding); |
| |
| if (cropLeft) { |
| mBoundsShift.left = -mPadding.left; |
| mPadding.left = 0; |
| } |
| if (cropTop) { |
| mBoundsShift.top = -mPadding.top; |
| mPadding.top = 0; |
| } |
| if (cropRight) { |
| mBoundsShift.right = mPadding.right; |
| mPadding.right = 0; |
| } |
| if (cropBottom) { |
| mBoundsShift.bottom = mPadding.bottom; |
| mPadding.bottom = 0; |
| } |
| } |
| |
| @Override |
| protected void onBoundsChange(Rect bounds) { |
| mChild.setBounds( |
| bounds.left + mBoundsShift.left, |
| bounds.top + mBoundsShift.top, |
| bounds.right + mBoundsShift.right, |
| bounds.bottom + mBoundsShift.bottom); |
| } |
| |
| @Override |
| public boolean getPadding(Rect padding) { |
| padding.set(mPadding); |
| return (padding.left | padding.top | padding.right | padding.bottom) != 0; |
| } |
| |
| @Override |
| public void draw(Canvas canvas) { |
| mChild.draw(canvas); |
| } |
| |
| @Override |
| public int getOpacity() { |
| return mChild.getOpacity(); |
| } |
| |
| @Override |
| public void setAlpha(int alpha) { |
| mChild.setAlpha(alpha); |
| } |
| |
| @Override |
| public void setColorFilter(ColorFilter cf) { |
| mChild.setColorFilter(cf); |
| } |
| } |