/* * Artcodes recognises a different marker scheme that allows the * creation of aesthetically pleasing, even beautiful, codes. * Copyright (C) 2013-2016 The University of Nottingham * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package uk.ac.horizon.artcodes.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.List; import uk.ac.horizon.artcodes.R; import uk.ac.horizon.artcodes.databinding.ExperienceEditColourBinding; import uk.ac.horizon.artcodes.detect.Detector; import uk.ac.horizon.artcodes.process.ImageProcessor; import uk.ac.horizon.artcodes.process.RgbColourFilter; public class ExperienceEditColourFragment extends ExperienceEditFragment { @Override public int getTitleResource() { return R.string.fragment_colour; } @Nullable @Override public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final ExperienceEditColourBinding binding = ExperienceEditColourBinding.inflate(inflater, container, false); final List<ImageProcessor> presets = new ArrayList<>(); // TODO presets.add(new IntensityGreyscaler()); presets.add(new RgbColourFilter.RgbColourFilter_MixChannelsImpl(RgbColourFilter.Channel.red)); presets.add(new RgbColourFilter.RgbColourFilter_MixChannelsImpl(RgbColourFilter.Channel.green)); presets.add(new RgbColourFilter.RgbColourFilter_MixChannelsImpl(RgbColourFilter.Channel.blue)); final Detector detector = new Detector(); binding.setDetector(detector); binding.colourPresetSpinner.setAdapter(new BaseAdapter() { @Override public int getCount() { return presets.size(); } @Override public Object getItem(final int position) { return presets.get(position); } @Override public long getItemId(final int position) { return 0; } @Override public View getView(final int position, final View convertView, final ViewGroup parent) { View view = convertView; if(!(view instanceof TextView)) { view = new TextView(parent.getContext()); } ImageProcessor processor = presets.get(position); if(processor instanceof RgbColourFilter.RgbColourFilter_MixChannelsImpl) { ((TextView)view).setText(((RgbColourFilter.RgbColourFilter_MixChannelsImpl)processor).getChannel().toString()); } return view; } }); binding.colourPresetSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { // TODO } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); return binding.getRoot(); } private void savePipeline() { // TODO getExperience().getPipeline().clear(); getExperience().getPipeline().add("tile"); getExperience().getPipeline().add("detect"); } }