1 package mhr.appandroid.views.imagepresentationview;
3 import java.util.ArrayList;
4 import java.util.LinkedList;
6 import mhr.appandroid.R;
7 import mhr.appandroid.adapters.APDBitmap;
8 import mhr.appandroid.views.MaskView;
9 import mhr.appandroid.views.imagepresentationview.ImagePresentationEvent.EventType;
10 import mhr.appandroid.views.imagepresentationview.LayerView.OnLayerViewEventListener;
11 import mhr.appandroid.views.imagepresentationview.LayerView.SelectedState;
12 import mhr.appandroid.views.imagepresentationview.MasterMaskView.OnMasterMaskEventListener;
13 import mhr.appcore.image.ImageSelectedState;
14 import mhr.appcore.image.layers.LayerPDInfo;
15 import mhr.appcore.image.layers.LayerType;
16 import mhr.appcore.interfaces.PDImageDataPresentation;
17 import android.app.Activity;
18 import android.content.Context;
19 import android.content.res.Resources;
20 import android.graphics.Rect;
21 import android.util.AttributeSet;
22 import android.view.DragEvent;
23 import android.view.MenuItem;
24 import android.view.View;
25 import android.view.View.OnClickListener;
26 import android.view.View.OnDragListener;
27 import android.widget.Button;
28 import android.widget.FrameLayout;
29 import android.widget.LinearLayout;
30 import android.widget.PopupMenu;
31 import android.widget.SeekBar;
32 import android.widget.PopupMenu.OnMenuItemClickListener;
33 import android.widget.SeekBar.OnSeekBarChangeListener;
34 import android.widget.TextView;
37 OnMenuItemClickListener {
72 super(context, attrs);
77 super(context, attrs, defStyle);
98 int reqViewsCount = layers.size();
99 int deltaViews = avViewsCount - reqViewsCount;
100 if (deltaViews > 0) {
101 for (
int i = 0; i < deltaViews; i++) {
105 deltaViews = -deltaViews;
106 for (
int i = 0; i < deltaViews; i++) {
113 for (
int i = 0; i < reqViewsCount; i++) {
165 ((Activity) getContext()).getLayoutInflater().inflate(
R.layout.view_image_presentation,
this,
true);
166 }
catch (ClassCastException exc) {
168 TextView tv =
new TextView(getContext());
169 tv.setText(
"Prewiew not available, requires Activity to be Context.");
174 createLayerBtn = (Button) findViewById(
R.id.ImageLayersViewCreateLayerBtn);
175 mergeLayersBtn = (Button) findViewById(
R.id.ImageLayersViewMergeLayersBtn);
189 Resources r = getResources();
191 int size = r.getDimensionPixelSize(
R.dimen.LayerThumbSize) - 2 * r.getDimensionPixelSize(
R.dimen.LayerThumbPadding);
197 popup.inflate(
R.menu.view_image_structure);
198 popup.setOnMenuItemClickListener(
this);
266 public boolean onDrag(View v, DragEvent event) {
267 int action =
event.getAction();
268 switch (event.getAction()) {
269 case DragEvent.ACTION_DRAG_STARTED:
272 case DragEvent.ACTION_DRAG_LOCATION: {
273 View dragged = (View) event.getLocalState();
275 int h = dragged.getHeight();
276 int posOld = oldIndex * h + h / 2;
277 int posNew = (int) event.getY();
278 int newIndex = oldIndex + (posNew - posOld) / h;
279 if (oldIndex != newIndex) {
286 case DragEvent.ACTION_DROP: {
287 View dragged = (View) event.getLocalState();
289 int h = dragged.getHeight();
290 int posOld = oldIndex * h + h / 2;
291 int posNew = (int) event.getY();
292 int newIndex = oldIndex + (posNew - posOld) / h;
293 if (oldIndex != newIndex) {
306 case DragEvent.ACTION_DRAG_ENDED:
308 View dragged = (View) event.getLocalState();
329 case LAYER_DUPLICATED:
336 case LAYER_MASK_SELECTED:
382 case MASTER_MASK_APPLIED_CHANGED:
384 case MASTER_MASK_SELECTED:
400 final int id = item.getItemId();
401 if (
id ==
R.id.CreateRasterLayerPopUp) {
403 }
else if (
id ==
R.id.CreateColorLayerPopUp) {
405 }
else if (
id ==
R.id.BrightnessLUTLayerPopUp) {
407 }
else if (
id ==
R.id.ContrastLUTLayerPopUp) {
409 }
else if (
id ==
R.id.GammaLUTLayerPopUp) {
411 }
else if (
id ==
R.id.CurvesLUTLayerPopUp) {
413 }
else if (
id ==
R.id.GaussianBlurFilterLayerPopUp) {
415 }
else if (
id ==
R.id.LaplaceSharpenFilterLayerPopUp) {
417 }
else if (
id ==
R.id.GaussianSharpenFilterLayerPopUp) {
419 }
else if (
id ==
R.id.LaplacianOfGaussianSharpenFilterLayerPopUp) {
421 }
else if (
id ==
R.id.DifferenceOfGaussianSharpenFilterLayerPopUp) {