gitsvn преди 15 години
родител
ревизия
3f4a37ffd0
променени са 60 файла, в които са добавени 2861 реда и са изтрити 0 реда
  1. 7
    0
      EasyBracketing/EasyBracketing/EasyBracketing/.classpath
  2. 33
    0
      EasyBracketing/EasyBracketing/EasyBracketing/.project
  3. 24
    0
      EasyBracketing/EasyBracketing/EasyBracketing/AndroidManifest.xml
  4. 11
    0
      EasyBracketing/EasyBracketing/EasyBracketing/default.properties
  5. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/bg.png
  6. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/bg_about.png
  7. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/btn_default_normal.png
  8. 32
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/btn_fs.xml
  9. 29
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/dropdown_fs.xml
  10. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/exposureicon_frame.png
  11. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/exposureicon_symb_black.png
  12. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/exposureicon_symb_white.png
  13. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassbg_black.png
  14. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassbutton_disabled.9.png
  15. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassbutton_focused.9.png
  16. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassbutton_normal.9.png
  17. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassbutton_pressed.9.png
  18. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassdropdown_focused.9.png
  19. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassdropdown_normal.9.png
  20. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassdropdown_pressed.9.png
  21. 10
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/gradient_view.xml
  22. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/icon.png
  23. 37
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/z_selector_background.xml
  24. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/z_selector_background_focused.9.png
  25. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/z_selector_background_pressed.9.png
  26. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/bg.png
  27. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/bg_about.png
  28. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/exposureicon_frame.png
  29. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/exposureicon_symb_black.png
  30. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/exposureicon_symb_white.png
  31. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/icon.png
  32. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/bg.png
  33. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/bg_about.png
  34. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/exposureicon_frame.png
  35. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/exposureicon_symb_black.png
  36. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/exposureicon_symb_white.png
  37. Двоични данни
      EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/icon.png
  38. 60
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/layout/about_dialog.xml
  39. 351
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/layout/main.xml
  40. 52
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/layout/settings.xml
  41. 57
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/layout/userguide_dialog.xml
  42. 6
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/menu/mainmenu.xml
  43. 102
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/values-de/strings.xml
  44. 20
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/values/attrs.xml
  45. 13
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/values/colors.xml
  46. 94
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/values/strings.xml
  47. 109
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/values/strings_notrans.xml
  48. 62
    0
      EasyBracketing/EasyBracketing/EasyBracketing/res/values/styles.xml
  49. 159
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/DialogFactory.java
  50. 57
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/EVFormula.java
  51. 312
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/EasyBracketMain.java
  52. 67
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/components/ApertureSpinner.java
  53. 94
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/components/ShutterSpeedSpinner.java
  54. 76
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/components/XSpinner.java
  55. 111
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/components/XTextView.java
  56. 208
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/resultlist/Exposure.java
  57. 255
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/resultlist/ExposureAdapter.java
  58. 199
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/resultlist/ExposureFactory.java
  59. 78
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/resultlist/ExposureIconFactory.java
  60. 136
    0
      EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/settings/SettingsDlg.java

+ 7
- 0
EasyBracketing/EasyBracketing/EasyBracketing/.classpath Целия файл

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry kind="output" path="bin"/>
</classpath>

+ 33
- 0
EasyBracketing/EasyBracketing/EasyBracketing/.project Целия файл

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>EasyBracketing</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

+ 24
- 0
EasyBracketing/EasyBracketing/EasyBracketing/AndroidManifest.xml Целия файл

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="ch.spherIC"
android:versionCode="1"
android:versionName="0.9.0">
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@style/GlassTheme">
<activity
android:name=".EasyBracketMain"
android:label="@string/app_name">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk
android:minSdkVersion="4" />
</manifest>

+ 11
- 0
EasyBracketing/EasyBracketing/EasyBracketing/default.properties Целия файл

@@ -0,0 +1,11 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.

# Project target.
target=android-4

Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/bg.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/bg_about.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/btn_default_normal.png Целия файл


+ 32
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/btn_fs.xml Целия файл

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2008 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.
-->

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- item
android:state_window_focused="false"
android:drawable="@drawable/glassbutton_normal" /-->
<item
android:state_pressed="true"
android:drawable="@drawable/glassbutton_pressed" />
<item
android:state_enabled="false"
android:drawable="@drawable/glassbutton_disabled" />
<item
android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/glassbutton_focused" />
<item
android:drawable="@drawable/glassbutton_normal" />
</selector>


+ 29
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/dropdown_fs.xml Целия файл

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2008 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.
-->

<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_window_focused="false"
android:drawable="@drawable/glassdropdown_normal" />
<item
android:state_pressed="true"
android:drawable="@drawable/glassdropdown_pressed" />
<item
android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/glassdropdown_focused" />
<item
android:drawable="@drawable/glassdropdown_normal" />
</selector>


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/exposureicon_frame.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/exposureicon_symb_black.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/exposureicon_symb_white.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassbg_black.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassbutton_disabled.9.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassbutton_focused.9.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassbutton_normal.9.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassbutton_pressed.9.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassdropdown_focused.9.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassdropdown_normal.9.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/glassdropdown_pressed.9.png Целия файл


+ 10
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/gradient_view.xml Целия файл

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#20000000"
android:centerColor="@color/black"
android:endColor="#20000000"
android:angle="0" />
</shape>

Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/icon.png Целия файл


+ 37
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/z_selector_background.xml Целия файл

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">

<item
android:state_window_focused="false"
android:drawable="@android:color/transparent" />

<!--
Even though these two point to the same resource, have two states so
the drawable will invalidate itself when coming out of pressed state.
-->
<item
android:state_focused="true"
android:state_enabled="false"
android:state_pressed="true"
android:drawable="@drawable/z_selector_background_pressed" />
<item
android:state_focused="true"
android:state_enabled="false"
android:drawable="@drawable/z_selector_background_focused" />

<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/z_selector_background_pressed" />
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/z_selector_background_pressed" />

<item
android:state_focused="true"
android:drawable="@drawable/z_selector_background_focused" />


</selector>

Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/z_selector_background_focused.9.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-hdpi/z_selector_background_pressed.9.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/bg.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/bg_about.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/exposureicon_frame.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/exposureicon_symb_black.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/exposureicon_symb_white.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-ldpi/icon.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/bg.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/bg_about.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/exposureicon_frame.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/exposureicon_symb_black.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/exposureicon_symb_white.png Целия файл


Двоични данни
EasyBracketing/EasyBracketing/EasyBracketing/res/drawable-mdpi/icon.png Целия файл


+ 60
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/layout/about_dialog.xml Целия файл

@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:padding="10dp"
android:layout_height="fill_parent"
android:background="@drawable/bg_about"
android:orientation="vertical"
android:id="@+id/layout_AboutRoot">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/layout_aboutVersion">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dip"
android:id="@+id/about_imageAppIcon" />

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/layout_aboutVersionText"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:text="iii"
android:id="@+id/about_TextDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:text="iii"
android:id="@+id/about_TextVersion"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
<TextView
android:text="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/about_TextAutor"
android:textColor="@color/black"
android:paddingBottom="20dip"
android:paddingTop="20dip"></TextView>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_fs"
android:id="@+id/btn_AboutClose"
android:textColor="@color/white"
android:layout_gravity="center_horizontal"
android:text="@string/BtnClose">
</Button>

</LinearLayout>

+ 351
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/layout/main.xml Целия файл

