500D control such as 5D II.

Started by Greg, November 12, 2012, 09:19:54 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Greg

I came up with the idea that the ISO can add GUI flash exposure compensation. As is the 5D II.

The main problem in the 500D - ISO button moves to the ISO menu but still returns GUI = 0 The entrance to the ISO menu by pressing the SET returns GUI = 31

Currently done only display data in GUI = 31



We are able to detect the occurrence of buttons up - down? To change the value of the FEC.


Greg

When we get to the ISO menu by ISO button. The buttons do not return values, work the same as DOF.


#define BGMT_PRESS_LEFT 0x39
#define BGMT_UNPRESS_LEFT 0x3a
#define BGMT_PRESS_RIGHT 0x37
#define BGMT_UNPRESS_RIGHT 0x38


In this menu, the buttons return a value 0x3f

We can do it this way, but the ISO menu will have to refresh to switch to the latter.

if(DISPLAY_IS_ON && !lv)
{
if(ISO_ADJUSTMENT_ACTIVE == 1)if (CURRENT_DIALOG_MAYBE == 0) SetGUIRequestMode(31);
}

scrax

yeah Greg,  :)
that's also a nice little add that I'll like to have on my camera...
please, open up a fork on bitbucket, that way it will be possible to try to add your panorama helper and that intermediate iso on other camera too.

Quote from: Greg on November 19, 2012, 05:09:36 PM
When we get to the ISO menu by ISO button. The buttons do not return values, work the same as DOF.


#define BGMT_PRESS_LEFT 0x39
#define BGMT_UNPRESS_LEFT 0x3a
#define BGMT_PRESS_RIGHT 0x37
#define BGMT_UNPRESS_RIGHT 0x38


In this menu, the buttons return a value 0x3f

We can do it this way, but the ISO menu will have to refresh to switch to the latter.

if(DISPLAY_IS_ON && !lv)
{
if(ISO_ADJUSTMENT_ACTIVE == 1)if (CURRENT_DIALOG_MAYBE == 0) SetGUIRequestMode(31);
}


So you will have a little delay when opening ISO menu with ISO button?
I'm using ML2.3 for photography with:
EOS 600DML | EOS 400Dplus | EOS 5D MLbeta5- EF 100mm f/2.8 USM Macro  - EF-S 17-85mm f4-5.6 IS USM - EF 70-200mm f/4 L USM - 580EXII - OsX, PS, LR, RawTherapee, LightZone -no video experience-


jplxpto

Quote from: Greg on November 19, 2012, 05:09:36 PM
When we get to the ISO menu by ISO button. The buttons do not return values, work the same as DOF.


#define BGMT_PRESS_LEFT 0x39
#define BGMT_UNPRESS_LEFT 0x3a
#define BGMT_PRESS_RIGHT 0x37
#define BGMT_UNPRESS_RIGHT 0x38


In this menu, the buttons return a value 0x3f

We can do it this way, but the ISO menu will have to refresh to switch to the latter.

if(DISPLAY_IS_ON && !lv)
{
if(ISO_ADJUSTMENT_ACTIVE == 1)if (CURRENT_DIALOG_MAYBE == 0) SetGUIRequestMode(31);
}


In a few days you'll be developer ;)

scrax

Quote from: Greg on November 19, 2012, 11:36:25 PM
https://bitbucket.org/Gr3g01/magic-lantern-500d-control/compare/unified..hudson/magic-lantern:unified
tried on 600D is working butI have 1/2 stop change with up and down arrow but it changes by 1/3 on camera.
for example from EV 0:
- going up once shows + 0,5 but when back to photo screen it's set to +1/3
- going up twice shows +1 and back to photo screen it's set to +1
I'm using ML2.3 for photography with:
EOS 600DML | EOS 400Dplus | EOS 5D MLbeta5- EF 100mm f/2.8 USM Macro  - EF-S 17-85mm f4-5.6 IS USM - EF 70-200mm f/4 L USM - 580EXII - OsX, PS, LR, RawTherapee, LightZone -no video experience-

Greg

It works the same as the function:
http://img13.imageshack.us/img13/8628/testhsi.png


This can change, but the problem of rounding.:
- int newae = ae - 1 * (ABS(ae - 1) <= 24 ? 4 : 8);
+ int newae = ae - 1 * (ABS(ae - 1) <= 24 ? 3 : 9);



We need to detect the digit after the decimal point.
if the number is 6: +0.4 EV, in any other case: +0.3 EV

