Matlab's documentation suggests using dblquad with the function modified to be 0 outside the region of interest, for example
fn = @(x, y) f(x, y) .* (y <= (1 - x));
I = dblquad (fn, 0, 1, 0, 1);
Looking at the Octave source code for dblquad, it seems like it wouldn't be too hard to modify to allow for ymin and ymax being functions of x, which would be a bit more efficient.