package com.example.asamles.app.imageedit;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.IconButton;
import android.widget.SeekBar;
import com.example.asamles.app.R;
import com.example.asamles.app.imageedit.utils.CropperFragment;
import com.example.asamles.app.imageedit.utils.FilterFragment;
import com.example.asamles.app.imageedit.utils.ImageEditor;
import com.example.asamles.app.imageedit.utils.OkFragmentListener;
import com.example.asamles.app.imageedit.utils.RotateFragment;
import com.example.asamles.app.imageedit.utils.SeekbarFragment;
public class HorizontalBar extends Fragment implements SeekbarFragment.SeekbarFragmentListener {
private String[] name;
private int value = 50;
private float index;
private Bitmap bitmap, mainBitmap;
private int type;
private float changedValue;
private ImageEditor imageEditor;
public static HorizontalBar newInstance() {
return new HorizontalBar();
}
public HorizontalBar() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
name = getActivity().getResources().getStringArray(R.array.seek_list);
// mainBitmap = ((BitmapDrawable)ImageEditMain.imageView.getDrawable()).getBitmap();
// mainBitmap = mainBitmap.copy(mainBitmap.getConfig(), true);
View rootView = inflater.inflate(R.layout.imageedit_horizontal_scroll, container, false);
setButtons(rootView);
return rootView;
}
private void setButtons(View view) {
IconButton brightnessButton = (IconButton) view.findViewById(R.id.brightness);
brightnessButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
type = 0;
index = 255 / 50;
openSeekbar(name[type], value);
}
});
IconButton contrastButton = (IconButton) view.findViewById(R.id.contrast);
contrastButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
type = 1;
index = (float) 1 / 50;
openSeekbar(name[type], value);
}
});
IconButton saturationButton = (IconButton) view.findViewById(R.id.saturation);
saturationButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
type = 2;
index = (float) 1 / 50;
openSeekbar(name[type], value);
}
});
IconButton rotateButton = (IconButton) view.findViewById(R.id.rotate);
rotateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openRotate();
}
});
IconButton cropButton = (IconButton) view.findViewById(R.id.crop);
cropButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openCrop();
}
});
IconButton filterButton = (IconButton) view.findViewById(R.id.filter);
filterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openFilter();
}
});
IconButton stickerButton = (IconButton) view.findViewById(R.id.sticker);
stickerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
public void openSeekbar(String name, int value) {
mainBitmap = ((BitmapDrawable) ImageEditMain.imageView.getDrawable()).getBitmap();
imageEditor = new ImageEditor(mainBitmap);
// mainBitmap = mainBitmap.copy(mainBitmap.getConfig(), true);
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.flip_enter, R.anim.flip_exit, R.anim.flip_enter, R.anim.flip_exit);
SeekbarFragment fragment = SeekbarFragment.newInstance(name, value);
fragment.setOkFragmentListener(new OkFragmentListener() {
@Override
public void onDone(String tag) {
getActivity().getSupportFragmentManager().popBackStack();
}
});
fragment.setSeekbarFragmentListener(this);
ft.replace(R.id.bottomLayout, fragment);
ft.addToBackStack("seekbar");
ft.commit();
}
public void openFilter() {
// mainBitmap = ((BitmapDrawable)ImageEditMain.imageView.getDrawable()).getBitmap();
// mainBitmap = mainBitmap.copy(mainBitmap.getConfig(), true);
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.flip_enter, R.anim.flip_exit, R.anim.flip_enter, R.anim.flip_exit);
FilterFragment fragment = FilterFragment.newInstance();
fragment.setOkFragmentListener(new OkFragmentListener() {
@Override
public void onDone(String tag) {
getActivity().getSupportFragmentManager().popBackStack();
}
});
ft.replace(R.id.bottomLayout, fragment);
ft.addToBackStack("filter");
ft.commit();
}
public void openRotate() {
// mainBitmap = ((BitmapDrawable)ImageEditMain.imageView.getDrawable()).getBitmap();
// mainBitmap = mainBitmap.copy(mainBitmap.getConfig(), true);
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.flip_enter, R.anim.flip_exit, R.anim.flip_enter, R.anim.flip_exit);
RotateFragment fragment = RotateFragment.newInstance();
fragment.setOkFragmentListener(new OkFragmentListener() {
@Override
public void onDone(String tag) {
getActivity().getSupportFragmentManager().popBackStack();
}
});
ft.replace(R.id.bottomLayout, fragment);
ft.addToBackStack("rotate");
ft.commit();
}
public void openCrop() {
// mainBitmap = ((BitmapDrawable)ImageEditMain.imageView.getDrawable()).getBitmap();
// mainBitmap = mainBitmap.copy(mainBitmap.getConfig(), true);
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
// ft.setCustomAnimations(R.anim.flip_enter, R.anim.flip_exit, R.anim.flip_enter, R.anim.flip_exit);
CropperFragment fragment = CropperFragment.newInstance("Rotate", 50);
fragment.setOkFragmentListener(new OkFragmentListener() {
@Override
public void onDone(String tag) {
getActivity().getSupportFragmentManager().popBackStack();
}
});
ft.replace(R.id.container, fragment);
ft.addToBackStack("cropper");
ft.commit();
}
@Override
public void onSeekbarFragmentStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onSeekbarFragmentStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onSeekbarFragmentProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
bitmap = changeBitmap(seekBar.getProgress());
updateImage(bitmap);
}
private Bitmap changeBitmap(int progress) {
Bitmap bitmap = mainBitmap;
switch (type) {
case 0:
changedValue = (float) (progress - 50) * index;
bitmap = imageEditor.onBrightness(mainBitmap, changedValue);
break;
case 1:
changedValue = (float) (progress - 50) * index + 1;
bitmap = ImageEditor.onContrast(mainBitmap, changedValue);
break;
case 2:
changedValue = (float) (progress - 50) * index + 1;
bitmap = ImageEditor.onSaturation(mainBitmap, changedValue);
break;
}
return bitmap;
}
private void updateImage(Bitmap bitmap) {
ImageEditMain.imageView.setImageBitmap(bitmap);
ImageEditMain.mAttacher.update();
}
}