Example:
0 + 0.3 = 0.3 EV
0.3 + 0.3 = 0.6 EV
0.6 + 0.4 = 1 EV


scrax

I'm using ML2.3 for photography with:
EOS 600DML | EOS 400Dplus | EOS 5D MLbeta5- EF 100mm f/2.8 USM Macro  - EF-S 17-85mm f4-5.6 IS USM - EF 70-200mm f/4 L USM - 580EXII - OsX, PS, LR, RawTherapee, LightZone -no video experience-

Greg

Quote from: scrax on November 30, 2012, 01:06:42 AM
working on 600D too. :)
;)

We can change the Metering mode with ML? Cool would it add to the White Balance menu.
If this is not possible. It can add a manual white balance using the up and down arrows.

scrax

this idea is really cool, more settings on those screens.
on 500D and 600D arrow have same menu:
           WB
Drive            AF
        PicStyle

I think that for WB a manual selection is ideal,  metering mode could be added to Drive mode but i think we need to find the correct numbers.
I'm using ML2.3 for photography with:
EOS 600DML | EOS 400Dplus | EOS 5D MLbeta5- EF 100mm f/2.8 USM Macro  - EF-S 17-85mm f4-5.6 IS USM - EF 70-200mm f/4 L USM - 580EXII - OsX, PS, LR, RawTherapee, LightZone -no video experience-

Greg

manual WB:
https://bitbucket.org/Gr3g01/magic-lantern-500d-control/commits/60bf560b2b70999aeba90faa9889160486873bee

This is a small error. Entering WB menu using WB button. UP button has the same function as the right. Can we do something about it?
We can do it in the same way as the ISO menu, but the screen will flash.

http://www.youtube.com/watch?v=qn9ewu4VVhA&feature=youtu.be

scrax

Quote from: Greg on November 30, 2012, 07:33:17 PM
manual WB:
https://bitbucket.org/Gr3g01/magic-lantern-500d-control/commits/60bf560b2b70999aeba90faa9889160486873bee

This is a small error. Entering WB menu using WB button. UP button has the same function as the right. Can we do something about it?
We can do it in the same way as the ISO menu, but the screen will flash.

http://www.youtube.com/watch?v=qn9ewu4VVhA&feature=youtu.be
I don't see a lot of flashing with iso menu, so i think it will be ok too for WB.
I'm looking for Meter mode in props changes and found this:
80000002 0004: x 0 0 0 0 0
x change based on which mode:
1 Spot
2 ?
3 Evaluative
4 Partial
5 Center weighted av
now looking for where to put it...
Also to me seems that on 600D 27 is for button up pressed and 28 for unpressed in both WB screen (in other screen too) so maybe it's a 500D problem only.
I'm using ML2.3 for photography with:
EOS 600DML | EOS 400Dplus | EOS 5D MLbeta5- EF 100mm f/2.8 USM Macro  - EF-S 17-85mm f4-5.6 IS USM - EF 70-200mm f/4 L USM - 580EXII - OsX, PS, LR, RawTherapee, LightZone -no video experience-

Greg

I made the icon


Here the code  ;D

int bg = bmp_getpixel(100, 400);
int md1 = 20;
int md2 = 27;
int md3 = 68;
draw_line(79, 380, 79 + md1, 380, COLOR_BLACK);      // -
draw_line(79, 381, 79 + md1, 381, COLOR_BLACK);      // =
draw_line(107, 380, 107 + md1, 380, COLOR_BLACK);    // -
draw_line(107, 381, 107 + md1, 381, COLOR_BLACK);    // =

draw_line(77, 382, 77, 382 + md2, COLOR_BLACK);      // |
draw_line(78, 382, 78, 382 + md2, COLOR_BLACK);      // ||
draw_line(129, 382, 129, 382 + md2, COLOR_BLACK);    // |
draw_line(128, 382, 128, 382 + md2, COLOR_BLACK);    // ||

draw_line(79, 411, 79 + md1, 411, COLOR_BLACK);      // -
draw_line(79, 410, 79 + md1, 410, COLOR_BLACK);      // =
draw_line(107, 411, 107 + md1, 411, COLOR_BLACK);    // -
draw_line(107, 410, 107 + md1, 410, COLOR_BLACK);    // =

//-------------