@@ -0,0 +1,351 @@
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/bg"
android:id="@+id/TableLayout"
xmlns:spherIC="http://schemas.android.com/apk/res/ch.spherIC">
<ch.spherIC.components.XTextView
android:autoText="false"
android:text="@string/dynamic_range"
android:id="@+id/Title_DynamicRange"
android:scrollbarAlwaysDrawVerticalTrack="false"
android:textColor="@color/white"
android:visibility="visible"
android:paddingBottom="1dip"
android:paddingLeft="3dip"
android:paddingTop="1dip"
android:textStyle="bold"
android:background="@drawable/glassbg_black"
android:layout_width="wrap_content"
spherIC:drawBorderWidth="3dip"
spherIC:drawBorderColor="@color/white"
spherIC:drawBorder="true"
android:layout_height="wrap_content"
android:layout_marginTop="2dip" />
<TextView
android:id="@+id/Title_DarkPoint"
android:text="@string/dark_point"
android:textColor="@color/black"
android:textStyle="bold"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textSize="13dip"
android:layout_marginLeft="3dip"></TextView>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Row_DarkPoint">
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:id="@+id/Row_DP_Shutter">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:text="@string/shutter_speed"
android:id="@+id/Label_DP_Shutter"
android:layout_gravity="center_vertical"
android:textSize="13dip"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"></TextView>
<ch.spherIC.components.ShutterSpeedSpinner
android:layout_width="wrap_content"
android:id="@+id/Spinner_DP_Shutter"
android:layout_gravity="center_vertical"
android:layout_weight="2"
android:entries="@array/ShutterSpeeds"
android:paddingBottom="1dip"
android:paddingTop="1dip" android:background="@drawable/dropdown_fs"/>
<TextView
android:background="@color/yellow"
android:text="@string/ev"
android:textSize="20dip"
android:textStyle="bold"
android:gravity="bottom|center_horizontal"
android:layout_gravity="bottom"
android:layout_marginRight="3dip"
android:layout_marginLeft="10dip"
android:id="@+id/Text_EV_DP"></TextView>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Row_DP_Aperture">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:layout_marginLeft="10dip"
android:id="@+id/Label_DP_Aperture"
android:text="@string/aperture"
android:layout_gravity="center_vertical"
android:textSize="13dip"></TextView>
<ch.spherIC.components.ApertureSpinner
android:layout_width="wrap_content"
android:layout_weight="2"
android:background="@drawable/dropdown_fs"
android:layout_gravity="center_vertical"
android:entries="@array/Apertures"
android:id="@+id/Spinner_DP_Aperture"
android:paddingBottom="1dip"
android:paddingTop="1dip" />
<TextView
android:background="@color/yellow"
android:text="16"
android:textStyle="bold"
android:gravity="top|center_horizontal"
android:textSize="20dip"
android:layout_gravity="top"
android:layout_marginRight="3dip"
android:layout_marginLeft="10dip"
android:id="@+id/Text_EVVal_DP"></TextView>
</TableRow>
<View
android:layout_height="2dip"
android:layout_marginTop="2dip"
android:layout_width="fill_parent"
android:background="@drawable/gradient_view" />
<TextView
android:id="@+id/Title_DarkPoint"
android:textColor="@color/black"
android:textStyle="bold"
android:layout_marginLeft="3dip"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textSize="13dip"
android:text="@string/bright_point"
android:layout_marginTop="3dip"></TextView>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Row_BrightPoint">
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:id="@+id/Row_BP_Shutter">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:text="@string/shutter_speed"
android:layout_marginLeft="10dip"
android:id="@+id/Label_DP_Shutter"
android:layout_gravity="center_vertical"
android:textSize="13dip"></TextView>
<ch.spherIC.components.ShutterSpeedSpinner
android:layout_width="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="2"
android:background="@drawable/dropdown_fs"
android:entries="@array/ShutterSpeeds"
android:paddingBottom="1dip"
android:paddingTop="1dip"
android:id="@+id/Spinner_BP_Shutter" />
<TextView
android:background="@color/yellow"
android:text="@string/ev"
android:textSize="20dip"
android:textStyle="bold"
android:gravity="bottom|center_horizontal"
android:layout_gravity="bottom"
android:layout_marginRight="3dip"
android:layout_marginLeft="10dip"
android:id="@+id/Text_EV_BP"></TextView>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Row_BP_Aperture">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:layout_marginLeft="10dip"
android:id="@+id/Label_DP_Aperture"
android:text="@string/aperture"
android:layout_gravity="center_vertical"
android:textSize="13dip"></TextView>
<ch.spherIC.components.ApertureSpinner
android:layout_width="wrap_content"
android:layout_weight="2"
android:background="@drawable/dropdown_fs"
android:layout_gravity="center_vertical"
android:entries="@array/Apertures"
android:paddingBottom="1dip"
android:paddingTop="1dip"
android:id="@+id/Spinner_BP_Aperture" />
<TextView
android:background="@color/yellow"
android:text="16"
android:textStyle="bold"
android:gravity="top|center_horizontal"
android:textSize="20dip"
android:layout_gravity="top"
android:layout_marginRight="3dip"
android:layout_marginLeft="10dip"
android:id="@+id/Text_EVVal_BP"></TextView>
</TableRow>
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_marginTop="2dip"
android:background="@drawable/gradient_view" />
<ch.spherIC.components.XTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoText="false"
android:id="@+id/Title_CalcParams"
android:scrollbarAlwaysDrawVerticalTrack="false"
android:visibility="visible"
android:paddingTop="1dip"
android:textStyle="bold"
android:text="@string/calcParams"
android:textColor="@color/white"
android:paddingLeft="3dip"
android:layout_marginTop="3dip"
android:paddingBottom="1dip"
android:background="@drawable/glassbg_black"
spherIC:drawBorderWidth="3dip"
spherIC:drawBorderColor="@color/white"
spherIC:drawBorder="true" />
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Row_DeltaEV">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:text="@string/delta_EV"
android:layout_marginLeft="10dip"
android:id="@+id/label_deltaEV"
android:textSize="13dip"></TextView>
<TextView
android:background="@color/yellow"
android:text="16"
android:textStyle="bold"
android:gravity="top|center_horizontal"
android:textSize="20dip"
android:layout_gravity="top"
android:layout_marginRight="3dip"
android:layout_weight="1"
android:layout_marginTop="2dip"
android:id="@+id/label_deltaEV_Val"
android:layout_marginBottom="1dip"></TextView>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Row_calcP_Aperture"
android:paddingTop="2dip">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:layout_marginLeft="10dip"
android:id="@+id/label_calcP_Aperture"
android:text="@string/aperture"
android:layout_gravity="center_vertical"
android:textSize="13dip"></TextView>
<ch.spherIC.components.ApertureSpinner
android:layout_width="wrap_content"
android:layout_weight="2"
android:background="@drawable/dropdown_fs"
android:layout_gravity="center_vertical"
android:paddingBottom="1dip"
android:paddingTop="1dip"
android:entries="@array/Apertures"
android:id="@+id/Spinner_calcP_Aperture" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:background="@drawable/btn_fs"
android:textColor="@color/white"
android:id="@+id/Btn_Reset"
android:text="@string/reset"
android:paddingBottom="1dip"
android:paddingTop="1dip"></Button>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Row_calcP_Aperture"
android:paddingTop="2dip">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/black"
android:layout_marginLeft="10dip"
android:layout_gravity="center_vertical"
android:id="@+id/label_calcP_ExpStep"
android:text="@string/expEVStep"
android:textSize="13dip"></TextView>
<ch.spherIC.components.XSpinner
android:layout_width="wrap_content"
android:layout_weight="2"
android:background="@drawable/dropdown_fs"
android:layout_gravity="center_vertical"
android:entries="@array/EVSteps"
android:paddingBottom="1dip"
android:paddingTop="1dip"
android:id="@+id/Spinner_calcP_EVStep" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:id="@+id/Btn_Calculate"
android:text="@string/calculate"
android:background="@drawable/btn_fs"
android:textColor="@color/white"
android:paddingBottom="1dip"
android:paddingTop="1dip"></Button>
</TableRow>
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_marginTop="2dip"
android:background="@drawable/gradient_view" />
<ch.spherIC.components.XTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoText="false"
android:scrollbarAlwaysDrawVerticalTrack="false"
android:visibility="visible"
android:paddingTop="1dip"
android:textStyle="bold"
android:textColor="@color/white"
android:paddingLeft="3dip"
android:layout_marginTop="3dip"
android:paddingBottom="1dip"
android:background="@drawable/glassbg_black"
spherIC:drawBorderWidth="3dip"
spherIC:drawBorderColor="@color/white"
spherIC:drawBorder="true"
android:id="@+id/Title_BracketingRes"
android:text="@string/bracketingRes" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/LinearLayout_ResultsHeader"></LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dip"
android:layout_marginTop="2dip"
android:background="@color/black"
android:id="@+id/View_ResHeader_Understroke" />
<ListView
android:layout_width="wrap_content"
android:divider="@drawable/gradient_view"
android:dividerHeight="1dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:hapticFeedbackEnabled="true"
android:id="@+id/ListView_ExpResults"
android:focusable="true"
android:clickable="true">
</ListView>
</TableLayout>

+ 52
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/layout/settings.xml Целия файл

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/linear_layout_Stg_Root" android:background="@drawable/bg_about">
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:textColor="@color/black"
android:id="@+id/settings_Title_18Gray"
android:text="@string/Percent18Correction"
android:paddingLeft="3dip"
android:paddingTop="3dip"
android:paddingBottom="3dip"
android:background="@color/yellow" android:textStyle="bold"></TextView>
<LinearLayout
android:layout_height="wrap_content"
android:id="@+id/linear_layout_Stg_u1"
android:layout_gravity="fill_horizontal"
android:layout_width="fill_parent"
android:paddingTop="3dip"
android:paddingBottom="3dip">
<TextView
android:textColor="@color/black"
android:paddingBottom="3dip"
android:paddingLeft="3dip"
android:paddingTop="3dip"
android:id="@+id/txtView_BP_Corr"
android:text="@string/Percent18CorrectionBP"
android:layout_height="wrap_content"
android:layout_gravity="left|center_vertical" android:layout_width="200dip"></TextView>
<Spinner
android:layout_height="wrap_content"
android:paddingBottom="1dip"
android:paddingTop="1dip"
android:background="@drawable/dropdown_fs"
android:layout_width="wrap_content" android:layout_weight="1" android:entries="@array/EVStepsCorrectionBP" android:id="@+id/spn_BP_Corr">
</Spinner>
</LinearLayout><LinearLayout android:layout_height="wrap_content" android:layout_gravity="fill_horizontal" android:layout_width="fill_parent" android:paddingTop="3dip" android:id="@+id/linear_layout_Stg_u2" android:paddingBottom="10dip">
<TextView android:textColor="@color/black" android:paddingBottom="3dip" android:paddingLeft="3dip" android:paddingTop="3dip" android:layout_height="wrap_content" android:layout_gravity="left|center_vertical" android:id="@+id/txtView_DP_Corr" android:text="@string/Percent18CorrectionDP" android:layout_width="200dip"></TextView>
<Spinner android:layout_height="wrap_content" android:paddingBottom="1dip" android:paddingTop="1dip" android:background="@drawable/dropdown_fs" android:layout_width="wrap_content" android:layout_weight="1" android:entries="@array/EVStepsCorrectionDP" android:id="@+id/spn_DP_Corr">
</Spinner>
</LinearLayout><TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:textColor="@color/black" android:paddingLeft="3dip" android:paddingTop="3dip" android:paddingBottom="3dip" android:background="@color/yellow" android:textStyle="bold" android:id="@+id/settings_Title_RangePoint" android:text="@string/FixRangePoint" android:layout_marginTop="10dip"></TextView>


<RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/RadioGroup"><RadioButton android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_marginTop="10dip" android:text="@string/FixRangePointBP" android:textColor="@color/black" android:paddingLeft="40dip" android:id="@+id/rdbtn_KeepBP"></RadioButton><RadioButton android:layout_height="wrap_content" android:layout_width="fill_parent" android:textColor="@color/black" android:text="@string/FixRangePointDP" android:paddingLeft="40dip" android:id="@+id/rdbtn_KeepDP"></RadioButton></RadioGroup><View android:layout_height="2dip" android:layout_marginTop="2dip" android:layout_width="fill_parent" android:background="@drawable/gradient_view" />
<LinearLayout android:id="@+id/LinearLayout01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_marginTop="20dip"><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/btn_fs" android:textColor="@color/white" android:layout_marginBottom="3dip" android:layout_marginRight="3dip" android:layout_marginTop="3dip" android:layout_weight="1" android:layout_marginLeft="10dip" android:id="@+id/btn_Stg_Save" android:text="@string/BtnSave"></Button><Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/btn_fs" android:textColor="@color/white" android:layout_marginBottom="3dip" android:layout_marginLeft="3dip" android:layout_marginTop="3dip" android:layout_weight="1" android:layout_marginRight="10dip" android:text="@string/BtnCancel" android:id="@+id/btn_Stg_Cancel"></Button></LinearLayout>


</LinearLayout>

+ 57
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/layout/userguide_dialog.xml Целия файл

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/bg_about"
android:padding="10dp"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/layout_ugVersion">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dip"
android:id="@+id/ug_imageAppIcon"
android:layout_gravity="center_vertical" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:text="iii"
android:id="@+id/ug_TextVersion"
android:textStyle="bold"
android:layout_gravity="center_vertical"
android:gravity="center_vertical" />
</LinearLayout>

<ScrollView
android:id="@+id/ug_ScrollView"
android:layout_width="wrap_content"
android:addStatesFromChildren="true"
android:layout_height="250dp">
<LinearLayout android:id="@+id/linearLayout1" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" android:textColor="@color/black" android:text="@string/header_GeneralPurpose" android:textStyle="bold" android:id="@+id/ug_hdr_GenPourpose" android:layout_width="wrap_content"></TextView>
<TextView android:layout_height="wrap_content" android:textSize="12dp" android:paddingRight="3dp" android:textColor="@color/black" android:text="@string/text_GeneralPurpose" android:id="@+id/ug_txt_GenPourpose" android:layout_width="wrap_content"></TextView>
<TextView android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" android:textColor="@color/black" android:text="@string/header_HowTo" android:textStyle="bold" android:id="@+id/ug_hdr_HowTo" android:layout_width="wrap_content"></TextView>
<TextView android:layout_height="wrap_content" android:textSize="12dp" android:lineSpacingExtra="1dp" android:textColor="@color/black" android:text="@string/text_HowTo" android:id="@+id/ug_txt_HowTo" android:layout_width="wrap_content"></TextView>
</LinearLayout>
</ScrollView>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/btn_fs"
android:id="@+id/btn_ugClose"
android:textColor="@color/white"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp" android:text="@string/BtnClose">
</Button>


</LinearLayout>

+ 6
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/menu/mainmenu.xml Целия файл

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:visible="true" android:enabled="true" android:title="@string/menuAbout" android:id="@+id/itemAbout" android:icon="@android:drawable/ic_menu_info_details"></item>
<item android:visible="true" android:enabled="true" android:title="@string/menuSettings" android:id="@+id/itemSettings" android:icon="@android:drawable/ic_menu_preferences"></item><item android:visible="true" android:enabled="true" android:title="@string/menuUserGuide" android:id="@+id/itemUserGuide" android:icon="@android:drawable/ic_menu_help"></item>
</menu>

+ 102
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/values-de/strings.xml Целия файл

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name="app_name">Easy Bracketing</string>
<string
name="dynamic_range">Dynamikbereich</string>
<string
name="shutter_speed">Belichtungszeit</string>
<string
name="aperture">Blende</string>
<string
name="ev">LW</string>
<string
name="dark_point">Werte Dunkelpunkt</string>
<string
name="bright_point">Werte Hellpunkt</string>
<string
name="calcParams">Berechnungsparameter</string>
<string
name="delta_EV">Δ LW</string>
<string
name="expEVStep">LW-Schritt</string>
<string
name="calculate">Berechnen</string>
<string
name="reset">Zurücksetzen</string>
<string
name="bracketingRes">Bracketing Belichtungswerte</string>
<string
name="expNbrLbl"># Bel.</string>
<string
name="toastWarningDP_BP">Das Delta zwischen dem LW des Dunkelpunkt und dem LW des Hellpunkt ist kleiner oder gleich 0.
\nBitte korrigieren Sie die Eingaben.</string>
<string
name="menuUserGuide">Benutzeranleitung</string>
<string
name="menuSettings">Einstellungen...</string>
<string
name="menuAbout">Info</string>
<string
name="about_Description">
EasyBracketing dient zur schnellen und einfachen Berechnung einer Belichtungsserie ausgehend
von den Belichtungswerten eines Dunkelpunktes und eines Hellpunktes.
</string>
<string
name="AppVersionLabel">Version:</string>
<string
name="about_DevelopedBy">Entwickelt von spherIC (F. Smilari)\nMail an:
merlin868@hotmail.com\n\nÜbersetzt von spherIC (F. Smilari)</string>
<string
name="Percent18Correction">18%-Grauwertkorrektur</string>
<string
name="Percent18CorrectionBP">Hellpunktkorrektur (LW)</string>
<string
name="Percent18CorrectionDP">Dunkelpunktkorrektur (LW)</string>
<string
name="FixRangePoint">Ausgangspunkt für Belichtungsserie</string>
<string
name="FixRangePointBP">Von Hellpunktwerten ausgehen</string>
<string
name="FixRangePointDP">Von Dunkelpunktwerten ausgehen</string>
<string
name="BtnSave">Speichern</string>
<string
name="BtnCancel">Abbrechen</string>
<string
name="BtnClose">Schliessen</string>
<string
name="header_GeneralPurpose">1. Allgm. Verwendungszweck</string>
<string
name="text_GeneralPurpose">
Beim Erstellen einer Belichtungsreihe für ein späteres HDR-Bild, stellt sich oftmals das Problem,
dass der Kontrastumfang zu gross ist um von der typischen \"+2LW/0LW/-2LW\"-Vorgehensweise abgedeckt zu werden.\nHier
kommt \"EasyBracketing\" zum Zug.\nAusgehend von gemessenen Werten für den hellsten Punkt resp. den dunkelsten Punkt
werden über definierbare Parameter alle notwendigen Belichtungen einer Belichtungsreihe berechnet. Diese können dann
an der Kamera sukzessive eingestellt und die Aufnahme ausgelöst werden.
</string>
<string
name="header_HowTo">2. Vorgehensweise</string>
<string
name="text_HowTo" formatted="false">
1. Stellen Sie die Kamera auf Spotbelichtungsmessung.
\n2. Wählen Sie eine geeignete Blende.
\n3. Messen Sie mit der Kamera die Belichtungswerte für den dunkelsten Punkt ihres Bildausschnitts.
\n4. Messen Sie mit der Kamera die Belichtungswerte für den hellsten Punkt ihres Bildausschnitts.
\n5. Stellen Sie die gemessenen Werte im Bereich \"Dynamikbereich\" von EasyBracketing ein.
\n6. Verändern Sie, falls gewünscht die Berechnungsparamter nach Ihren Vorstellungen.
\n7. Klicken Sie auf \"Berechnen\" um die Belichtungsreihe zu berechnen.
\n
\nEinstellungen:
\n
\n18%-Grauwertkorrektur:
\nDie meisten Kameras versuchen bei der Belichtungsmessung auf ein sogenanntes 18%-Grau gleichmässig zu belichten.
Dies ist für Belichtungsreihen eher unerwünscht. Mit dieser Einstellung können Sie dem entgegenwirken. Den einzustellenden
Wert muss man über Belichtungsversuche empirisch ermitteln, da die Sensoren bei jedem Hersteller anders sind.
\n
\nAusgangspukt der Belichtungsreihe:
\nIn den meisten Fällen, wird der Dynamikumfang (Delta LW) einen gebrochenen Wert aufweisen, der in der Berechnung aufgerundet
wird. Dies führt dazu, dass der Dynamikumfang der Berechnung grösser ist als der Gemessene. Mit dieser Einstellung bestimmen Sie
von welchem Ende des Dynamikumfangs (Anker) die Berechnung der Belichtungsreihe starten soll.
</string>
</resources>

+ 20
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/values/attrs.xml Целия файл

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>

<declare-styleable
name="XTextView">

<attr
name="drawBorder"
format="boolean" />
<attr
name="drawBorderWidth"
format="dimension" />

<attr
name="drawBorderColor"
format="color" />

</declare-styleable>

</resources>

+ 13
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/values/colors.xml Целия файл

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color
name="translucent">#00000000</color>
<color
name="semi_translucent_black">#80000000</color>
<color
name="black">#FF000000</color>
<color
name="yellow">#AAFFFFAA</color>
<color
name="white">#FFFFFFFF</color>
</resources>