draw_line(79 + md3, 380, 79 + md1 + md3, 380, COLOR_BLACK);      // -
draw_line(79 + md3, 381, 79 + md1 + md3, 381, COLOR_BLACK);      // =
draw_line(107 + md3, 380, 107 + md1 + md3, 380, COLOR_BLACK);    // -
draw_line(107 + md3, 381, 107 + md1 + md3, 381, COLOR_BLACK);    // =

draw_line(77 + md3, 382, 77 + md3, 382 + md2, COLOR_BLACK);      // |
draw_line(78 + md3, 382, 78 + md3, 382 + md2, COLOR_BLACK);      // ||
draw_line(129 + md3, 382, 129 + md3, 382 + md2, COLOR_BLACK);    // |
draw_line(128 + md3, 382, 128 + md3, 382 + md2, COLOR_BLACK);    // ||

draw_line(79 + md3, 411, 79 + md1 + md3, 411, COLOR_BLACK);      // -
draw_line(79 + md3, 410, 79 + md1 + md3, 410, COLOR_BLACK);      // =
draw_line(107 + md3, 411, 107 + md1 + md3, 411, COLOR_BLACK);    // -
draw_line(107 + md3, 410, 107 + md1 + md3, 410, COLOR_BLACK);    // =

//-------------

draw_line(79 + md3 * 2, 380, 79 + md1 + md3 * 2, 380, COLOR_BLACK);      // -
draw_line(79 + md3 * 2, 381, 79 + md1 + md3 * 2, 381, COLOR_BLACK);      // =
draw_line(107 + md3 * 2, 380, 107 + md1 + md3 * 2, 380, COLOR_BLACK);    // -
draw_line(107 + md3 * 2, 381, 107 + md1 + md3 * 2, 381, COLOR_BLACK);    // =

draw_line(77 + md3 * 2, 382, 77 + md3 * 2, 382 + md2, COLOR_BLACK);      // |
draw_line(78 + md3 * 2, 382, 78 + md3 * 2, 382 + md2, COLOR_BLACK);      // ||
draw_line(129 + md3 * 2, 382, 129 + md3 * 2, 382 + md2, COLOR_BLACK);    // |
draw_line(128 + md3 * 2, 382, 128 + md3 * 2, 382 + md2, COLOR_BLACK);    // ||

draw_line(79 + md3 * 2, 411, 79 + md1 + md3 * 2, 411, COLOR_BLACK);      // -
draw_line(79 + md3 * 2, 410, 79 + md1 + md3 * 2, 410, COLOR_BLACK);      // =
draw_line(107 + md3 * 2, 411, 107 + md1 + md3 * 2, 411, COLOR_BLACK);    // -
draw_line(107 + md3 * 2, 410, 107 + md1 + md3 * 2, 410, COLOR_BLACK);    // =

//-------------

draw_line(79 + md3 * 3, 380, 79 + md1 + md3 * 3, 380, COLOR_BLACK);      // -
draw_line(79 + md3 * 3, 381, 79 + md1 + md3 * 3, 381, COLOR_BLACK);      // =
draw_line(107 + md3 * 3, 380, 107 + md1 + md3 * 3, 380, COLOR_BLACK);    // -
draw_line(107 + md3 * 3, 381, 107 + md1 + md3 * 3, 381, COLOR_BLACK);    // =

draw_line(77 + md3 * 3, 382, 77 + md3 * 3, 382 + md2, COLOR_BLACK);      // |
draw_line(78 + md3 * 3, 382, 78 + md3 * 3, 382 + md2, COLOR_BLACK);      // ||
draw_line(129 + md3 * 3, 382, 129 + md3 * 3, 382 + md2, COLOR_BLACK);    // |
draw_line(128 + md3 * 3, 382, 128 + md3 * 3, 382 + md2, COLOR_BLACK);    // ||

draw_line(79 + md3 * 3, 411, 79 + md1 + md3 * 3, 411, COLOR_BLACK);      // -
draw_line(79 + md3 * 3, 410, 79 + md1 + md3 * 3, 410, COLOR_BLACK);      // =
draw_line(107 + md3 * 3, 411, 107 + md1 + md3 * 3, 411, COLOR_BLACK);    // -
draw_line(107 + md3 * 3, 410, 107 + md1 + md3 * 3, 410, COLOR_BLACK);    // =


    for (int r = 0; r < 5; r++)
    {
         draw_circle(239, 396, r, COLOR_BLACK);
         draw_circle(239, 396, r, COLOR_BLACK);
    }

draw_circle(171, 396, 10, COLOR_BLACK);
draw_circle(171, 396, 9, COLOR_BLACK);