+ 94
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/values/strings.xml Целия файл

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name="app_name">Easy Bracketing</string>
<string
name="dynamic_range">Dynamic Range</string>
<string
name="shutter_speed">Shutter Speed</string>
<string
name="aperture">Aperture</string>
<string
name="ev">EV</string>
<string
name="dark_point">Dark Point Values</string>
<string
name="bright_point">Bright Point Values</string>
<string
name="calcParams">Calculation Parameters</string>
<string
name="delta_EV">Δ EV</string>
<string
name="expEVStep">EV Step</string>
<string
name="calculate">Calculate</string>
<string
name="reset">Reset</string>
<string
name="bracketingRes">Bracketing Exposures Values</string>
<string
name="expNbrLbl"># Exp.</string>
<string
name="toastWarningDP_BP">The delta between dark point EV and bright point EV is less or
equal to 0. Please correct the inputs.</string>
<string
name="menuUserGuide">User Guide</string>
<string
name="menuSettings">Settings...</string>
<string
name="menuAbout">About</string>
<string name="about_Description">EasyBracketing allows you to easy calculate a serie of exposure
values according to initial dark and bright point values.</string>
<string
name="AppVersionLabel">Version:</string>
<string name="about_DevelopedBy">Developed by spherIC (F. Smilari)\nMail to:
merlin868@hotmail.com\n\nTranslated by spherIC (F. Smilari)</string>
<string
name="Percent18Correction">18%-Gray Correction</string>
<string
name="Percent18CorrectionBP">Bright Pt. Value Correction (EV)</string>
<string
name="Percent18CorrectionDP">Dark Pt. Value Correction (EV)</string>
<string
name="FixRangePoint">Fixed EV Range Value</string>
<string
name="FixRangePointBP">Keep Bright Point Values fixed</string>
<string
name="FixRangePointDP">Keep Dark Point Value fixed</string>
<string
name="BtnSave">Save</string>
<string
name="BtnCancel">Cancel</string>
<string
name="BtnClose">Close</string>
<string
name="header_GeneralPurpose">1. General Purpose</string>
<string
name="text_GeneralPurpose">When doing a bracketing for a later HDR image, often a problem araises: The dynamic range of the
composition is too large to fit the classic \"+2EV/0EV/-2EV\" approach.
\nThis is the moment when \"EasyBracketing\" comes to its own.
\nStarting with camera-measured values for the brightest and darkest point and according to some configurable calculation parameters
you can calculate all the exposure values for the bracketing and do the shots.
</string>
<string
name="header_HowTo">2. How to use</string>
<string name="text_HowTo" formatted="false">1. Set your camera to spot measuring.
\n2. Choose a suitable aperture.
\n3. With your camera measure the exposure values for the darkest point of your composition.
\n4. With your camera measure the exposure values for the brightest point of your composition.
\n5. Set these values in the area \"Dynamic Range\" of EasyBracketing.
\n6. Modify the calculation parameters to your needs if necessary.
\n7. Click on \"Calculate\" to start the computing of the exposure values of the bracketing.
\n
\nSettings:
\n
\n18%-Gray Correction:
\nMost cameras try to achieve a so called 18%-Gray exposure value on measuring. This is not exactly what we want when doing bracketing.
This setting helps to counteract this behavior. Beacuse each sensor, depending on the manufacturer, has a little bit different behavior,
the exact values have to be determined by experimental trials.
\n
\nFixed EV Range Value:
\nIn most cases, the resulting delta EV from the measuring is a floating value which is rounded to the next integer value on calculation.
This means that the calculation value is always bigger than the measured. With this setting you can determine on which edge of the dynamic
range (anchor) the bracketing calculation should start.</string>
</resources>

+ 109
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/values/strings_notrans.xml Целия файл

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array
name="Apertures">
<item>f/1</item>
<item>f/1.4</item>
<item>f/2</item>
<item>f/3.5</item>
<item>f/4</item>
<item>f/4.2</item>
<item>f/4.5</item>
<item>f/4.8</item>
<item>f/5</item>
<item>f/5.3</item>
<item>f/5.6</item>
<item>f/6.3</item>
<item>f/7.1</item>
<item>f/8</item>
<item>f/9</item>
<item>f/10</item>
<item>f/11</item>
<item>f/13</item>
<item>f/14</item>
<item>f/16</item>
<item>f/18</item>
<item>f/20</item>
<item>f/22</item>
<item>f/32</item>
<item>f/45</item>
</string-array>
<string-array
name="ShutterSpeeds">
<item>1/8000</item>
<item>1/4000</item>
<item>1/3200</item>
<item>1/2500</item>
<item>1/2000</item>
<item>1/1600</item>
<item>1/1250</item>
<item>1/1000</item>
<item>1/800</item>
<item>1/640</item>
<item>1/500</item>
<item>1/400</item>
<item>1/320</item>
<item>1/250</item>
<item>1/200</item>
<item>1/160</item>
<item>1/125</item>
<item>1/100</item>
<item>1/80</item>
<item>1/60</item>
<item>1/50</item>
<item>1/40</item>
<item>1/30</item>
<item>1/25</item>
<item>1/20</item>
<item>1/15</item>
<item>1/13</item>
<item>1/10</item>
<item>1/8</item>
<item>1/6</item>
<item>1/5</item>
<item>1/4</item>
<item>1/3</item>
<item>1/2.5</item>
<item>1/2</item>
<item>1/1.6</item>
<item>1/1.3</item>
<item>1</item>
<item>1.3</item>
<item>1.6</item>
<item>2</item>
<item>2.5</item>
<item>3</item>
<item>4</item>
<item>5</item>
<item>6</item>
<item>8</item>
<item>10</item>
<item>13</item>
<item>15</item>
<item>20</item>
<item>25</item>
<item>30</item>
</string-array>
<string-array
name="EVSteps">
<item>0.3</item>
<item>0.7</item>
<item>1.0</item>
<item>1.3</item>
<item>1.7</item>
<item>2.0</item>
</string-array>
<string-array
name="EVStepsCorrectionDP">
<item>±0.0</item>
<item>-1.0</item>
<item>-2.0</item>
<item>-3.0</item>
</string-array>
<string-array
name="EVStepsCorrectionBP">
<item>±0.0</item>
<item>+1.0</item>
</string-array>
</resources>

+ 62
- 0
EasyBracketing/EasyBracketing/EasyBracketing/res/values/styles.xml Целия файл

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>

<style
name="ResultExposureText"
parent="@android:style/TextAppearance">
<item
name="android:textSize">16dip</item>
<item
name="android:textStyle">normal</item>
<item
name="android:textColor">#FF000000</item>
</style>
<style
name="ResultExposureTextSpecial"
parent="@android:style/TextAppearance">
<item
name="android:textSize">16dip</item>
<item
name="android:textStyle">italic|bold</item>
<item
name="android:textColor">#FF3C3CFF</item>
</style>

<style
name="GlassDropdownItem"
parent="@android:style/Widget.TextView.SpinnerItem">
<item
name="android:textColor">@color/white</item>
<item
name="android:gravity">center_vertical|center_horizontal</item>
</style>

<style
name="ResultsListView"
parent="@android:style/Widget.ListView">
<item
name="android:cacheColorHint">@color/translucent</item>
<item
name="android:listSelector">@drawable/z_selector_background</item>
</style>

<style
name="GlassTheme"
parent="@android:style/Theme">
<item
name="android:spinnerItemStyle">@style/GlassDropdownItem</item>
<item
name="android:listViewStyle">@style/ResultsListView</item>
</style>
<style
name="GlassThemeDialog"
parent="@android:style/Theme.Dialog">
<item
name="android:spinnerItemStyle">@style/GlassDropdownItem</item>
<item
name="android:listViewStyle">@style/ResultsListView</item>
</style>

</resources>

+ 159
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/DialogFactory.java Целия файл

@@ -0,0 +1,159 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC;
import android.app.Activity;
import android.app.Dialog;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import ch.spherIC.settings.SettingsDlg;
/**
* Dialog factory class.
*/
public final class DialogFactory {
/**
* Static main method to initialize classes
*
* @param dlgCode Code of dialog to instantiate. See {@link EasyBracketMain}
* @param parent Parent {@link Activity}
*
* @return Instantiated dialog.
*/
public static Dialog createDialog(int dlgCode, Activity parent) {
Dialog dlg;
switch (dlgCode) {
case EasyBracketMain.ABOUT_DLG:
dlg = createAboutDialog(parent);
break;
case EasyBracketMain.SETTINGS_DLG:
dlg = createSettingsDialog(parent);
break;
case EasyBracketMain.USERGUIDE_DLG:
dlg = createUserGuideDialog(parent);
break;
default:
dlg = null;
break;
}
return dlg;
}
/**
* Creates the About Dialog
*/
private static Dialog createAboutDialog(Activity parent) {
String versionName = "";
final Dialog dialog = new Dialog(parent);
dialog.setContentView(R.layout.about_dialog);
parent.getResources().getText(R.string.menuAbout);
dialog.setTitle(parent.getResources().getText(R.string.menuAbout) + " EasyBracketing...");
try {
versionName = parent.getPackageManager().getPackageInfo("ch.spherIC", PackageManager.GET_CONFIGURATIONS)
.versionName;
} catch (NameNotFoundException e) {
versionName = "-";
}
ImageView image = (ImageView) dialog.findViewById(R.id.about_imageAppIcon);
image.setImageResource(R.drawable.icon);
TextView text = (TextView) dialog.findViewById(R.id.about_TextDescription);
text.setText(parent.getResources().getText(R.string.about_Description));
text = (TextView) dialog.findViewById(R.id.about_TextVersion);
text.setText(parent.getResources().getText(R.string.AppVersionLabel).toString() + " " + versionName);
text = (TextView) dialog.findViewById(R.id.about_TextAutor);
text.setText(parent.getResources().getText(R.string.about_DevelopedBy).toString());
((Button) dialog.findViewById(R.id.btn_AboutClose)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
return dialog;
}
/**
* Creates the Settings Dialog
*/
private static Dialog createSettingsDialog(Activity parent) {
final Dialog dialog = new SettingsDlg(parent);
return dialog;
}
/**
* Creates the User Guide Dialog
*/
private static Dialog createUserGuideDialog(Activity parent) {
String versionName = "";
final Dialog dialog = new Dialog(parent);
dialog.setContentView(R.layout.userguide_dialog);
parent.getResources().getText(R.string.menuUserGuide);
dialog.setTitle(parent.getResources().getText(R.string.menuUserGuide));
try {
versionName = parent.getPackageManager().getPackageInfo("ch.spherIC", PackageManager.GET_CONFIGURATIONS)
.versionName;
} catch (NameNotFoundException e) {
versionName = "-";
}
ImageView image = (ImageView) dialog.findViewById(R.id.ug_imageAppIcon);
image.setImageResource(R.drawable.icon);
TextView text = (TextView) dialog.findViewById(R.id.ug_TextVersion);
text.setText(parent.getResources().getText(R.string.AppVersionLabel).toString() + " " + versionName);
((Button) dialog.findViewById(R.id.btn_ugClose)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
return dialog;
}
}

+ 57
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/EVFormula.java Целия файл

@@ -0,0 +1,57 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC;
/**
* Class representing the Exposure Values formula <code>2^EV = f^2 / t</code>.
*
* <p>With:<br>
* EV = Exposure Value<br>
* f = Aperture<br>
* t = shutter speed</p>
*/
public class EVFormula {
/**
* Calculates the exposure value <code>EV</code> from aperture <code>f</code> and shutter speed <code>t</code>.
*
* <p>EV = (2 * log f - log t) / log 2</p>
*
* @param aperture Aperture value
* @param sutterSpeed Shutter speed value
*
* @return Calculated Exposure value
*/
public static double calcEV(double aperture, double shutterSpeed) {
return (2 * Math.log10(aperture) - Math.log10(shutterSpeed)) / Math.log10(2f);
}
/**
* Calculates the shutter speed <code>t</code> from aperture <code>f</code> and exposure value <code>EV</code>.
*
* <p>t = f^2 / 2^EV</p>
*
* @param aperture Aperture value
* @param EV Exposure value
*
* @return Calculated Shutter speed value
*/
public static double calcShutterSpeed(double aperture, double EV) {
return (Math.pow(aperture, 2) / Math.pow(2, EV));
}
}

+ 312
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/EasyBracketMain.java Целия файл

@@ -0,0 +1,312 @@
package ch.spherIC;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import ch.spherIC.components.ApertureSpinner;
import ch.spherIC.components.ShutterSpeedSpinner;
import ch.spherIC.components.XSpinner;
import ch.spherIC.resultlist.Exposure;
import ch.spherIC.resultlist.ExposureAdapter;
import ch.spherIC.resultlist.ExposureFactory;
import ch.spherIC.settings.SettingsDlg;
/**
* Main class EasyBracketing
*/
public class EasyBracketMain extends Activity {
public static final int ABOUT_DLG = 0;
public static final int SETTINGS_DLG = 1;
public static final int USERGUIDE_DLG = 2;
private static String DEF_SHUTTER_SPEED = "1/125";
private static String DEF_APERTURE = "f/8";
private static String DEF_EVSTEP = "2.0";
private ShutterSpeedSpinner spnDPShutterSpeed;
private ApertureSpinner spnDPAperture;
private ShutterSpeedSpinner spnBPShutterSpeed;
private ApertureSpinner spnBPAperture;
private TextView txtDPEVValue;
private TextView txtBPEVValue;
private TextView txtCalcPDeltaEV;
private ApertureSpinner spnCalcPAperture;
private XSpinner spnCalcPEVStep;
private Button resetBtn;
private Button calculateBtn;
private ListView resultList;
private LinearLayout resultsHeader;
private double bpCorrection;
private double dpCorrection;
private boolean fixBP;
private double dpEV;
private double bpEV;
public static final DecimalFormat DF = new DecimalFormat("0.##");
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initComponents();
setDefaults();
loadSettings();
}
/**
* Loads and stores the settings
*/
public void loadSettings() {
// Load settings
SharedPreferences settings = getSharedPreferences(SettingsDlg.PREFS_NAME, Context.MODE_PRIVATE);
this.fixBP = settings.getBoolean("fixBrightPoint", true);
this.bpCorrection = settings.getFloat("brightPointCorrection", 0f);
this.dpCorrection = settings.getFloat("darkPointCorrection", 0f);
}
/**
* {@inheritDoc}
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.mainmenu, menu);
return true;
}
/**
* @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.itemAbout:
showDialog(ABOUT_DLG);
return true;
case R.id.itemSettings:
showDialog(SETTINGS_DLG);
return true;
case R.id.itemUserGuide:
showDialog(USERGUIDE_DLG);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/**
* Initialization method
*/
private void initComponents() {
// initialize dropdowns
OnItemSelectedListener evRangeItemSelListener = new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
EasyBracketMain.this.dpEV = EVFormula.calcEV(EasyBracketMain.this.spnDPAperture.getSelectedAperture(),
EasyBracketMain.this.spnDPShutterSpeed
.getSelectedShutterSpeed());
EasyBracketMain.this.bpEV = EVFormula.calcEV(EasyBracketMain.this.spnBPAperture.getSelectedAperture(),
EasyBracketMain.this.spnBPShutterSpeed
.getSelectedShutterSpeed());
EasyBracketMain.this.txtDPEVValue.setText(EasyBracketMain.DF.format(EasyBracketMain.this.dpEV));
EasyBracketMain.this.txtBPEVValue.setText(EasyBracketMain.DF.format(EasyBracketMain.this.bpEV));
EasyBracketMain.this.txtCalcPDeltaEV.setText(EasyBracketMain.DF.format((EasyBracketMain.this.bpEV
+ EasyBracketMain.this.bpCorrection)
- (EasyBracketMain.this.dpEV
- EasyBracketMain.this.dpCorrection)));
EasyBracketMain.this.calculateBtn.setEnabled(EasyBracketMain.this.bpEV > EasyBracketMain.this.dpEV);
EasyBracketMain.this.resultsHeader.setVisibility(View.INVISIBLE);
findViewById(R.id.View_ResHeader_Understroke).setVisibility(View.INVISIBLE);
EasyBracketMain.this.resultList.setAdapter(null);
if (EasyBracketMain.this.bpEV < EasyBracketMain.this.dpEV) {
Toast toast = Toast.makeText(EasyBracketMain.this, R.string.toastWarningDP_BP, Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
OnItemSelectedListener calcPItemSelListener = new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
toggleResultsList(false);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
this.spnDPShutterSpeed = (ShutterSpeedSpinner) findViewById(R.id.Spinner_DP_Shutter);
this.spnDPAperture = (ApertureSpinner) findViewById(R.id.Spinner_DP_Aperture);
this.spnBPShutterSpeed = (ShutterSpeedSpinner) findViewById(R.id.Spinner_BP_Shutter);
this.spnBPAperture = (ApertureSpinner) findViewById(R.id.Spinner_BP_Aperture);
this.spnCalcPAperture = (ApertureSpinner) findViewById(R.id.Spinner_calcP_Aperture);
this.spnCalcPEVStep = (XSpinner) findViewById(R.id.Spinner_calcP_EVStep);
this.txtDPEVValue = (TextView) findViewById(R.id.Text_EVVal_DP);
this.txtBPEVValue = (TextView) findViewById(R.id.Text_EVVal_BP);
this.txtCalcPDeltaEV = (TextView) findViewById(R.id.label_deltaEV_Val);
this.resultsHeader = (LinearLayout) ExposureAdapter.getHeaderView(this,
(LinearLayout)
findViewById(R.id.LinearLayout_ResultsHeader));
this.resultsHeader.setVisibility(View.INVISIBLE);
findViewById(R.id.View_ResHeader_Understroke).setVisibility(View.INVISIBLE);
this.resultList = (ListView) findViewById(R.id.ListView_ExpResults);
this.resultList.setAdapter(null);
this.resetBtn = (Button) findViewById(R.id.Btn_Reset);
this.calculateBtn = (Button) findViewById(R.id.Btn_Calculate);
this.calculateBtn.setEnabled(false);
this.spnDPShutterSpeed.setOnItemSelectedListener(evRangeItemSelListener);
this.spnDPAperture.setOnItemSelectedListener(evRangeItemSelListener);
this.spnBPShutterSpeed.setOnItemSelectedListener(evRangeItemSelListener);
this.spnBPAperture.setOnItemSelectedListener(evRangeItemSelListener);
this.resetBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setDefaults();
toggleResultsList(false);
}
});
this.calculateBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
toggleResultsList(true);
calculateExposures();
}
});
this.spnCalcPAperture.setOnItemSelectedListener(calcPItemSelListener);
this.spnCalcPEVStep.setOnItemSelectedListener(calcPItemSelListener);
}
/**
* Clears the results list.
*/
private void toggleResultsList(boolean visible) {
if (visible) {
EasyBracketMain.this.resultsHeader.setVisibility(View.VISIBLE);
findViewById(R.id.View_ResHeader_Understroke).setVisibility(View.VISIBLE);
} else {
EasyBracketMain.this.resultsHeader.setVisibility(View.INVISIBLE);
findViewById(R.id.View_ResHeader_Understroke).setVisibility(View.INVISIBLE);
EasyBracketMain.this.resultList.setAdapter(null);
}
}
/**
* Sets the default values.
*/
public void setDefaults() {
this.spnDPShutterSpeed.setSelectionByVal(DEF_SHUTTER_SPEED);
this.spnDPAperture.setSelectionByVal(DEF_APERTURE);
this.spnBPShutterSpeed.setSelectionByVal(DEF_SHUTTER_SPEED);
this.spnBPAperture.setSelectionByVal(DEF_APERTURE);
this.spnCalcPAperture.setSelectionByVal(DEF_APERTURE);
this.spnCalcPEVStep.setSelectionByVal(DEF_EVSTEP);
this.txtDPEVValue.setText(DF.format(EVFormula.calcEV(this.spnDPAperture.getSelectedAperture(),
this.spnDPShutterSpeed.getSelectedShutterSpeed())));
this.txtBPEVValue.setText(DF.format(EVFormula.calcEV(this.spnBPAperture.getSelectedAperture(),
this.spnBPShutterSpeed.getSelectedShutterSpeed())));
this.txtCalcPDeltaEV.setText(DF.format(this.bpEV + this.bpCorrection - (this.dpEV - this.dpCorrection)));
}
/**
* Initiates the calculation of the exposure values according to the input parameters.
*/
private void calculateExposures() {
List<Exposure> exposureList;
double calcPrmAperture = this.spnCalcPAperture.getSelectedAperture();
double calcPrmEvStep = Double.valueOf(this.spnCalcPEVStep.getSelectedItem().toString());
List<Double> allowedShutters = getShutterSpeeds();
exposureList = ExposureFactory.calculateExposures(this, this.dpEV - this.dpCorrection,
this.bpEV + this.bpCorrection, calcPrmAperture, calcPrmEvStep,
this.fixBP, allowedShutters);
this.resultList.setAdapter(new ExposureAdapter(this, exposureList));
}
/**
* Retrieves the list of all shutter speeds in drop down list as Double's.
*
* @return list of all shutter speeds in drop down list as Double's
*/
private List<Double> getShutterSpeeds() {
List<Double> shutterSpeeds = new ArrayList<Double>();
for (int i = 0; i < this.spnBPShutterSpeed.getCount(); i++) {
shutterSpeeds.add(this.spnBPShutterSpeed.getShutterSpeedAt(i));
}
return shutterSpeeds;
}
/**
* {@inheritDoc}
*/
@Override
protected Dialog onCreateDialog(int id) {
return DialogFactory.createDialog(id, this);
}
}