draw_circle(103, 396, 10, COLOR_BLACK);
draw_circle(103, 396, 9, COLOR_BLACK);

draw_line(171 - 10, 395, 171 + 10, 395, bg);
draw_line(171 - 10, 396, 171 + 10, 396, bg);
draw_line(171 - 10, 397, 171 + 10, 397, bg);

draw_line(103 - 10, 395, 103 + 10, 395, bg);
draw_line(103 - 10, 396, 103 + 10, 396, bg);
draw_line(103 - 10, 397, 103 + 10, 397, bg);

for (int r = 0; r < 5; r++)
    {
         draw_circle(103, 396, r, COLOR_BLACK);
         draw_circle(103, 396, r, COLOR_BLACK);
    }

Is there a faster way to make these icons? Modifying the code is not nice.

Greg

I changed the icons, some corrected code.



if(CURRENT_DIALOG_MAYBE == 9 || CURRENT_DIALOG_MAYBE == DLG_DRIVE_MODE)
{
int bg = bmp_getpixel(35, 245);
int md1 = 27; //W -
int md2 = 38; //H
int md3 = 96; //W ---
int md4 = 11; //W - -

draw_line(29, 362, 483, 362, bg);
draw_line(29, 361, 483, 361, bg);
draw_line(30, 360, 482, 360, bg);
draw_line(32, 359, 480, 359, bg);

draw_line(29, 440, 483, 440, bg);
draw_line(29, 441, 483, 441, bg);
draw_line(30, 442, 482, 442, bg);
draw_line(32, 443, 480, 443, bg);

for (int f = 0; f < 77; f++)
    {
draw_line(28, 363 + f, 484, 363 + f, bg);
}

for (int s = 0; s < 4; s++)
    {
draw_line(79 + (s * md3), 380, 79 + md1 + (s * md3), 380, COLOR_BLACK);      // -
draw_line(79 + (s * md3), 381, 79 + md1 + (s * md3), 381, COLOR_BLACK);      // =
draw_line(80 + (s * md3), 379, 79 + md1 + (s * md3), 379, COLOR_BLACK);      // =-
draw_line(79 + md1 + md4 + (s * md3), 380, 79 + md1 * 2 + md4 + (s * md3), 380, COLOR_BLACK);    // -
draw_line(79 + md1 + md4 + (s * md3), 381, 79 + md1 * 2 + md4 + (s * md3), 381, COLOR_BLACK);    // =
draw_line(79 + md1 + md4 + (s * md3), 379, 78 + md1 * 2 + md4 + (s * md3), 379, COLOR_BLACK);    // =-

draw_line(77 + (s * md3), 383, 77 + (s * md3), 381 + md2, COLOR_BLACK);      // |
draw_line(78 + (s * md3), 381, 78 + (s * md3), 383 + md2, COLOR_BLACK);      // ||
draw_line(79 + (s * md3), 382, 79 + (s * md3), 383 + md2, COLOR_BLACK);       // |||

draw_line(79 + md1 * 2 + md4 + (s * md3), 382, 79 + md1 * 2 + md4 + (s * md3), 382 + md2, COLOR_BLACK);    // |
draw_line(80 + md1 * 2 + md4 + (s * md3), 381, 80 + md1 * 2 + md4 + (s * md3), 383 + md2, COLOR_BLACK);    // ||
draw_line(81 + md1 * 2 + md4 + (s * md3), 383, 81 + md1 * 2 + md4 + (s * md3), 381 + md2, COLOR_BLACK);    // |||

draw_line(79 + (s * md3), 384 + md2, 79 + md1 + (s * md3), 384 + md2, COLOR_BLACK);      // -
draw_line(79 + (s * md3), 383 + md2, 79 + md1 + (s * md3), 383 + md2, COLOR_BLACK);      // =
draw_line(80 + (s * md3), 385 + md2, 79 + md1 + (s * md3), 385 + md2, COLOR_BLACK);      // =-
draw_line(79 + md1 + md4 + (s * md3), 384 + md2, 79 + md1 * 2 + (s * md3)+ md4, 384 + md2, COLOR_BLACK);    // -
draw_line(79 + md1 + md4 + (s * md3), 383 + md2, 79 + md1 * 2 + (s * md3)+ md4, 383 + md2, COLOR_BLACK);    // =
draw_line(79 + md1 + md4 + (s * md3), 385 + md2, 78 + md1 * 2 + (s * md3)+ md4, 385 + md2, COLOR_BLACK);    // =
}


for (int r = 0; r < 7; r++)
    {
         draw_circle(304, 402, r, COLOR_BLACK);
    }

draw_circle(208, 402, 15, COLOR_BLACK);
draw_circle(208, 402, 14, COLOR_BLACK);
draw_circle(208, 402, 13, COLOR_BLACK);

draw_circle(112, 402, 15, COLOR_BLACK);
draw_circle(112, 402, 14, COLOR_BLACK);
draw_circle(112, 402, 13, COLOR_BLACK);

for (int z = 0; z < 7; z++)
    {
         draw_line(208 - 15, 398 + z, 208 + 15, 398 + z, bg);
         draw_line(112 - 15, 398 + z, 112 + 15, 398 + z, bg);
    }

for (int r = 0; r < 7; r++)
    {
         draw_circle(112, 402, r, COLOR_BLACK);
         draw_circle(112, 402, r, COLOR_BLACK);
    }
}