+ 67
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/components/ApertureSpinner.java Целия файл

@@ -0,0 +1,67 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC.components;
import android.content.Context;
import android.util.AttributeSet;
/**
* Aperture Spinner
*/
public class ApertureSpinner extends XSpinner {
/**
* Creates a new ApertureSpinner object.
*
* @param context {@link Context}
*/
public ApertureSpinner(Context context) {
super(context);
}
/**
* Creates a new ApertureSpinner object.
*
* @param context {@link Context}
* @param attrs {@link AttributeSet}
*/
public ApertureSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* Creates a new ApertureSpinner object.
*
* @param context {@link Context}
* @param attrs {@link AttributeSet}
* @param defStyle int
*/
public ApertureSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
/**
* Retrieves floating value of the selected aperture item.
*
* @return Selected aperture as {@link Double}
*/
public double getSelectedAperture() {
String valStr = getSelectedItem().toString().substring(2);
return new Double(valStr).doubleValue();
}
}

+ 94
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/components/ShutterSpeedSpinner.java Целия файл

@@ -0,0 +1,94 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC.components;
import android.content.Context;
import android.util.AttributeSet;
/**
* Shutter speed spinner.
*/
public class ShutterSpeedSpinner extends XSpinner {
/**
* Creates a new ShutterSpeedSpinner object.
*
* @param context {@link Context}
*/
public ShutterSpeedSpinner(Context context) {
super(context);
}
/**
* Creates a new ShutterSpeedSpinner object.
*
* @param context {@link Context}
* @param attrs {@link AttributeSet}
*/
public ShutterSpeedSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* Creates a new ShutterSpeedSpinner object.
*
* @param context {@link Context}
* @param attrs {@link AttributeSet}
* @param defStyle int
*/
public ShutterSpeedSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
/**
* Retrieves floating value of the selected shutter speed item.
*
* @return Selected shutter speed as {@link Double}
*/
public double getSelectedShutterSpeed() {
double resVal;
String valStr = getSelectedItem().toString();
if (valStr.contains("1/")) {
resVal = 1 / new Double(valStr.substring(2)).doubleValue();
} else {
resVal = new Double(valStr).doubleValue();
}
return resVal;
}
/**
* Retrieves floating value of the selected shutter speed item.
*
* @return Selected shutter speed as {@link Double}
*/
public double getShutterSpeedAt(int position) {
double resVal;
String valStr = getItemAtPosition(position).toString();
if (valStr.contains("1/")) {
resVal = 1 / new Double(valStr.substring(2)).doubleValue();
} else {
resVal = new Double(valStr).doubleValue();
}
return resVal;
}
}

+ 76
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/components/XSpinner.java Целия файл

@@ -0,0 +1,76 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC.components;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.Spinner;
/**
* XSpinner class with special functionality
*/
public class XSpinner extends Spinner {
/**
* Creates a new XSpinner object.
*
* @param context {@link Context}
*/
public XSpinner(Context context) {
super(context);
}
/**
* Creates a new XSpinner object.
*
* @param context {@link Context}
* @param attrs {@link AttributeSet}
*/
public XSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* Creates a newXSpinner object.
*
* @param context {@link Context}
* @param attrs {@link AttributeSet}
* @param defStyle int
*/
public XSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
/**
* Sets the value of $param.name$
*
* @param value DOCUMENT ME!
*/
public void setSelectionByVal(String value) {
int count = getAdapter().getCount();
for (int i = 0; i < count; i++) {
if (getAdapter().getItem(i).toString().equals(value)) {
setSelection(i);
break;
}
}
}
}

+ 111
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/components/XTextView.java Целия файл

@@ -0,0 +1,111 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC.components;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;
import ch.spherIC.R;
/**
* DOCUMENT ME!
*
* @author $author$
* @version $Revision$, $Date$
*/
public class XTextView extends TextView {
private boolean drawborder;
private int drawborderColor;
private int drawborderWidth;
/**
* Creates a new XTextView object.
*
* @param context DOCUMENT ME!
*/
public XTextView(Context context) {
super(context);
}
/**
* Creates a new $class.name$ object.
*
* @param context DOCUMENT ME!
* @param attrs DOCUMENT ME!
* @param defStyle DOCUMENT ME!
*/
public XTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(attrs);
}
/**
* Creates a new $class.name$ object.
*
* @param context DOCUMENT ME!
* @param attrs DOCUMENT ME!
*/
public XTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
/**
* DOCUMENT ME!
*
* @param attrs DOCUMENT ME!
*/
private void init(AttributeSet attrs) {
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.XTextView);
this.drawborder = a.getBoolean(R.styleable.XTextView_drawBorder, false);
this.drawborderColor = a.getColor(R.styleable.XTextView_drawBorderColor, 0xffff0000);
this.drawborderWidth = a.getDimensionPixelSize(R.styleable.XTextView_drawBorderWidth, 1);
if (this.drawborder) {
setPadding(getPaddingLeft() + this.drawborderWidth, getPaddingTop() + this.drawborderWidth,
getPaddingRight() + this.drawborderWidth, getPaddingBottom() + this.drawborderWidth);
}
}
/**
* @see android.widget.TextView#onDraw(android.graphics.Canvas)
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (this.drawborder) {
Rect rect = new Rect();
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setColor(this.drawborderColor);
paint.setStrokeWidth(this.drawborderWidth);
getLocalVisibleRect(rect);
rect.bottom -= 1;
rect.right -= 1;
canvas.drawRect(rect, paint);
}
}
}

+ 208
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/resultlist/Exposure.java Целия файл

@@ -0,0 +1,208 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC.resultlist;
import java.text.DecimalFormat;
import android.graphics.Bitmap;
/**
* Exposure result class.
*/
public class Exposure {
private int nbr;
private String aperture;
private String shutterSpeed;
private double evStep;
private double evRange;
private Bitmap evStepBtmp;
/**
* Creates a new Exposure object.
*
* @param nbr Number
* @param aperture Aperture value
* @param shutterSpeed Shutter speed value
* @param evStep EV step
* @param evRng Measured and maybe corrected ev range
* @param evStepBtmp Bitmap
*/
public Exposure(int nbr, String aperture, String shutterSpeed, double evStep, double evRng, Bitmap evStepBtmp) {
super();
this.nbr = nbr;
this.aperture = aperture;
this.shutterSpeed = shutterSpeed;
this.evStep = evStep;
this.evRange = evRng;
this.evStepBtmp = evStepBtmp;
}
/**
* Gibt den Wert des Feldes <code>nbr</code> zurück.
*
* @return Wert des Feldes <code>nbr</code>.
*
* @see #nbr
*/
public int getNbr() {
return this.nbr;
}
/**
* Setzt einen neuen Wert für das Feld <code>nbr</code>.
*
* @param nbr Neuer Wert für das Feld <code>nbr</code>.
*
* @see #nbr
*/
public void setNbr(int nbr) {
this.nbr = nbr;
}
/**
* Gibt den Wert des Feldes <code>aperture</code> zurück.
*
* @return Wert des Feldes <code>aperture</code>.
*
* @see #aperture
*/
public String getAperture() {
return this.aperture;
}
/**
* Setzt einen neuen Wert für das Feld <code>aperture</code>.
*
* @param aperture Neuer Wert für das Feld <code>aperture</code>.
*
* @see #aperture
*/
public void setAperture(String aperture) {
this.aperture = aperture;
}
/**
* Gibt den Wert des Feldes <code>shutterSpeed</code> zurück.
*
* @return Wert des Feldes <code>shutterSpeed</code>.
*
* @see #shutterSpeed
*/
public String getShutterSpeed() {
return this.shutterSpeed;
}
/**
* Setzt einen neuen Wert für das Feld <code>shutterSpeed</code>.
*
* @param shutterSpeed Neuer Wert für das Feld <code>shutterSpeed</code>.
*
* @see #shutterSpeed
*/
public void setShutterSpeed(String shutterSpeed) {
this.shutterSpeed = shutterSpeed;
}
/**
* Gibt den Wert des Feldes <code>evStep</code> zurück.
*
* @return Wert des Feldes <code>evStep</code>.
*
* @see #evStep
*/
public double getEvStep() {
return this.evStep;
}
/**
* Gibt den Wert des Feldes <code>evStep</code> als String der Form +2.0 oder -1.0 oder ±0.0 zurück.
*
* @return Wert des Feldes <code>evStep</code> als String
*/
public String getEvStepAsString() {
String res = "";
String prefix = "+";
if (this.evStep == 0.0f) {
prefix = "±";
} else if (this.evStep < 0) {
prefix = "";
}
res = prefix + new DecimalFormat("0.0").format(getEvStep());
return res;
}
/**
* Setzt einen neuen Wert für das Feld <code>evStep</code>.
*
* @param evStep Neuer Wert für das Feld <code>evStep</code>.
*
* @see #evStep
*/
public void setEvStep(double evStep) {
this.evStep = evStep;
}
/**
* Gibt den Wert des Feldes <code>evStepRange</code> zurück.
*
* @return Wert des Feldes <code>evStepRange</code>.
*
* @see #evRange
*/
public double getEvStepRange() {
return this.evRange;
}
/**
* Setzt einen neuen Wert für das Feld <code>evStepRange</code>.
*
* @param evStepRange Neuer Wert für das Feld <code>evStepRange</code>.
*
* @see #evRange
*/
public void setEvStepRange(double evStepRange) {
this.evRange = evStepRange;
}
/**
* Gibt den Wert des Feldes <code>evStepBtmp</code> zurück.
*
* @return Wert des Feldes <code>evStepBtmp</code>.
*
* @see #evStepBtmp
*/
public Bitmap getEvStepBtmp() {
return this.evStepBtmp;
}
/**
* Setzt einen neuen Wert für das Feld <code>evStepBtmp</code>.
*
* @param evStepBtmp Neuer Wert für das Feld <code>evStepBtmp</code>.
*
* @see #evStepBtmp
*/
public void setEvStepBtmp(Bitmap evStepBtmp) {
this.evStepBtmp = evStepBtmp;
}
}

+ 255
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/resultlist/ExposureAdapter.java Целия файл

@@ -0,0 +1,255 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC.resultlist;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;
import ch.spherIC.R;
/**
* Exposure adapter view class.
*/
class ExposureAdapterView extends LinearLayout {
/**
* Creates a new ExposureAdapterView object.
*
* @param context DOCUMENT ME!
* @param weather DOCUMENT ME!
*/
public ExposureAdapterView(Context context, Exposure exposure) {
super(context);
this.setOrientation(HORIZONTAL);
DisplayMetrics metrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
// Nbr
TextView nbrControl = new TextView(context);
LinearLayout.LayoutParams nbrParams = new LinearLayout.LayoutParams(Math.round(0.14583f * width),
LayoutParams.WRAP_CONTENT, 0.2f);
nbrParams.setMargins(3, 1, 1, 1);
nbrControl.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
nbrControl.setTextAppearance(context, R.style.ResultExposureText);
nbrControl.setText(Integer.toString(exposure.getNbr()));
addView(nbrControl, nbrParams);
// Aperture
TextView apertureControl = new TextView(context);
LinearLayout.LayoutParams apertureParams = new LinearLayout.LayoutParams(Math.round(0.20833f * width),
LayoutParams.WRAP_CONTENT, 0.2f);
apertureParams.setMargins(1, 1, 1, 1);
apertureControl.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
apertureControl.setTextAppearance(context, R.style.ResultExposureText);
apertureControl.setText(exposure.getAperture());
addView(apertureControl, apertureParams);
// Shutter speed
TextView shutterControl = new TextView(context);
LinearLayout.LayoutParams shutterParams = new LinearLayout.LayoutParams(Math.round(0.35417f * width),
LayoutParams.WRAP_CONTENT, 0.2f);
shutterParams.setMargins(1, 1, 1, 1);
shutterControl.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
shutterControl.setTextAppearance(context, R.style.ResultExposureTextSpecial);
shutterControl.setText(exposure.getShutterSpeed());
addView(shutterControl, shutterParams);
// EV Step
TextView evStepControl = new TextView(context);
LinearLayout.LayoutParams evStepParams = new LinearLayout.LayoutParams(Math.round(0.14583f * width),
LayoutParams.WRAP_CONTENT, 0.2f);
evStepParams.setMargins(1, 1, 1, 1);
evStepControl.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
evStepControl.setTextAppearance(context, R.style.ResultExposureText);
evStepControl.setText(exposure.getEvStepAsString());
addView(evStepControl, evStepParams);
// Icon
ImageView expIconControl = new ImageView(context);
LinearLayout.LayoutParams expIconParams = new LinearLayout.LayoutParams(Math.round(0.14583f * width),
LayoutParams.WRAP_CONTENT, 0.2f);
expIconParams.setMargins(1, 1, 1, 1);
expIconControl.setImageBitmap(exposure.getEvStepBtmp());
addView(expIconControl, expIconParams);
}
}
/**
* Exposure results adapter.
*/
public class ExposureAdapter extends BaseAdapter {
private static DisplayMetrics metrics;
private Context context;
private List<Exposure> exposureList;
/**
* Creates a new ExposureAdapter object.
*/
public ExposureAdapter(Context context, List<Exposure> expList) {
this.context = context;
this.exposureList = expList;
}
/**
* Retrieves list size.
*
* @return list size
*/
@Override
public int getCount() {
return this.exposureList.size();
}
/**
* Retrieves the exposure at index <code>position</code>.
*
* @param position Index in list
*
* @return Exposure at index <code>position</code>
*/
@Override
public Object getItem(int position) {
return this.exposureList.get(position);
}
/**
* Retrieves the number of the exposure at index <code>position</code>.
*
* @param position Index in list
*
* @return the number of the exposure at index <code>position</code>
*/
@Override
public long getItemId(int position) {
//return this.exposureList.get(position).getNbr();
return position;
}
/**
* Retrieves a view representing a single result row.
*
* @param position Index in list
* @param convertView view
* @param parent parent
*
* @return {@link ExposureAdapterView}
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Exposure exposure = this.exposureList.get(position);
return new ExposureAdapterView(this.context, exposure);
}
/**
* Retrieves the value of
*
* @return DOCUMENT ME!
*/
public static View getHeaderView(Context context, LinearLayout headerLL) {
int black = headerLL.getResources().getColor(R.color.black);
int width = getMetrics(context).widthPixels;
// Nbr
TextView nbrControl = new TextView(context);
LinearLayout.LayoutParams nbrParams = new LinearLayout.LayoutParams(Math.round(0.14583f * width),
LayoutParams.WRAP_CONTENT, 0.2f);
nbrParams.setMargins(3, 1, 1, 1);
nbrControl.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
nbrControl.setTextSize(13f);
nbrControl.setTextColor(black);
nbrControl.setText(R.string.expNbrLbl);
headerLL.addView(nbrControl, nbrParams);
// Aperture
TextView apertureControl = new TextView(context);
LinearLayout.LayoutParams apertureParams = new LinearLayout.LayoutParams(Math.round(0.20833f * width),
LayoutParams.WRAP_CONTENT, 0.2f);
apertureParams.setMargins(1, 1, 1, 1);
apertureControl.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
apertureControl.setTextSize(13f);
apertureControl.setTextColor(black);
apertureControl.setText(R.string.aperture);
headerLL.addView(apertureControl, apertureParams);
// Shutter speed
TextView shutterControl = new TextView(context);
LinearLayout.LayoutParams shutterParams = new LinearLayout.LayoutParams(Math.round(0.35417f * width),
LayoutParams.WRAP_CONTENT, 0.2f);
shutterParams.setMargins(1, 1, 1, 1);
shutterControl.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
shutterControl.setTextSize(13f);
shutterControl.setTextColor(black);
shutterControl.setText(R.string.shutter_speed);
headerLL.addView(shutterControl, shutterParams);
// EV Step
TextView evStepControl = new TextView(context);
LinearLayout.LayoutParams evStepParams = new LinearLayout.LayoutParams(Math.round(0.14583f * width),
LayoutParams.WRAP_CONTENT, 0.2f);
evStepParams.setMargins(1, 1, 1, 1);
evStepControl.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
evStepControl.setTextSize(13f);
evStepControl.setTextColor(black);
evStepControl.setText(R.string.expEVStep);
headerLL.addView(evStepControl, evStepParams);
// Icon
ImageView expIconControl = new ImageView(context);
LinearLayout.LayoutParams expIconParams = new LinearLayout.LayoutParams(Math.round(0.14583f * width),
LayoutParams.WRAP_CONTENT, 0.2f);
expIconParams.setMargins(1, 1, 1, 1);
headerLL.addView(expIconControl, expIconParams);
return headerLL;
}
/**
* Retrieves the value of
*
* @return DOCUMENT ME!
*/
private static DisplayMetrics getMetrics(Context context) {
if (metrics == null) {
metrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(metrics);
}
return metrics;
}
}

+ 199
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/resultlist/ExposureFactory.java Целия файл