Now we need to know how to change the Metering Mode.


a1ex

To change metering mode, use PROP_METERING_MODE (define it as 80000002).

Values: 3, 4, 1, 5 (in the order of your icons) on 5D2.

Len is 4. Add a PROP_INT to read it.

To make the circles smoother, draw them twice, with a small horizontal offset (1 pixel).

Greg

Quote from: a1ex on December 01, 2012, 07:22:11 AM
To change metering mode, use PROP_METERING_MODE (define it as 80000002).

Values: 3, 4, 1, 5 (in the order of your icons) on 5D2.

Len is 4. Add a PROP_INT to read it.

To make the circles smoother, draw them twice, with a small horizontal offset (1 pixel).
Thanks ;)

Values ​​for 500D : 3, 4, 1, 5
It looks like it's the same as the 5D II and 600D.

Greg

Needs to be done to change the value Metering Mode.
I'll try to fix flickering.

http://www.youtube.com/watch?v=lfFXsu6bHNE&feature=youtu.be

a1ex

Two approaches for flickering.

- Double buffering (currently used for menu, and LV top/bottom info bars)
- Draw symbols first, then draw selection box, but only on non-black pixels, then draw background box, but only on non-black and non-blue pixels. See menu.c, selection_bar (it uses this trick, but not for flicker reasons).

Greg


scrax

Greg, your last commit works better on 600D (with COLOR_FG_NONLV instead of BLACK particularly)
my color scheme is 4 (the green one) and selection menu is green icon (COLOR_FG_NONLV) on black background. Also selection is black, so it's not really clear what is selected.
EDIT: changing bg2 solved it but i'll try other color scheme too.
- int bg2 = bmp_getpixel(40, 209);
+ int bg2 = bmp_getpixel(40, 109);
Also i had to keep uncommented redraw(); for it to work.
I'm using ML2.3 for photography with:
EOS 600DML | EOS 400Dplus | EOS 5D MLbeta5- EF 100mm f/2.8 USM Macro  - EF-S 17-85mm f4-5.6 IS USM - EF 70-200mm f/4 L USM - 580EXII - OsX, PS, LR, RawTherapee, LightZone -no video experience-

Greg

On the 500D works with any color. Code still requires correction, and then we'll try to do that for 550D and 600D :)

scrax

Quote from: Greg on December 02, 2012, 11:33:13 PM
On the 500D works with any color. Code still requires correction, and then we'll try to do that for 550D and 600D :)
Good, I've added some different #ifdef and consts to make it work on 600D too, you can check it here: https://bitbucket.org/600Dplus/magic-lantern-for-600d/commits

https://www.dropbox.com/s/deu7kt95h6442jo/2012-12-03%2000.09.45.3gp
I'm using ML2.3 for photography with:
EOS 600DML | EOS 400Dplus | EOS 5D MLbeta5- EF 100mm f/2.8 USM Macro  - EF-S 17-85mm f4-5.6 IS USM - EF 70-200mm f/4 L USM - 580EXII - OsX, PS, LR, RawTherapee, LightZone -no video experience-

scrax

last modification solved a lot flickering and redraw  problems  :D
great work Greg!
I'm using ML2.3 for photography with:
EOS 600DML | EOS 400Dplus | EOS 5D MLbeta5- EF 100mm f/2.8 USM Macro  - EF-S 17-85mm f4-5.6 IS USM - EF 70-200mm f/4 L USM - 580EXII - OsX, PS, LR, RawTherapee, LightZone -no video experience-