@@ -0,0 +1,199 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC.resultlist;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Bitmap.Config;
import android.graphics.Paint.Style;
import android.util.DisplayMetrics;
import ch.spherIC.EVFormula;
import ch.spherIC.EasyBracketMain;
import ch.spherIC.R;
/**
* Factory that creates the exposure icons according to the EV range and values.
*/
public class ExposureFactory {
public static final DecimalFormat evDF = new DecimalFormat("0.######");
/**
* DOCUMENT ME!
*
* @param context DOCUMENT ME!
* @param dpEV DOCUMENT ME!
* @param bpEv DOCUMENT ME!
* @param calcPrmAperture DOCUMENT ME!
* @param calcPrmEvStep DOCUMENT ME!
* @param fixBP DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
public static List<Exposure> calculateExposures(Context context, double dpEV, double bpEv, double calcPrmAperture,
double calcPrmEvStep, boolean fixBP, List<Double> allowedShutters) {
Exposure exp;
List<Exposure> exposures = new ArrayList<Exposure>();
double deltaEV = bpEv - dpEV;
long nbrExposures = Math.round(deltaEV / calcPrmEvStep) + 1;
// correct the deltaEV
deltaEV = calcPrmEvStep * (nbrExposures - 1);
double baseEVStep = -deltaEV / 2;
for (int i = 0; i < nbrExposures; i++) {
boolean found = false;
String shutterSpeed = "";
double shutter;
double evValue = 0;
double evStep = baseEVStep + i * calcPrmEvStep;
if (fixBP) {
evValue = bpEv - (nbrExposures - 1 - i) * calcPrmEvStep;
} else {
evValue = dpEV + i * calcPrmEvStep;
}
shutter = Double.valueOf(evDF.format((EVFormula.calcShutterSpeed(calcPrmAperture, evValue))));
for (int j = 1; j < allowedShutters.size(); j++) {
double v1 = allowedShutters.get(j - 1);
double v2 = allowedShutters.get(j);
if ((v1 <= shutter && shutter <= v2) || (v2 <= shutter && shutter <= v1)) {
if (Math.abs(shutter - v1) <= Math.abs(shutter - v2)) {
shutterSpeed = (v1 < 1) ? "1/" + evDF.format((1 / v1))
: "" + EasyBracketMain.DF.format(v1) + "''";
} else {
shutterSpeed = (v2 < 1) ? "1/" + evDF.format((1 / v2))
: "" + EasyBracketMain.DF.format(v2) + "''";
}
found = true;
break;
}
}
if (!found) {
shutterSpeed = (shutter < 1) ? "1/" + Math.round(1 / shutter)
: "" + EasyBracketMain.DF.format(shutter) + "''";
}
exp = new Exposure(i + 1, "f/" + EasyBracketMain.DF.format(calcPrmAperture), shutterSpeed, evStep, deltaEV,
getExpIcon(context, i + 1, (int) nbrExposures));
exposures.add(exp);
}
return exposures;
}
/**
* Retrieves Icon.
*
* @param context Context
* @param exp {@link Exposure} object
*
* @return Color stepped icon
*/
private static Bitmap getExpIcon(Context context, int expNbr, int nbrExposures) {
Bitmap mIcon;
Bitmap mIconBG;
Bitmap mIconSymbol;
Bitmap mIconSymbol_bl;
Canvas canvas;
Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
final Resources res = context.getResources();
final int twentyPercentGray = Math.round(255f * 0.8f);
int deltaRGB = twentyPercentGray;
int iSize;
int iSize_r;
int iStart;
DisplayMetrics metrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(metrics);
switch (metrics.densityDpi) {
case DisplayMetrics.DENSITY_LOW:
iSize = 18;
iSize_r = 17;
iStart = 1;
break;
case DisplayMetrics.DENSITY_MEDIUM:
iSize = 24;
iSize_r = 22;
iStart = 2;
break;
default:
iSize = 36;
iSize_r = 33;
iStart = 2;
break;
}
if (expNbr > 1 || nbrExposures > 1) {
deltaRGB = twentyPercentGray / (nbrExposures - 1) * (expNbr - 1);
}
// The background
mIconBG = Bitmap.createBitmap(iSize, iSize, Config.ARGB_8888);
mIconBG.eraseColor(0x00000000);
canvas = new Canvas(mIconBG);
mPaint.setStyle(Style.FILL);
mPaint.setColor(Color.argb(255, deltaRGB, deltaRGB, deltaRGB));
canvas.drawRect(iStart, iStart, iSize_r, iSize_r, mPaint);
// Let's retrieve all icon pieces as Bitmaps.
mIcon = BitmapFactory.decodeResource(res, R.drawable.exposureicon_frame);
mIconSymbol = BitmapFactory.decodeResource(res, R.drawable.exposureicon_symb_white);
mIconSymbol_bl = BitmapFactory.decodeResource(res, R.drawable.exposureicon_symb_black);
// Prepares the paint that will be used to draw our icon mask. Using
// PorterDuff.Mode.SRC_OVER means the image that will be drawn will
// mask the already drawn image.
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
// We're now ready to drawn our Android-like icon :)
if (deltaRGB > twentyPercentGray / 2) {
canvas.drawBitmap(mIconSymbol_bl, 0, 0, mPaint);
} else {
canvas.drawBitmap(mIconSymbol, 0, 0, mPaint);
}
canvas.drawBitmap(mIcon, 0, 0, mPaint);
return mIconBG;
}
}

+ 78
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/resultlist/ExposureIconFactory.java Целия файл

@@ -0,0 +1,78 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC.resultlist;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Bitmap.Config;
import android.graphics.Paint.Style;
import ch.spherIC.R;
/**
* Factory that creates the exposure icons according to the EV range and values.
*/
public class ExposureIconFactory {
/**
* Retrieves Icon.
*
* @param context Context
* @param exp {@link Exposure} object
*
* @return Color stepped icon
*/
public static Bitmap getExpIcon(Context context, Exposure exp) {
Bitmap mIcon;
Bitmap mIconBG;
Bitmap mIconSymbol;
Bitmap mIconSymbol_bl;
Canvas canvas;
Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
final Resources res = context.getResources();
// The background
mIconBG = Bitmap.createBitmap(36, 36, Config.ARGB_8888);
mIconBG.eraseColor(0x00000000);
canvas = new Canvas(mIconBG);
mPaint.setStyle(Style.FILL);
mPaint.setColor(0xFF000000);
canvas.drawRect(2, 2, 33, 33, mPaint);
// Let's retrieve all icon pieces as Bitmaps.
mIcon = BitmapFactory.decodeResource(res, R.drawable.exposureicon_frame);
mIconSymbol = BitmapFactory.decodeResource(res, R.drawable.exposureicon_symb_white);
mIconSymbol_bl = BitmapFactory.decodeResource(res, R.drawable.exposureicon_symb_black);
// Prepares the paint that will be used to draw our icon mask. Using
// PorterDuff.Mode.SRC_OVER means the image that will be drawn will
// mask the already drawn image.
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
// We're now ready to drawn our Android-like icon :)
canvas.drawBitmap(mIconSymbol, 0, 0, mPaint);
canvas.drawBitmap(mIcon, 0, 0, mPaint);
return mIconBG;
}
}

+ 136
- 0
EasyBracketing/EasyBracketing/EasyBracketing/src/ch/spherIC/settings/SettingsDlg.java Целия файл

@@ -0,0 +1,136 @@
/*
* $URL$
* $Revision$
* $LastChangedBy$
* $LastChangedDate$
*
* Copyright (c) 2005 syseca AG, Switzerland
* All rights reserved.
*
* This software is the confidential and proprietary information
* of syseca AG. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only
* in accordance with the terms of the license agreement you
* entered into with syseca AG.
*/
package ch.spherIC.settings;
import android.app.Dialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.Spinner;
import ch.spherIC.EasyBracketMain;
import ch.spherIC.R;
/**
* Settings / Preferences Dialog
*/
public class SettingsDlg extends Dialog {
public static final String PREFS_NAME = "SettingsFile";
private Context prnt;
/**
* Creates a new SettingsDlg object.
*/
public SettingsDlg(Context context) {
super(context, R.style.GlassThemeDialog);
this.prnt = context;
}
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
setTitle(this.prnt.getResources().getText(R.string.menuSettings));
((Button) findViewById(R.id.btn_Stg_Save)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveSettings();
SettingsDlg.this.dismiss();
((EasyBracketMain) SettingsDlg.this.prnt).loadSettings();
((EasyBracketMain) SettingsDlg.this.prnt).setDefaults();
}
});
((Button) findViewById(R.id.btn_Stg_Cancel)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SettingsDlg.this.dismiss();
}
});
}
/**
* {@inheritDoc}
*/
@Override
protected void onStart() {
super.onStart();
applySettings();
}
/**
* {@inheritDoc}
*/
@Override
protected void onStop() {
super.onStop();
}
/**
* Reads and applies the settings.
*/
private void applySettings() {
boolean fixBP;
float bpCorrection;
float dpCorrection;
// Restore settings
SharedPreferences settings = getContext().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
fixBP = settings.getBoolean("fixBrightPoint", true);
((RadioButton) findViewById(R.id.rdbtn_KeepBP)).setChecked(fixBP);
((RadioButton) findViewById(R.id.rdbtn_KeepDP)).setChecked(!fixBP);
bpCorrection = settings.getFloat("brightPointCorrection", 0f);
dpCorrection = settings.getFloat("darkPointCorrection", 0f);
((Spinner) findViewById(R.id.spn_BP_Corr)).setSelection((int) bpCorrection);
((Spinner) findViewById(R.id.spn_DP_Corr)).setSelection((int) dpCorrection);
}
/**
* Saves the settings
*/
private void saveSettings() {
// Save settings
SharedPreferences settings = getContext().getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("fixBrightPoint", ((RadioButton) findViewById(R.id.rdbtn_KeepBP)).isChecked());
editor.putFloat("brightPointCorrection", ((Spinner) findViewById(R.id.spn_BP_Corr)).getSelectedItemPosition());
editor.putFloat("darkPointCorrection", ((Spinner) findViewById(R.id.spn_DP_Corr)).getSelectedItemPosition());
// Commit the edits!
editor.commit();
}
}

Loading…
Отказ
Запис